Felo API PlatformFelo API Platform

Contenuti

Trasforma un brief di prodotto in una landing page

Studia il pubblico, salva il brief in un LiveDoc, crea un’attività Landing Page da quel contesto e interroga finché la pagina ospitata è pronta.

Tempo30 minutiLivelloIntermedioAggiornato2026-10-30
Per chiFondatoriProduct marketingTeam crescita

Copia il prompt

Sostituisci i campi tra parentesi quadre e incolla in Claude Code, Codex o qualsiasi IA con accesso al terminale. Installa lo skill Felo, chiede prima di spendere crediti ed esegue il workflow.

Crea una landing page per [prodotto] rivolta a [pubblico].

Obiettivo: [registrazione / demo / lista d’attesa]. Tono: [tono]. Lingua: [lingua].
Materiale di partenza: [URL del brief di prodotto o incolla il brief]. Deve includere: [punti di prova, prezzo, CTA].

Usa Chat e Web Fetch per studiare il pubblico e due o tre pagine dei concorrenti. Salva brief e ricerca in un LiveDoc, poi crea un’attività Landing Page con quel LiveDoc come contesto. Interroga fino al completamento e restituisci il link della pagina ospitata.

Produci:
1. Una struttura di pagina: apertura, prova, funzionalità, obiezioni, CTA.
2. Il link della pagina ospitata.
3. Il link del LiveDoc usato come contesto.
4. Una checklist delle affermazioni da verificare.

Regole:
- Non inventare metriche, clienti, testimonianze, prezzi o dichiarazioni di conformità.
- Mantieni ogni affermazione tracciabile fino al brief o a una pagina recuperata.
- Chiedi prima di consumare crediti per ricerca o generazione della pagina.
- Non pubblicare né collegare un dominio; restituisci il link ospitato per la revisione.
- Scrivi la struttura in ./landing-page-outline.md e riassumila in chat.

La copia include anche i passaggi di installazione e le regole di sicurezza.

Cosa ottieni

Output di esempio di un'esecuzione. Non è generazione dal vivo.

Esempio di schema landing (estratto)

Schema della landing page

Apertura: «Studia un mercato senza aprire trenta schede.» Subhead: Fonti e bozza di brief in un’unica esecuzione. Prova: Tempo risparmiato per brief; ogni affermazione collega a una fonte. Funzioni: Ricerca, estrazione pagine, segnale X, prove LiveDoc. Obiezioni: «Inventerà numeri?» No: dato assente è «Non disponibile». CTA: Inizia con una domanda.

Pagina: https://felo.ai/ai-page/... Contesto: https://felo.ai/livedoc/...

Le chiamate esatte

Per gli sviluppatori: lo stesso workflow come codice, nell'ordine di esecuzione.

Mostra le chiamate API reali
  1. Studia pubblico e alternative

    Chiedi a Chat chi è il pubblico e cosa serve, poi leggi due o tre pagine concorrenti con 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 })),
      ),
    );

    Output di esempio

    { "answer": "…", "resources": [{ "link": "https://example.com", "title": "…" }] }
  2. Salva il brief nel LiveDoc

    Crea il LiveDoc, aggiungi il brief come documento e allega le pagine catturate.

    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. Crea l’attività landing page

    Invia a /v2/landing_page il prompt e il LiveDoc short_id e ricevi il 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);

    Output di esempio

    { "data": { "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9" } }
  4. Interroga fino alla fine

    Controlla la cronologia fino a COMPLETED e leggi 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);

    Output di esempio

    {
      "task_status": "COMPLETED",
      "ai_page_html": "https://felo.ai/ai-page/9qiLTmT77fA3aVurrMHvRJ",
      "ppt_url": "https://felo.ai/slides/9qiLTmT77fA3aVurrMHvRJ"
    }
  5. Revisiona prima di condividere

    Verifica affermazioni, prezzi, testo legale e link CTA, poi condividi.

Cosa include

  • Ricerca pubblico e concorrenti su pagine pubbliche
  • Brief e ricerca nel LiveDoc
  • Pagina ospitata generata da quel contesto
  • Checklist di affermazioni, link e CTA prima di condividere

Cosa non fa

  • Genera una pagina ospitata, non pubblica un sito e non collega un dominio
  • Il testo generato richiede revisione umana prima della condivisione
  • Niente test A/B né analytics
  • Non verifica affermazioni assenti da brief e pagina
  • Non crea logo, sistema di marca o illustrazioni personalizzate

Domande

Cosa genera?

Una landing page ospitata su Felo, basata su brief e ricerca. Ricevi un link, non un sito pubblicato.

Posso usare il mio dominio?

Questo workflow non collega domini. Restituisce una pagina ospitata per la revisione; dominio e pubblicazione sono un altro passo.

Inventa testimonianze o metriche?

No. Il prompt vieta invenzioni e richiede che ogni affermazione venga da brief o pagina catturata.

Posso iterare?

Sì. Modifica il brief nel LiveDoc e crea una nuova attività Landing Page.

Crea immagini personalizzate?

Gestisce struttura e testo; illustrazioni e materiali di brand restano fuori.

Quanto costa una pagina?

Ricerca e generazione sono a consumo; le tariffe sono nella pagina prezzi e il prompt chiede approvazione prima di spendere.

Workflow correlati

Adattala a te

La stessa ricetta, adattata a come lavori davvero.

Parti da un PDF

Invia un PDF via multipart; la piattaforma lo salva come risorsa LiveDoc e lo passa all’attività.

Due versioni di posizionamento

Crea due attività con angoli diversi nello stesso LiveDoc e confronta prima di scegliere.

Riusa nella presentazione

Lo stesso LiveDoc può alimentare un’attività PPT perché pagina e deck raccontino la stessa storia.

Le pagine di riferimento dietro questa ricetta e i prossimi passi.