Felo API PlatformFelo API Platform

Contenu

Transformez un brief produit en landing page

Étudiez l’audience, gardez le brief dans un LiveDoc, créez une tâche Landing Page à partir de ce contexte et interrogez jusqu’à ce que la page hébergée soit prête.

Temps30 minutesNiveauIntermédiaireMis à jour2026-10-30
Pour quiFondateursMarketing produitÉquipes croissance

Copier le prompt

Remplacez les champs entre crochets, puis collez dans Claude Code, Codex ou toute IA avec accès au terminal. Elle installe le skill Felo, demande avant de dépenser des crédits et exécute le workflow.

Crée une landing page pour [produit] destinée à [public].

Objectif : [inscription / démo / liste d’attente]. Ton : [ton]. Langue : [langue].
Matière source : [URL du brief produit ou colle le brief]. À inclure : [points de preuve, prix, CTA].

Utilise Chat et Web Fetch pour étudier le public et deux ou trois pages concurrentes. Stocke le brief et la recherche dans un LiveDoc, puis crée une tâche Landing Page avec ce LiveDoc comme contexte. Interroge jusqu’à la fin et renvoie le lien de la page hébergée.

Produis :
1. Un plan de page : en-tête, preuve, fonctionnalités, objections, CTA.
2. Le lien de la page hébergée.
3. Le lien du LiveDoc utilisé comme contexte.
4. Une checklist des affirmations à vérifier.

Règles :
- N’invente ni chiffres, ni clients, ni témoignages, ni prix, ni allégations de conformité.
- Chaque affirmation doit être traçable jusqu’au brief ou à une page récupérée.
- Demande avant de consommer des crédits pour la recherche ou la génération de page.
- Ne publie pas et ne connecte pas de domaine ; renvoie le lien hébergé pour relecture.
- Écris le plan dans ./landing-page-outline.md et résume-le dans le chat.

La copie inclut aussi les étapes d'installation et les règles de sécurité.

Ce que vous obtenez

Exemple de sortie d'une exécution. Pas de génération en direct.

Exemple de plan de landing page (extrait)

Plan de landing page

En-tête : « Étudier un marché sans ouvrir trente onglets. » Sous-titre : Sources et brouillon de brief en un seul run. Preuve : Temps gagné par brief ; chaque affirmation renvoie à une source. Fonctions : Recherche, extraction de pages, signal X, preuves LiveDoc. Objections : « Va-t-il inventer des chiffres ? » Non : donnée absente = « Non disponible ». CTA : Commencer par une question.

Page : https://felo.ai/ai-page/... Contexte : https://felo.ai/livedoc/...

Les appels exacts

Pour les développeurs : le même workflow en code, dans l'ordre d'exécution.

Afficher les appels API
  1. Étudiez l’audience et les alternatives

    Demandez à Chat qui est l’audience et de quoi elle a besoin, puis lisez deux ou trois pages concurrentes avec Web Fetch.

    landing.ts
    const BASE = "https://openapi.felo.ai";
    const headers = {
      Authorization: `Bearer ${process.env.FELO_API_KEY}`,
      "Content-Type": "application/json",
    };
    
    async function felo<T>(path: string, body?: unknown): Promise<T> {
      const res = await fetch(`${BASE}${path}`, {
        method: body ? "POST" : "GET",
        headers,
        body: body ? JSON.stringify(body) : undefined,
      });
      if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
      return res.json() as Promise<T>;
    }
    
    type ChatData = {
      data: { answer: string; resources: { link: string; title: string }[] };
    };
    type ExtractData = { data: { content: string } };
    
    const research = await felo<ChatData>("/v2/chat", {
      query: "Who is [audience] and what do they need from [product]?",
    });
    
    const pages = await Promise.all(
      research.data.resources.slice(0, 2).map((source) =>
        felo<ExtractData>("/v2/web/extract", {
          url: source.link,
          output_format: "markdown",
          with_readability: true,
        }).then((page) => ({ ...source, content: page.data.content })),
      ),
    );

    Exemple de sortie

    { "answer": "…", "resources": [{ "link": "https://example.com", "title": "…" }] }
  2. Gardez le brief dans le LiveDoc

    Créez le LiveDoc, ajoutez le brief produit comme document et joignez les pages concurrentes capturées.

    landing.ts
    type LiveDocData = { data: { short_id: string } };
    
    const doc = await felo<LiveDocData>("/v2/livedocs", {
      name: "Landing page: [product]",
      description: "Product brief, audience research and competitor notes",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/doc`, {
      title: "Product brief",
      content: "[paste the brief: audience, problem, proof, pricing, CTA]",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, {
      urls: pages.map((page) => ({ url: page.link, title: page.title })),
    });
    
    console.log(doc.data.short_id); // page context
  3. Créez la tâche landing page

    Envoyez au /v2/landing_page le prompt de page et le LiveDoc short_id, puis recevez le task_id.

    landing.ts
    type LandingTaskData = { data: { task_id: string } };
    
    const task = await felo<LandingTaskData>("/v2/landing_page", {
      query:
        "Create a landing page for [product] for [audience]. Goal: [signup]. " +
        "Use the product brief and research in the LiveDoc. Return a hero, proof, " +
        "features, objections and one CTA. Do not invent claims.",
      livedoc_short_id: doc.data.short_id,
    });
    
    console.log(task.data.task_id);

    Exemple de sortie

    { "data": { "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9" } }
  4. Interrogez jusqu’à la fin

    Vérifiez l’historique jusqu’à COMPLETED et lisez ai_page_html.

    landing.ts
    type TaskState = {
      data: { task_status: string; ai_page_html?: string; ppt_url?: string };
    };
    
    async function waitForPage(taskId: string) {
      for (let attempt = 0; attempt < 40; attempt++) {
        const state = await felo<TaskState>(`/v2/tasks/${taskId}/historical`);
        if (state.data.task_status === "COMPLETED") {
          return state.data.ai_page_html ?? state.data.ppt_url;
        }
        if (["FAILED", "EXPIRED", "CANCELED"].includes(state.data.task_status)) {
          throw new Error(`Landing page task ${state.data.task_status}`);
        }
        await new Promise((resolve) => setTimeout(resolve, 3000));
      }
      throw new Error("Landing page task timed out");
    }
    
    const pageUrl = await waitForPage(task.data.task_id);
    console.log(pageUrl);

    Exemple de sortie

    {
      "task_status": "COMPLETED",
      "ai_page_html": "https://felo.ai/ai-page/9qiLTmT77fA3aVurrMHvRJ",
      "ppt_url": "https://felo.ai/slides/9qiLTmT77fA3aVurrMHvRJ"
    }
  5. Relisez avant partage

    Vérifiez affirmations, prix, mentions légales et liens CTA, puis partagez.

Ce qui est inclus

  • Recherche audience et concurrents sur des pages publiques
  • Brief et recherche dans le LiveDoc
  • Page hébergée générée depuis ce contexte
  • Liste de vérification des affirmations, liens et CTA avant partage

Ce qu'elle ne fait pas

  • Génère une page hébergée, ne publie pas de site et ne connecte pas de domaine
  • Le texte généré doit être relu humainement avant partage
  • Pas de tests A/B ni d’analytics
  • Ne vérifie pas les affirmations absentes du brief et de la page
  • Ne crée pas de logo, système de marque ou illustrations

Questions

Que génère-t-il ?

Une landing page hébergée chez Felo, basée sur le brief et la recherche. Vous recevez un lien, pas un site publié.

Puis-je utiliser mon domaine ?

Ce workflow ne connecte pas de domaine. Il renvoie une page hébergée pour relecture ; domaine et publication sont une autre étape.

Invente-t-il des témoignages ou des métriques ?

Non. Le prompt interdit les inventions et exige que chaque affirmation vienne du brief ou d’une page capturée. Le non-fondé est exclu.

Puis-je itérer ?

Oui. Modifiez le brief dans le LiveDoc et créez une nouvelle tâche Landing Page avec le nouveau contexte.

Crée-t-il des images personnalisées ?

Il gère structure et texte ; illustrations et éléments de marque sortent du workflow.

Combien coûte une page ?

Recherche et génération de page sont facturées à l’usage ; les tarifs actuels sont sur la page des prix, et le prompt demande votre accord avant dépense.

Workflows liés

Adaptez-la

La même recette, adaptée à votre façon de livrer.

Partez d’un PDF

Envoyez un PDF en multipart ; la plateforme le stocke comme ressource LiveDoc et le transmet à la tâche.

Deux versions de positionnement

Créez deux tâches avec des angles différents sur le même LiveDoc et comparez avant de choisir.

Réutilisez pour une présentation

Le même LiveDoc peut alimenter une tâche PPT pour que page et deck racontent la même histoire.

Les pages de référence derrière cette recette et la suite.