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.
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.
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
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": "…" }] }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 contextCrea l’attività landing page
Invia a
/v2/landing_pageil 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" } }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" }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
Trasforma una domanda di mercato in un brief go-to-market
Fai una domanda precisa al mercato, leggi le pagine di categoria e prezzi dietro la risposta, raccogli come gli acquirenti descrivono il problema su X e salva un brief GTM con affermazioni documentate e domande aperte.
Apri il workflowContenutiRiempi un mese di contenuti con le domande del tuo pubblico
Mappa i temi con Chat, trova le domande del pubblico su X, prendi un angolo reale da una trascrizione video e componi un calendario di quattro settimane in cui ogni riga nomina la sua prova.
Apri il workflowUfficioTrasforma una pagina di ricerca in una presentazione
Estrai la pagina, salvala come contesto LiveDoc, lascia che la PPT Task API costruisca il deck e interroga finché il link è pronto.
Apri il workflowAdattala 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.
Continua
Le pagine di riferimento dietro questa ricetta e i prossimi passi.