Contenido
Convierte un brief de producto en una landing page
Investiga la audiencia, guarda el brief en LiveDoc, crea una tarea de Landing Page desde ese contexto y consulta hasta que la página alojada esté lista.
Copiar el prompt
Sustituye los campos entre corchetes y pégalo en Claude Code, Codex o cualquier IA con acceso a terminal. Instala el skill de Felo, pregunta antes de gastar créditos y ejecuta el flujo.
Crea una landing page para [producto] dirigida a [audiencia]. Objetivo: [registro / demo / lista de espera]. Tono: [tono]. Idioma: [idioma]. Material de partida: [URL del brief de producto o pega el brief]. Debe incluir: [puntos de prueba, precio, CTA]. Usa Chat y Web Fetch para investigar a la audiencia y dos o tres páginas de competidores. Guarda el brief y la investigación en un LiveDoc y crea una tarea Landing Page con ese LiveDoc como contexto. Consulta hasta que termine y devuelve el enlace de la página alojada. Genera: 1. Un esquema de página: portada, prueba, funciones, objeciones, CTA. 2. El enlace de la página alojada. 3. El enlace del LiveDoc usado como contexto. 4. Una lista de comprobación de afirmaciones que hay que verificar. Reglas: - No inventes métricas, clientes, testimonios, precios ni afirmaciones de cumplimiento. - Mantén cada afirmación rastreable hasta el brief o una página obtenida. - Pregunta antes de gastar créditos en investigación o generación de página. - No publiques ni conectes un dominio; devuelve el enlace alojado para revisión. - Escribe el esquema en ./landing-page-outline.md y resúmelo en el chat.
La copia también incluye los pasos de instalación y las reglas de seguridad.
Lo que obtienes
Salida de ejemplo de una ejecución. No es generación en vivo.
Esquema de landing page
Portada: «Investiga un mercado sin abrir treinta pestañas.» Subhead: Fuentes y un borrador de informe en una sola ejecución. Prueba: Tiempo ahorrado por informe; cada afirmación enlaza a una fuente. Funciones: Búsqueda, extracción de páginas, señal de X, evidencia de LiveDoc. Objeciones: «¿Inventará números?» No: dato ausente es «No disponible». CTA: Empieza con una pregunta.
Página: https://felo.ai/ai-page/... Contexto: https://felo.ai/livedoc/...
Las llamadas exactas
Para desarrolladores: el mismo flujo como código, en orden de ejecución.
Mostrar las llamadas reales a la API
Investiga audiencia y alternativas
Pregunta a Chat quién es la audiencia y qué necesita, y lee dos o tres páginas de competidores 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 })), ), );Salida de ejemplo
{ "answer": "…", "resources": [{ "link": "https://example.com", "title": "…" }] }Guarda el brief en LiveDoc
Crea el LiveDoc, añade el brief como documento y adjunta las páginas capturadas.
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 la tarea de landing page
Envía a
/v2/landing_pageel prompt y el LiveDoc short_id y recibe el 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);Salida de ejemplo
{ "data": { "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9" } }Consulta hasta terminar
Revisa el historial hasta COMPLETED y lee
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);Salida de ejemplo
{ "task_status": "COMPLETED", "ai_page_html": "https://felo.ai/ai-page/9qiLTmT77fA3aVurrMHvRJ", "ppt_url": "https://felo.ai/slides/9qiLTmT77fA3aVurrMHvRJ" }Revisa antes de compartir
Comprueba afirmaciones, precios, textos legales y enlaces CTA, y luego comparte.
Qué incluye
- Investigación de audiencia y competidores en páginas públicas
- Brief e investigación en LiveDoc
- Página alojada generada desde ese contexto
- Lista de revisión de afirmaciones, enlaces y CTA
Qué no hace
- Genera una página alojada, no publica un sitio ni conecta dominio propio
- El texto generado necesita revisión humana antes de compartir
- No hace tests A/B ni conecta analítica
- No verifica afirmaciones ausentes del brief y la página
- No crea logo, sistema de marca ni ilustraciones personalizadas
Preguntas
¿Qué genera?
Una landing page alojada en Felo, basada en el brief y la investigación. Recibes un enlace, no un sitio publicado.
¿Puedo usar mi dominio?
Este flujo no conecta dominios. Devuelve una página alojada para revisión; dominio y publicación son otro paso.
¿Inventa testimonios o métricas?
No. El prompt prohíbe invenciones y exige que cada afirmación venga del brief o de una página capturada.
¿Puedo iterar?
Sí. Cambia el brief en LiveDoc y crea una nueva tarea Landing Page.
¿Crea imágenes personalizadas?
Gestiona estructura y texto; ilustraciones y materiales de marca quedan fuera.
¿Cuánto cuesta una página?
Investigación y generación se facturan por uso; las tarifas están en la página de precios y el prompt pide aprobación antes de gastar.
Flujos relacionados
Convierte una pregunta de mercado en un brief go-to-market
Haz una pregunta precisa al mercado, lee las páginas de categoría y precios detrás de la respuesta, recoge cómo describen el problema los compradores en X y guarda un brief GTM con afirmaciones con fuentes y preguntas abiertas.
Abrir el flujo de trabajoContenidoLlena un mes de contenido con las preguntas de tu audiencia
Mapea temas con Chat, encuentra las preguntas de la audiencia en X, toma un ángulo real de una transcripción de vídeo y compón un calendario de cuatro semanas donde cada fila nombra su evidencia.
Abrir el flujo de trabajoOficinaConvierte una página de investigación en una presentación
Extrae la página, guárdala como contexto LiveDoc, deja que la API PPT Task construya el deck y consulta hasta obtener el enlace final.
Abrir el flujo de trabajoHazlo tuyo
La misma receta, adaptada a cómo entregas de verdad.
Empieza con PDF
Envía un PDF en multipart; la plataforma lo guarda como recurso LiveDoc y lo pasa a la tarea.
Dos versiones de posicionamiento
Crea dos tareas con ángulos distintos en el mismo LiveDoc y compara antes de elegir.
Reutiliza en presentación
El mismo LiveDoc puede alimentar una tarea PPT para que página y deck cuenten la misma historia.
Seguir
Las páginas de referencia detrás de esta receta y los siguientes pasos.