Treści
Wypełnij miesiąc treści pytaniami odbiorców
Zmapuj tematy z Chat, znajdź pytania odbiorców na X, weź prawdziwy kąt z transkryptu wideo i złóż czterotygodniowy kalendarz, w którym każdy wiersz podaje dowód.
Skopiuj prompt
Podmień pola w nawiasach kwadratowych i wklej do Claude Code, Codex albo AI z dostępem do terminala. Instaluje skill Felo, pyta przed wydaniem kredytów i uruchamia workflow.
Zaplanuj cztery tygodnie treści o [temat] dla [odbiorcy]. Kanał: [kanał]. Dozwolone formaty: [lista]. Dni publikacji: [dni]. Język: [język]. Film referencyjny (opcjonalnie): [URL YouTube lub ID filmu]. Okres pytań odbiorców: ostatnie [90] dni. Przygotuj tabelę kalendarza w Markdown z jednym wierszem na pomysł: | Data | Format | Tytuł roboczy | Kąt | Dowód | - Data: najbliższe cztery tygodnie, w dozwolonych dniach. - Format: jeden z dozwolonych. - Tytuł roboczy: jak nazywa się materiał. - Kąt: obietnica wobec odbiorców w jednym zdaniu. - Dowód: pytanie, post, strona lub znacznik czasu filmu, który uzasadnia pomysł. Po tabeli dodaj: 1. Trzy tematy, na których opiera się miesiąc. 2. Które pomysły pochodzą z pytań odbiorców, które z filmu referencyjnego, a które są Twoją hipotezą. 3. Czego trzeba się dowiedzieć przed napisaniem każdego materiału. 4. Listę źródeł z linkami i datami. Zasady: - To pomysły, nie gwarancje. Nigdy nie obiecuj zasięgu, kliknięć, pozycji ani wzrostu. - Nie wymyślaj trendów, wolumenu wyszukiwań, liczb zaangażowania ani cytatów. - Przypisz każde pytanie odbiorców do datowanego posta lub strony. Jeśli dowody są słabe, oznacz pomysł jako hipotezę. - Używaj filmu referencyjnego tylko do kątów, które faktycznie obejmuje; cytuj krótko ze znacznikami czasu. - Zanim zużyjesz kredyty, pokaż planowane wyszukiwania i ekstrakcje i poczekaj na moją zgodę. - Nie planuj postów, nie twórz szkiców w CMS i niczego nie publikuj. - Zapisz wynik w ./content-calendar.md i podsumuj go w czacie.
Kopia zawiera też kroki instalacji i zasady bezpieczeństwa.
Co otrzymujesz
Przykładowy wynik jednego uruchomienia. Nie generowanie na żywo.
Kalendarz treści — przykładowy miesiąc
Tematy
- Czas czyszczenia to ukryty koszt.
- Miejsce na blacie decyduje o zakupie.
- Zakup dla siebie vs na prezent.
Kalendarz
| Data | Format | Tytuł roboczy | Kąt | Dowód |
|---|---|---|---|---|
| 2026-11-02 | Karuzela | Test czyszczenia w 5 minut | Pokazać krok czyszczenia, którego nikt nie filmuje | @example_home, 2026-10-24 |
| 2026-11-04 | Krótkie wideo | Miejsce na blacie, zmierzone | Porównać ślady na prawdziwym blacie | Wideo referencyjne — 42 s |
| 2026-11-09 | Newsletter | Dlaczego uszczelka zawodzi | Wyjaśnić tryb awarii zgłaszany przez kupujących | @example_buyer, 2026-10-19 |
Skąd pomysły
Dwa wiersze z datowanych pytań odbiorców, jeden z wideo referencyjnego; wiersz hipotezy byłby oznaczony.
Co zbadać najpierw
Wskaźniki zwrotów i politykę wymiany uszczelki — żadne nie jest objęte powyższymi źródłami.
Źródła
- https://example.com/category-guide — 2026-10-12
- https://x.com/example_home/status/... — 2026-10-24
Dokładne wywołania
Dla deweloperów: ten sam workflow jako kod, w kolejności wykonania.
Pokaż rzeczywiste wywołania API
Zmapuj tematy z Chat
Zapytaj Chat o podtematy najczęściej szukane przez publiczność i zachowaj źródła.
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);Przykładowy wynik
{ "answer": "Beginners ask about cleanup, counter space, and grind size …", "sources": [ { "link": "https://example.com/guide", "title": "…", "snippet": "…" } ] }Znajdź pytania odbiorców na X
Szukaj pytań o temat na X w ostatnich 90 dniach, zachowując konta i daty.
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;Przykładowy wynik
{ "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/..." } ] } }Pobierz transkrypt referencyjny
Użyj YouTube Subtitling dla transkryptu i znajdź prawdziwy, wielokrotnego użytku kąt.
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`, );Przykładowy wynik
{ "title": "Example Video Title", "contents": [ { "text": "Subtitle text", "start": 42.3, "duration": 8.1 } ] }Złóż kalendarz na cztery tygodnie
Zrób tabelę Markdown z datą, formatem, tytułem roboczym, kątem i dowodem.
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);Przykładowy wynik
| 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 |
Zapisz w LiveDoc
Zapisz kalendarz i źródła w LiveDoc do przeglądu na koniec miesiąca.
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));Przykładowy wynik
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Co zawiera
- Mapa tematów z Chat
- Datowane pytania odbiorców na X
- Transkrypt i kąt wideo referencyjnego
- Czterotygodniowy kalendarz treści
- LiveDoc z planem i źródłami
Czego nie robi
- Nie przewiduje wyników i nie gwarantuje ruchu
- Nie czyta twojej historycznej analityki
- Nie pisze pełnych postów i nie publikuje
- Bez wideo referencyjnego krok można pominąć
- Kalendarz to propozycja, nie obietnica
Pytania
Skąd pomysły?
Z mapy tematów Chat, prawdziwych pytań odbiorców na X i kąta wideo referencyjnego. Każdy element zachowuje link lub datę dowodu.
Czy wie, co działało wcześniej?
Nie. Nie czyta analityki; historyczne wyniki dodajesz sam.
Czy pisze też posty?
Nie. Daje kalendarz i kąty; pisanie należy do ciebie lub twojego agenta piszącego.
Bez wideo referencyjnego?
Pomiń ten krok; tematy i pytania X nadal utrzymują kalendarz.
Czy można planować publikacje?
Nie. Tworzy plik planu; harmonogram jest w twoim narzędziu.
Ile kosztuje jedno planowanie?
Chat, X Search i transkrypt wideo są rozliczane według użycia; aktualne stawki na stronie cen, a prompt pyta o zgodę przed wydaniem.
Powiązane workflowy
Zamień zapytanie w brief treści SEO
Zobacz, które strony odpowiadają dziś, przeczytaj je jako Markdown, zmapuj pytania pokryte i pominięte, a potem napisz brief, z którego redaktor zrobi outline.
Otwórz workflowTreściPublikuj codzienny digest AI, który zespół naprawdę czyta
Weź podsumowanie ze źródłami, dodaj rozmowy praktyków na X, pobierz transkrypt wideo, złóż wydanie w Markdown i zarchiwizuj w LiveDoc.
Otwórz workflowTreściZamień rozmowy społecznościowe w tygodniowy brief nasłuchu
Znajdź posty X z tego tygodnia o marce i konkurentach, dodaj kontekst web ze źródłami, przeczytaj strony za nim i archiwizuj każde wydanie, żeby kolejny tydzień startował od znanego.
Otwórz workflowDostosuj
Ta sama receptura, dopasowana do tego, jak naprawdę dostarczasz.
Tylko dwa tygodnie
Skróć cztery tygodnie do dwóch dla zespołów, które zaczynają.
Podziel według kanału
Zrób kolumny newsletter, X i YouTube z tym samym tematem w innych formatach.
Dodaj launch produktu
Ustaw daty launchu jako stałe wiersze i wypełnij treść wokół.
Idź dalej
Strony referencyjne za tą recepturą i kolejne kroki.