Contenu
Remplissez un mois de contenu avec les questions de votre audience
Cartographiez les thèmes avec Chat, trouvez les questions de l’audience sur X, prenez un angle réel dans une transcription vidéo et composez un calendrier de quatre semaines où chaque ligne nomme sa preuve.
Copier le prompt
Remplacez les champs entre crochets, puis collez dans Claude Code, Codex ou toute IA avec accès au terminal. Elle installe le skill Felo, demande avant de dépenser des crédits et exécute le workflow.
Planifie quatre semaines de contenu sur [sujet] pour [public]. Canal : [canal]. Formats autorisés : [liste]. Jours de publication : [jours]. Langue : [langue]. Vidéo de référence (facultatif) : [URL YouTube ou ID vidéo]. Période des questions du public : [90] derniers jours. Produis un tableau calendrier Markdown avec une ligne par idée : | Date | Format | Titre de travail | Angle | Preuve | - Date : les quatre prochaines semaines, sur les jours autorisés. - Format : l’un des formats autorisés. - Titre de travail : comment s’appelle le contenu. - Angle : la promesse faite au public en une phrase. - Preuve : la question, la publication, la page ou l’horodatage vidéo qui justifie l’idée. Après le tableau, ajoute : 1. Les trois thèmes qui structurent le mois. 2. Quelles idées viennent des questions du public, lesquelles de la vidéo de référence, et lesquelles sont tes hypothèses. 3. Ce qu’il faudrait rechercher avant d’écrire chaque contenu. 4. Une liste de sources avec liens et dates. Règles : - Ce sont des idées, pas des garanties. Ne promets jamais portée, clics, classement ou croissance. - N’invente ni tendances, ni volume de recherche, ni chiffres d’engagement, ni citations. - Rattache chaque question du public à une publication ou une page datée. Si la preuve est mince, étiquette l’idée comme hypothèse. - Utilise la vidéo de référence uniquement pour les angles qu’elle couvre réellement ; cite brièvement avec horodatages. - Avant de consommer des crédits, montre les recherches et extractions prévues et attends mon accord. - Ne planifie pas de publications, ne crée pas de brouillons dans le CMS et ne publie rien. - Écris le résultat dans ./content-calendar.md et résume-le dans le chat.
La copie inclut aussi les étapes d'installation et les règles de sécurité.
Ce que vous obtenez
Exemple de sortie d'une exécution. Pas de génération en direct.
Calendrier de contenu — mois d’exemple
Thèmes
- Le temps de nettoyage est le coût caché.
- L’encombrement décide de l’achat.
- Achat pour soi vs achat cadeau.
Calendrier
| Date | Format | Titre de travail | Angle | Preuve |
|---|---|---|---|---|
| 2026-11-02 | Carrousel | Le test de nettoyage en 5 minutes | Montrer l’étape de nettoyage que personne ne filme | @example_home, 2026-10-24 |
| 2026-11-04 | Vidéo courte | L’encombrement, mesuré | Comparer les empreintes sur un vrai plan de travail | Vidéo de référence — 42 s |
| 2026-11-09 | Newsletter | Pourquoi le joint lâche | Expliquer le mode de défaillance que les acheteurs signalent | @example_buyer, 2026-10-19 |
D’où viennent les idées
Deux lignes viennent de questions datées du public, une de la vidéo de référence ; une ligne hypothèse serait étiquetée comme telle.
À rechercher d’abord
Taux de retour et politique de remplacement du joint — ni l’un ni l’autre n’est couvert par les sources ci-dessus.
Sources
- https://example.com/category-guide — 2026-10-12
- https://x.com/example_home/status/... — 2026-10-24
Les appels exacts
Pour les développeurs : le même workflow en code, dans l'ordre d'exécution.
Afficher les appels API
Cartographiez les thèmes avec Chat
Demandez à Chat les sous-thèmes les plus recherchés par l’audience et gardez les sources.
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);Exemple de sortie
{ "answer": "Beginners ask about cleanup, counter space, and grind size …", "sources": [ { "link": "https://example.com/guide", "title": "…", "snippet": "…" } ] }Trouvez les questions de l’audience sur X
Cherchez les questions liées au thème sur X sur 90 jours, en gardant comptes et dates.
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;Exemple de sortie
{ "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/..." } ] } }Récupérez une transcription de référence
Utilisez YouTube Subtitling pour une vidéo liée et trouvez un angle réel réutilisable.
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`, );Exemple de sortie
{ "title": "Example Video Title", "contents": [ { "text": "Subtitle text", "start": 42.3, "duration": 8.1 } ] }Composez le calendrier de quatre semaines
Créez un tableau Markdown avec date, format, titre de travail, angle et preuve.
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);Exemple de sortie
| 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 |
Enregistrez dans le LiveDoc
Enregistrez le calendrier et les sources dans le LiveDoc pour la revue de fin de mois.
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));Exemple de sortie
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Ce qui est inclus
- Carte des thèmes issue de Chat
- Questions datées de l’audience sur X
- Transcription et angle d’une vidéo de référence
- Calendrier de quatre semaines
- LiveDoc avec le plan et les sources
Ce qu'elle ne fait pas
- Ne prédit pas la performance et ne garantit pas le trafic
- Ne lit pas votre analytics historique
- N’écrit pas les posts entiers et ne publie pas
- Sans vidéo de référence, l’étape peut être sautée
- Le calendrier est une suggestion, pas une promesse
Questions
D’où viennent les idées ?
De la carte des thèmes de Chat, des questions réelles de l’audience sur X et de l’angle d’une vidéo de référence. Chaque entrée garde un lien ou une date de preuve.
Sait-il ce qui a marché avant ?
Non. Il ne lit pas votre analytics ; l’historique doit être ajouté par vous.
Écrit-il aussi les posts ?
Non. Il livre le calendrier et les angles ; l’écriture revient à vous ou à votre agent rédacteur.
Et sans vidéo de référence ?
Sautez cette étape ; les thèmes et les questions X suffisent à porter le calendrier.
Puis-je planifier les publications automatiquement ?
Non. Il crée un fichier de plan ; la planification se fait dans votre outil.
Combien coûte une planification ?
Chat, recherche X et transcription vidéo sont facturés à l’usage ; les tarifs actuels sont sur la page des prix, et le prompt demande votre accord avant dépense.
Workflows liés
Transformez une requête de recherche en brief de contenu SEO
Regardez quelles pages répondent aujourd’hui, lisez-les en Markdown, cartographiez les questions couvertes et manquées, puis écrivez un brief dont le rédacteur peut tirer un plan.
Ouvrir le workflowContenuPubliez un résumé quotidien d’actualité IA que votre équipe lit vraiment
Obtenez une synthèse sourcée, ajoutez ce que publient les praticiens sur X, récupérez une transcription vidéo, composez l’édition en Markdown et archivez-la dans un LiveDoc.
Ouvrir le workflowContenuTransformez les conversations sociales en brief d’écoute hebdomadaire
Cherchez les posts X de la semaine sur votre marque et vos concurrents, ajoutez un contexte web sourcé, lisez les pages derrière et archivez chaque édition pour que la semaine suivante parte du connu.
Ouvrir le workflowAdaptez-la
La même recette, adaptée à votre façon de livrer.
Deux semaines seulement
Compressez quatre semaines en deux pour une équipe qui démarre.
Séparez par canal
Créez des colonnes newsletter, X et YouTube avec le même thème dans des formats différents.
Ajoutez un lancement produit
Placez les dates de lancement comme lignes fixes et remplissez le contenu autour.
Aller plus loin
Les pages de référence derrière cette recette et la suite.