Felo API PlatformFelo API Platform

Content

Vul een maand content met de vragen van je doelgroep

Breng thema’s in kaart met Chat, vind de vragen van je doelgroep op X, haal een echte hoek uit een videotranscript en stel een vierweekse kalender samen waarin elke rij zijn bewijs noemt.

Tijd25 minutenNiveauGevorderdBijgewerkt2026-10-30
Voor wieContentleadsSocial mediaMakers

Prompt kopiëren

Vervang de velden tussen blokhaken en plak in Claude Code, Codex of een AI met terminaltoegang. Die installeert de Felo-skill, vraagt voor credits en voert de workflow uit.

Plan vier weken content over [onderwerp] voor [publiek].

Kanaal: [kanaal]. Toegestane formats: [lijst]. Publicatiedagen: [dagen]. Taal: [taal].
Referentievideo (optioneel): [YouTube-URL of video-ID]. Tijdvenster voor publieksvragen: laatste [90] dagen.

Lever een Markdown-kalendertabel met één rij per idee:
| Datum | Format | Werktitel | Invalshoek | Bewijs |
- Datum: de komende vier weken, op de toegestane dagen.
- Format: een van de toegestane formats.
- Werktitel: hoe het stuk heet.
- Invalshoek: de belofte aan het publiek in één zin.
- Bewijs: de vraag, post, pagina of videotijdstempel die het idee rechtvaardigt.

Voeg na de tabel toe:
1. De drie thema’s waarop de maand is gebouwd.
2. Welke ideeën uit publieksvragen komen, welke uit de referentievideo en welke je eigen hypothese zijn.
3. Wat je moet onderzoeken voordat je elk stuk schrijft.
4. Een bronnenlijst met links en datums.

Regels:
- Dit zijn ideeën, geen garanties. Beloof nooit bereik, klikken, posities of groei.
- Verzin geen trends, zoekvolume, engagementcijfers of citaten.
- Koppel elke publieksvraag aan een gedateerde post of pagina. Als het bewijs dun is, label het idee als hypothese.
- Gebruik de referentievideo alleen voor invalshoeken die hij echt dekt; citeer kort met tijdstempels.
- Voordat er credits worden gebruikt, toon je de geplande zoekopdrachten en extracties en wacht je op mijn goedkeuring.
- Plan geen posts, maak geen concepten in de CMS en publiceer niets.
- Schrijf het resultaat naar ./content-calendar.md en vat het samen in de chat.

De kopie bevat ook de installatiestappen en veiligheidsregels.

Wat je krijgt

Voorbeelduitvoer van een run. Geen live generatie.

Voorbeeldkalender (fragment)

Contentkalender — voorbeeldmaand

Thema’s

  1. Schoonmaaktijd is de verborgen kostenpost.
  2. Werkbladruimte bepaalt de aankoop.
  3. Kopen voor jezelf vs. als cadeau.

Kalender

DatumFormaatWerktitelInvalshoekBewijs
2026-11-02CarrouselDe schoonmaaktest van 5 minutenDe schoonmaakstap tonen die niemand filmt@example_home, 2026-10-24
2026-11-04Korte videoWerkbladruimte, gemetenFootprints op een echt werkblad vergelijkenReferentievideo — 42 s
2026-11-09NieuwsbriefWaarom de afdichting begeeftHet faalpatroon uitleggen dat kopers melden@example_buyer, 2026-10-19

Waar de ideeën vandaan komen

Twee rijen komen uit gedateerde publieksvragen en één uit de referentievideo; een hypotheserij zou als zodanig gelabeld zijn.

Wat eerst te onderzoeken

Retourpercentages en het vervangingsbeleid voor afdichtingen — beide niet gedekt door de bronnen hierboven.

Bronnen

  • https://example.com/category-guide — 2026-10-12
  • https://x.com/example_home/status/... — 2026-10-24

De exacte aanroepen

Voor ontwikkelaars: dezelfde workflow als kopieerbare code in uitvoeringsvolgorde.

Exacte API-aanroepen tonen
  1. Breng thema’s in kaart met Chat

    Vraag Chat naar de subthema’s die de doelgroep het meest zoekt en bewaar bronnen.

    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);

    Voorbeelduitvoer

    {
      "answer": "Beginners ask about cleanup, counter space, and grind size …",
      "sources": [
        { "link": "https://example.com/guide", "title": "…", "snippet": "…" }
      ]
    }
  2. Vind doelgroepvragen op X

    Zoek themagerelateerde vragen op X in de laatste 90 dagen en bewaar accounts en datums.

    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;

    Voorbeelduitvoer

    { "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. Haal een referentietranscript op

    Gebruik YouTube Subtitling voor een transcript en vind een herbruikbare echte hoek.

    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`,
    );

    Voorbeelduitvoer

    {
      "title": "Example Video Title",
      "contents": [
        { "text": "Subtitle text", "start": 42.3, "duration": 8.1 }
      ]
    }
  4. Stel de vierweekse kalender samen

    Maak een Markdown-tabel met datum, formaat, werktitel, hoek en bewijs.

    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);

    Voorbeelduitvoer

    | 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. Sla op in de LiveDoc

    Bewaar kalender en bronnen in de LiveDoc om aan het eind van de maand terug te kijken.

    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));

    Voorbeelduitvoer

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Wat inbegrepen is

  • Themakaart uit Chat
  • Gedateerde doelgroepvragen op X
  • Transcript en hoek van een referentievideo
  • Vierweekse contentkalender
  • LiveDoc met plan en bronnen

Wat het niet doet

  • Voorspelt geen prestaties en garandeert geen verkeer
  • Leest je historische analytics niet
  • Schrijft geen volledige posts en publiceert niet
  • Zonder referentievideo kan de stap vervallen
  • De kalender is een voorstel, geen belofte

Vragen

Waar komen de ideeën vandaan?

Uit de themakaart van Chat, echte doelgroepvragen op X en de hoek van een referentievideo. Elk item behoudt bewijslink of datum.

Weet het wat eerder werkte?

Nee. Het leest geen analytics; historische resultaten moet je zelf toevoegen.

Schrijft het ook de posts?

Nee. Het levert kalender en hoeken; schrijven doe jij of je schrijfagent.

En zonder referentievideo?

Sla die stap over; thema’s en X-vragen dragen de kalender.

Kan het publicaties automatisch plannen?

Nee. Het maakt een planbestand; planning gebeurt in je eigen tool.

Wat kost een planning?

Chat, X Search en videotranscript worden op gebruik gefactureerd; actuele tarieven staan op de prijspagina en de prompt vraagt goedkeuring voor uitgaven.

Gerelateerde workflows

Maak het van jou

Hetzelfde recept, aangepast aan hoe je echt oplevert.

Alleen twee weken

Comprimeer vier weken naar twee voor teams die net beginnen.

Splits per kanaal

Maak kolommen voor nieuwsbrief, X en YouTube met hetzelfde thema in andere formats.

Voeg de productlaunch toe

Zet launch- en eventdatums als vaste rijen en vul de content eromheen.

De referentiepagina’s achter dit recept en de volgende stappen.