内容
用受众真正在问的问题填满一个月内容
用 Chat 梳理主题,找出受众在 X 上问的问题,拉一条参考视频转录找真实角度,再写一张四周内容日历,每一行都标注证据。
复制 prompt
把方括号里的字段替换掉,然后粘贴到 Claude Code、Codex 或任何能访问终端的 AI。它会安装 Felo skill、在花额度前询问,并执行这套 workflow。
为[受众]规划四周关于[主题]的内容。 渠道:[渠道]。允许的形式:[形式列表]。发布日:[星期几]。语言:[语言]。 参考视频(可选):[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
实际调用
给开发者:同一套 workflow 的可复制代码,按执行顺序排列。
展开实际 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 会先请求确认。
相关 workflow
改成你的版本
同一套配方,按你实际的交付方式调整。
只排两周
把四周压缩成两周,适合刚开始稳定输出的团队。
按渠道拆分
为 newsletter、X 和 YouTube 各排一列,同一主题不同形式。
加入产品发布节点
把发布日和活动日作为固定行,再围绕它们填内容。
继续深入
这套配方背后的参考页面,以及下一步可以看什么。