Felo API PlatformFelo API Platform

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.

Tiempo25 minutosNivelIntermedioActualizado2026-10-30
Para quiénResponsables de contenidoSocial mediaCreadores

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.

Ejemplo de calendario (extracto)

Calendario de contenido — mes de ejemplo

Temas

  1. El tiempo de limpieza es el coste oculto.
  2. El espacio en encimera decide la compra.
  3. Comprar para uno mismo vs. para regalar.

Calendario

FechaFormatoTítulo de trabajoÁnguloEvidencia
2026-11-02CarruselLa prueba de limpieza en 5 minutosMostrar el paso de limpieza que nadie graba@example_home, 2026-10-24
2026-11-04Vídeo cortoEspacio en encimera, medidoComparar huellas en una encimera realVídeo de referencia — 42 s
2026-11-09NewsletterPor qué falla la juntaExplicar 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
  1. 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": "…" }
      ]
    }
  2. 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/..."
      }
    ] } }
  3. 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 }
      ]
    }
  4. 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 |
  5. 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

Hazlo 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.

Las páginas de referencia detrás de esta receta y los siguientes pasos.