Contenido
Llena 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.
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.
Planifica cuatro semanas de contenido sobre [tema] para [audiencia]. Canal: [canal]. Formatos permitidos: [lista]. Días de publicación: [días]. Idioma: [idioma]. Vídeo de referencia (opcional): [URL de YouTube o ID de vídeo]. Ventana de preguntas de la audiencia: últimos [90] días. Genera una tabla de calendario en Markdown con una fila por idea: | Fecha | Formato | Título de trabajo | Enfoque | Evidencia | - Fecha: las próximas cuatro semanas, en los días permitidos. - Formato: uno de los permitidos. - Título de trabajo: cómo se llama la pieza. - Enfoque: la promesa que hace a la audiencia en una frase. - Evidencia: la pregunta, publicación, página o marca de tiempo del vídeo que justifica la idea. Después de la tabla, añade: 1. Los tres temas sobre los que se construye el mes. 2. Qué ideas vienen de preguntas de la audiencia, cuáles del vídeo de referencia y cuáles son tu propia hipótesis. 3. Qué necesitarías investigar antes de escribir cada pieza. 4. Una lista de fuentes con enlaces y fechas. Reglas: - Son ideas, no garantías. Nunca prometas alcance, clics, posiciones ni crecimiento. - No inventes tendencias, volumen de búsqueda, cifras de interacción ni citas. - Vincula cada pregunta de la audiencia con una publicación o página fechada. Si la evidencia es escasa, etiqueta la idea como hipótesis. - Usa el vídeo de referencia solo para los enfoques que realmente cubre; cita brevemente con marcas de tiempo. - Antes de gastar créditos, muestra las búsquedas y extracciones previstas y espera mi aprobación. - No programes publicaciones, no crees borradores en el CMS ni publiques nada. - Escribe el resultado en ./content-calendar.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.
Calendario de contenido — mes de ejemplo
Temas
- El tiempo de limpieza es el coste oculto.
- El espacio en encimera decide la compra.
- Comprar para uno mismo vs. para regalar.
Calendario
| Fecha | Formato | Título de trabajo | Ángulo | Evidencia |
|---|---|---|---|---|
| 2026-11-02 | Carrusel | La prueba de limpieza en 5 minutos | Mostrar el paso de limpieza que nadie graba | @example_home, 2026-10-24 |
| 2026-11-04 | Vídeo corto | Espacio en encimera, medido | Comparar huellas en una encimera real | Vídeo de referencia — 42 s |
| 2026-11-09 | Newsletter | Por qué falla la junta | Explicar el modo de fallo que reportan los compradores | @example_buyer, 2026-10-19 |
De dónde vienen las ideas
Dos filas vienen de preguntas fechadas de la audiencia y una del vídeo de referencia; una fila de hipótesis se etiquetaría como tal.
Qué investigar primero
Tasas de devolución y política de recambio de la junta; ninguna está cubierta por las fuentes.
Fuentes
- https://example.com/category-guide — 2026-10-12
- https://x.com/example_home/status/... — 2026-10-24
Las llamadas exactas
Para desarrolladores: el mismo flujo como código, en orden de ejecución.
Mostrar las llamadas reales a la API
Mapea temas con Chat
Pregunta a Chat por los subtemas que más busca la audiencia y guarda fuentes.
calendar.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; snippet: string }[]; }; }; const topic = "portable espresso makers"; const audience = "home espresso beginners"; const themes = await felo<ChatData>("/v2/chat", { query: `Themes, recurring questions, and content gaps around ${topic} for ${audience}`, }); const sources = themes.data.resources.slice(0, 5);Salida de ejemplo
{ "answer": "Beginners ask about cleanup, counter space, and grind size …", "sources": [ { "link": "https://example.com/guide", "title": "…", "snippet": "…" } ] }Encuentra preguntas en X
Busca preguntas sobre el tema en X en los últimos 90 días, guardando cuentas y fechas.
calendar.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; url: string; }[]; }; }; const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000); const questions = await felo<XData>("/v2/x/tweet/search", { query: `"${topic}" (recommend OR beginner OR how)`, limit: 50, since_time: since, }); const asked = questions.data.tweets;Salida de ejemplo
{ "data": { "tweets": [ { "content": "How do you clean one of these without taking it apart?", "author": { "username": "example_home" }, "created_at": "2026-10-24T11:30:00Z", "url": "https://x.com/example_home/status/..." } ] } }Obtén una transcripción de referencia
Usa YouTube Subtitling para una transcripción y encuentra un ángulo real reutilizable.
calendar.ts type SubtitleData = { data: { title: string; contents: { text: string; start: number; duration: number }[]; }; }; const videoCode = "dQw4w9WgXcQ"; // replace with your reference video id const video = await felo<SubtitleData>( `/v2/youtube/subtitling?video_code=${videoCode}&language=en&with_time=true`, );Salida de ejemplo
{ "title": "Example Video Title", "contents": [ { "text": "Subtitle text", "start": 42.3, "duration": 8.1 } ] }Monta el calendario de cuatro semanas
Crea una tabla Markdown con fecha, formato, título de trabajo, ángulo y evidencia.
calendar.ts const start = new Date(); const day = (offset: number) => { const date = new Date(start); date.setDate(date.getDate() + offset); return date.toISOString().slice(0, 10); }; type Idea = { dayOffset: number; format: string; title: string; angle: string; evidence: string; }; // Rows come from the themes, the dated questions, and the transcript. const anchor = video.data.contents[0]; const ideas: Idea[] = [ { dayOffset: 1, format: "carousel", title: "The 5-minute cleanup test", angle: "Show the cleanup step nobody films", evidence: asked[0]?.url ?? "hypothesis", }, { dayOffset: 3, format: "short video", title: "Counter space, measured", angle: "Compare footprints on one real counter", evidence: anchor ? `${video.data.title} — ${Math.round(anchor.start)}s` : video.data.title, }, ]; const calendar = [ "| Date | Format | Working title | Angle | Evidence |", "| --- | --- | --- | --- | --- |", ...ideas.map( (idea) => `| ${day(idea.dayOffset)} | ${idea.format} | ${idea.title} | ${idea.angle} | ${idea.evidence} |`, ), ].join("\n"); console.log(calendar);Salida de ejemplo
| Date | Format | Working title | Angle | Evidence | | --- | --- | --- | --- | --- | | 2026-11-02 | carousel | The 5-minute cleanup test | Show the cleanup step nobody films | https://x.com/example_home/status/... | | 2026-11-04 | short video | Counter space, measured | Compare footprints on one real counter | Example Video Title — 42s |
Guarda en el LiveDoc
Guarda el calendario y las fuentes en el LiveDoc para consultar a fin de mes.
calendar.ts type LiveDocData = { data: { short_id: string } }; const plan = await felo<LiveDocData>("/v2/livedocs", { name: `Content calendar: ${topic}`, description: "Monthly plan with themes, calendar rows, and evidence", }); await felo(`/v2/livedocs/${plan.data.short_id}/resources/urls`, { urls: sources.map((source) => ({ url: source.link, title: source.title })), }); await felo(`/v2/livedocs/${plan.data.short_id}/resources/doc`, { title: `Content calendar — ${day(0).slice(0, 7)}`, content: calendar, }); type Retrieved = { data: { title: string; content: string; score: number }[] }; const lastMonth = await felo<Retrieved>( `/v2/livedocs/${plan.data.short_id}/resources/retrieve`, { query: "what did we plan last month" }, ).then((res) => res.data.filter((hit) => hit.score >= 0.7));Salida de ejemplo
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Qué incluye
- Mapa de temas de Chat
- Preguntas fechadas de la audiencia en X
- Transcripción y ángulo de un vídeo de referencia
- Calendario de cuatro semanas
- LiveDoc con plan y fuentes
Qué no hace
- No predice rendimiento ni garantiza tráfico
- No lee tu analítica histórica
- No escribe posts completos ni publica
- Sin vídeo de referencia, el paso puede omitirse
- El calendario es una sugerencia, no una promesa
Preguntas
¿De dónde vienen las ideas?
Del mapa de temas de Chat, de preguntas reales en X y del ángulo de un vídeo de referencia. Cada entrada conserva enlace o fecha de evidencia.
¿Sabe qué funcionó antes?
No. No lee analítica; el historial lo añades tú.
¿También escribe los posts?
No. Entrega calendario y ángulos; la escritura es tuya o de tu agent.
¿Y sin vídeo de referencia?
Omite ese paso; temas y preguntas de X sostienen el calendario.
¿Puedo programar las publicaciones?
No. Crea un archivo de plan; la programación es de tu herramienta.
¿Cuánto cuesta planificar?
Chat, X Search y transcripció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 búsqueda en un brief de contenido SEO
Mira qué páginas responden hoy, léelas como Markdown, mapea las preguntas que cubren y las que omiten, y escribe un brief del que el redactor pueda sacar el esquema.
Abrir el flujo de trabajoContenidoPublica un resumen diario de IA que tu equipo realmente lea
Obtén un resumen con fuentes, añade lo que publican los profesionales en X, consigue una transcripción de vídeo, compón la edición en Markdown y archívala en un LiveDoc.
Abrir el flujo de trabajoContenidoConvierte las conversaciones sociales en un brief semanal de escucha
Busca los posts de X de la última semana sobre tu marca y competidores, añade contexto web con fuentes, lee las páginas detrás y archiva cada edición para que la siguiente semana empiece por lo conocido.
Abrir el flujo de trabajoHazlo tuyo
La misma receta, adaptada a cómo entregas de verdad.
Solo dos semanas
Comprime cuatro semanas en dos para equipos que empiezan.
Separa por canal
Crea columnas para newsletter, X y YouTube con el mismo tema en formatos distintos.
Añade el lanzamiento
Pon fechas de lanzamiento como filas fijas y rellena alrededor.
Seguir
Las páginas de referencia detrás de esta receta y los siguientes pasos.