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.
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.
Contentkalender — voorbeeldmaand
Thema’s
- Schoonmaaktijd is de verborgen kostenpost.
- Werkbladruimte bepaalt de aankoop.
- Kopen voor jezelf vs. als cadeau.
Kalender
| Datum | Formaat | Werktitel | Invalshoek | Bewijs |
|---|---|---|---|---|
| 2026-11-02 | Carrousel | De schoonmaaktest van 5 minuten | De schoonmaakstap tonen die niemand filmt | @example_home, 2026-10-24 |
| 2026-11-04 | Korte video | Werkbladruimte, gemeten | Footprints op een echt werkblad vergelijken | Referentievideo — 42 s |
| 2026-11-09 | Nieuwsbrief | Waarom de afdichting begeeft | Het 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
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": "…" } ] }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/..." } ] } }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 } ] }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 |
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 van één zoekopdracht een SEO-contentbrief
Bekijk welke pagina’s de zoekopdracht nu beantwoorden, lees ze als Markdown, breng de vragen in kaart die ze wel en niet behandelen en schrijf een brief waar de redacteur direct een outline van kan maken.
Workflow openenContentPubliceer een dagelijkse AI-nieuwsdigest die je team echt leest
Haal een onderbouwde nieuwssamenvatting, voeg discussies van practitioners op X toe, neem één videotranscript op, stel de editie samen in Markdown en archiveer in een LiveDoc.
Workflow openenContentMaak van socialgesprekken een wekelijkse luisterbrief
Zoek de X-posts van de afgelopen week over je merk en concurrenten, voeg onderbouwde webcontext toe, lees de pagina’s erachter en archiveer elke editie zodat de volgende week bij het bekende begint.
Workflow openenMaak 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.
Verder
De referentiepagina’s achter dit recept en de volgende stappen.