內容
用受眾真正在問的問題填滿一個月內容
用 Chat 梳理主題,找出受眾在 X 上問的問題,拉一條參考影片轉錄找真實角度,再寫一張四週內容日曆,每一列都標註證據。
複製 prompt
把方括號裡的欄位替換掉,然後貼到 Claude Code、Codex 或任何能存取終端機的 AI。它會安裝 Felo skill、在花額度前詢問,並執行這套工作流程。
為[受眾]規劃四週關於[主題]的內容。 頻道:[頻道]。允許的形式:[形式清單]。發布日:[星期幾]。語言:[語言]。 參考影片(選填):[YouTube URL 或影片 ID]。受眾問題時間範圍:過去 [90] 天。 輸出一個 Markdown 日曆表,每個想法一列: | 日期 | 形式 | 工作標題 | 角度 | 證據 | - 日期:接下來四週內,使用允許的發布日。 - 形式:允許的形式之一。 - 工作標題:這篇內容叫什麼。 - 角度:用一句話說明它對受眾的承諾。 - 證據:支撐這個想法的提問、貼文、頁面或影片時間戳。 表格之後補充: 1. 這個月依托的三個主題。 2. 哪些想法來自受眾提問,哪些來自參考影片,哪些是你自己的假設。 3. 寫每篇內容前還需要研究什麼。 4. 附連結和日期的來源清單。 規則: - 這些是想法,不是保證。不要承諾觸及、點擊、排名或成長。 - 不要編造趨勢、搜尋量、互動數據或引文。 - 每個受眾問題都要對應到附日期的貼文或頁面。證據不足時,把想法標示為假設。 - 參考影片只用於它實際涵蓋的角度;簡短引用並附時間戳。 - 消耗額度前,先展示預計執行的搜尋和擷取並等待我批准。 - 不要排程貼文、在 CMS 建立草稿或發布任何內容。 - 將結果寫入 ./content-calendar.md,並在對話中總結。
複製的內容也包含安裝步驟和安全規則。
你會得到什麼
一次執行的範例輸出,不是即時生成。
內容日曆 — 範例月份
主題
- 清潔時間是隱性成本。
- 檯面空間決定購買。
- 自用購買 vs 送禮購買。
日曆
| 日期 | 形式 | 工作標題 | 角度 | 證據 |
|---|---|---|---|---|
| 2026-11-02 | 輪播 | 5 分鐘清潔測試 | 展示沒人拍的清潔步驟 | @example_home,2026-10-24 |
| 2026-11-04 | 短影音 | 測量檯面空間 | 在真實檯面上比較占地 | 參考影片 — 42 秒 |
| 2026-11-09 | 電子報 | 密封圈為什麼會壞 | 解釋買家反覆回報的故障模式 | @example_buyer,2026-10-19 |
想法來自哪裡
兩列來自帶日期的受眾提問,一列來自參考影片;如果是假設列,會明確標示。
先研究什麼
退貨率與密封圈更換政策——上面的來源都沒有涵蓋。
來源
- https://example.com/category-guide — 2026-10-12
- https://x.com/example_home/status/... — 2026-10-24
實際呼叫
給開發者:同一套工作流程的可複製程式碼,依執行順序排列。
展開實際 API 呼叫
用 Chat 梳理主題
問 Chat 這個主題下受眾最常關心的子話題,保留來源。
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);範例輸出
{ "answer": "Beginners ask about cleanup, counter space, and grind size …", "sources": [ { "link": "https://example.com/guide", "title": "…", "snippet": "…" } ] }找受眾在 X 上問的問題
在 X 搜尋主題相關的提問,限定最近 90 天,保留帳號和日期。
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;範例輸出
{ "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/..." } ] } }拉一條參考影片轉錄
用 YouTube Subtitling 拉一條相關影片,找一個可以重複使用的真實角度。
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`, );範例輸出
{ "title": "Example Video Title", "contents": [ { "text": "Subtitle text", "start": 42.3, "duration": 8.1 } ] }排四週日曆
依日期、形式、工作標題、角度和證據排成 Markdown 表格。
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);範例輸出
| 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 |
存進 LiveDoc
把日曆和來源存進 LiveDoc,月底復盤時可以直接檢索。
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));範例輸出
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
包含什麼
- 來自 Chat 的主題地圖
- X 上帶日期的受眾問題
- 一條參考影片的轉錄和角度
- 依四週排好的內容日曆
- 保存計畫和來源的 LiveDoc
不做什麼
- 不預測表現,也不保證流量
- 不讀取你的歷史 analytics
- 不自動寫完整貼文或發佈
- 沒有參考影片時可以跳過該步驟
- 日曆是建議,不是承諾
常見問題
日曆裡的選題從哪來?
來自 Chat 的主題地圖、X 上受眾真實提問,以及一條參考影片的角度。每條都保留證據連結或日期。
它知道過去什麼內容表現好嗎?
不知道。它不讀取你的 analytics;歷史表現需要你自己補進去。
會順便把貼文寫好嗎?
不會。它產出日曆和角度,寫作仍由你或寫作 agent 完成。
沒有參考影片怎麼辦?
跳過該步驟即可,主題和 X 問題仍然可以支撐日曆。
可以自動排程嗎?
不可以。它只產生計畫檔案,發佈排程需要你自己的工具。
一次規劃要花多少?
Chat、X 搜尋和影片轉錄按用量計費;目前費率在價格頁面,prompt 會先請求確認。
相關工作流程
改成你的版本
同一套配方,依你實際的交付方式調整。
只排兩週
把四週壓縮成兩週,適合剛開始穩定產出的團隊。
依通路拆分
為 newsletter、X 和 YouTube 各排一列,同一主題不同形式。
加入產品發佈節點
把發佈日和活動日作為固定列,再圍繞它們填內容。
繼續深入
這套配方背後的參考頁面,以及下一步可以看什麼。