| name | danchaofan-daily-review |
| description | 「蛋炒饭财经」每日收盘复盘视频创作助手,用于每个交易日产出一条 5-8 分钟的盘面复盘视频。当用户说"做今天的复盘""今天收盘复盘""复盘一下今天""今天大盘怎么回事""做条复盘视频"时,务必使用本技能。它会联网抓当日盘面(指数/两市成交额/涨跌家数/涨跌停/行业与题材板块榜)+ 当日新闻财报 + 散户情绪,先产出 3 个主线候选供选择,采纳后生成完整口播稿(主线深挖 + 3-5 条编号快评 + 结尾情绪段)、标题、B站(4:3) 与抖音(3:4) 两版封面,以及交花生 AI 的分镜规划。与逐只讲个股的 bilibili-finance-video 是两条并行产线:复盘是日更、讲当天的市场,个股是深度、讲一支票。 |
蛋炒饭财经 · 每日收盘复盘
每个交易日收盘后,产出一条 5-8 分钟的复盘视频。你在为财经账号 「蛋炒饭财经」 创作内容,复盘是这个账号的独立子栏目——和逐只讲个股的深度产线共用同一个人设、同一套合规红线,但有自己的开场锚、自己的结构、自己的封面模板。
开工前先读账号级 Memory $WORKSPACE/huasheng.md(人设/画像/品类/固定话术/封面基因/合规红线),复盘子栏目的专属话术在第五节、专属红线在第七节。
这条产线在卖什么(想清楚再动手)
复盘视频对观众是两件事叠加,缺一件就平庸:
- 信息价值——"我手里的票今天为啥这样"。当日盘面、板块异动、财报与事件的归因解释。这是硬通货,也是这条产线的立身之本。
- 情绪价值——社会热点、生活观察、持仓心态的分享。这是日更能攒下"每天来听一耳朵"的陪伴感的原因,收在结尾一段做(见下)。
日更的核心矛盾不是"没数据",是"每天都要有一个值得讲的主线"。 所以主线分两型(A 异动归因 / B 分析框架),盘面平淡的日子走 B,不硬凑异动。详见 references/mainline-selection.md。
跨工具适配 + 路径寻址
本技能同时支持 Claude Code 和 Codex。提到具体工具名时按当前运行环境映射到等价能力,别因"没有叫这个名字的工具"就跳过步骤。
- 联网搜索/抓网页:一律走创作 skill 自带的
web_search.py / web_fetch.py,不要用自带的 WebSearch / WebFetch(对雪球/东财等 WAF 站点拿不到正文)。
- 写文件/跑脚本:用当前环境的文件写入能力落地;脚本一律
python3 跑。
本技能只自带一个脚本(market_snapshot.py),其余全部复用创作 skill bilibili-finance-video 的脚本与方法论——不复制文件,直接按绝对路径调:
SKILL_DIR="$HOME/.claude/skills/danchaofan-daily-review"
[ -d "$SKILL_DIR" ] || SKILL_DIR="$HOME/.codex/skills/danchaofan-daily-review"
REPO="$(dirname "$(cd "$SKILL_DIR" && pwd -P)")"
WORKSPACE="${DANCHAOFAN_WORKSPACE:-$REPO/workspace}"
DESK="$REPO/bilibili-finance-video"
[ -d "$DESK" ] || DESK="$HOME/.claude/skills/bilibili-finance-video"
[ -d "$DESK" ] || DESK="$HOME/.codex/skills/bilibili-finance-video"
从 $DESK 借用的东西(API key 在 $DESK/.env,脚本自己会读,无需 export):
| 用途 | 路径 |
|---|
| 联网搜索 / 抓网页 | $DESK/scripts/web_search.py、web_fetch.py |
| 个股/指数基础行情 | $DESK/scripts/xueqiu_quote.py(支持指数,如 SH000001) |
| 全市场四榜(人气/涨/跌/成交额) | $DESK/scripts/xueqiu_hot_stocks.py |
| 散户情绪热帖 | $DESK/scripts/xueqiu_hot_posts.py(必须派子 agent 抓+消化) |
| 封面生成 | $DESK/scripts/generate_cover.py |
| 采集脚本完整手册 | $DESK/references/data-fetching.md |
| AI 味词表(终审逐句扫) | $DESK/references/banned-words.md |
| 分镜规划(走"独立入口"路径) | $DESK/references/storyboard-plan.md |
本技能自带脚本:market_snapshot.py(当日盘面快照)
创作 skill 的三个雪球脚本全是个股级的,答不了"今天成交多少万亿、多少只上涨、中位数涨跌多少、哪个板块领涨"。本脚本补这一层:
python3 "$SKILL_DIR/scripts/market_snapshot.py" --out "$DIR/参考资料/抓取数据/market_snapshot.json"
python3 "$SKILL_DIR/scripts/market_snapshot.py" --blocks index,breadth
python3 "$SKILL_DIR/scripts/market_snapshot.py" --refresh-bk
产出三块:indices + turnover(7 个指数涨跌幅、两市成交额合计)、breadth(分沪市/科创/深市三段的涨跌平家数、涨跌停家数、市场中位数)、sectors(行业板块与概念题材两套各自的领涨/领跌榜)。
四个口径铁律(关系到口播能不能这么说,务必守住):
- 涨跌家数是精确值(二分定位 percent 排序列表的零点边界得来),可以直接念"今天 2796 只上涨、2271 只下跌"。
- 市场中位数是抽样近似值(
median_is_approx: true),只念约数、只用它判断"今天中位数是正还是负、大致什么量级",不要念到小数点后两位当精确数据。脚本已用精确家数交叉验证它的正负号(median_sign_consistent),这项为 false 时别用中位数、改用涨跌家数说事。
- 行业板块和概念题材分开念,别混成一张榜——"行业上煤炭领涨,题材上供销社最猛"是对的;"领涨的是软件开发、供销社、煤炭开采"混着念观众听不出层次。
- 两市成交额只取上证+深证成指相加(脚本已处理)。指数返回的 amount 是所在整个市场的成交额,多加一个指数就会重复计数。
单块失败优雅降级(带 error 字段照常返回其它块)。整块拿不到时退路是 web_search.py 搜"今日 A股 收盘 成交额 板块涨幅 <当天日期>"兜底,并在稿里对该数字标"未获取到"——绝不用记忆里的数字冒充(东方财富接口在部分环境不可达,本脚本已全走雪球,不要试图改回东财)。
工作流程总览(四阶段,两个人工决策点)
触发语:「做今天的复盘」「今天收盘复盘」「复盘一下今天」。
- 阶段一 · 盘面快照 + 出 3 个主线候选 → 停下让用户选主线
- 阶段二 · 写稿 + 独立终审 → 停下让用户确认最终标题
- 阶段三 · 封面(标题定稿后)
- 阶段四 · 分镜规划(封面后自动跑,不新增停顿)
两个决策点和个股产线一致:主线选错后面写得再好也白费;封面在标题定稿前生成会导致大字和实际标题对不上。
阶段一:盘面快照 + 出 3 个主线候选
第零步:建文件夹(先做,别急着抓数据)
D=$(date +%F)
DIR="$WORKSPACE/${D}_复盘_待定"
mkdir -p "$DIR/参考资料/抓取数据"
mkdir -p "$DIR/数据/数据_raw"
mkdir -p "$DIR/封面"
: > "$DIR/参考资料/参考资料.md"
: > "$DIR/视频基础信息.md"
骨架和个股产线完全一致(参考资料/、数据/、封面/ + 视频基础信息.md),这样 danchaofan-data-tracker(发布后抓数据)和 danchaofan-comment-reply(回评论)不用改一行就能覆盖复盘视频。文件夹一律扁平放 $WORKSPACE/ 下,不建品类子目录——品类靠 视频基础信息.md 元信息头里的 品类: 每日复盘 字段区分。
归档铁律:本技能抓的所有数据都落到 $DIR/参考资料/抓取数据/,不写 /tmp;同名文件已存在就加后缀留档,别覆盖前一轮。
第一步:并行抓当日数据
四件事并行跑起来省时间(日更就靠这里省时间,不靠砍决策点):
- 主 agent 跑
market_snapshot.py → 盘面全景。
- 主 agent 跑
xueqiu_hot_stocks.py --top 30 → 人气/涨幅/跌幅/成交额四榜,找当日异动主角。
- 主 agent 跑
web_search.py,查询必须带当天日期,一次多条并行:当日收盘综述、涨停/跌停原因、当日财报、政策消息、隔夜美股与海外事件。
- 派子 agent 抓+消化雪球热帖,只回传摘要(原始 JSON 几万字,直接读会挤爆写稿空间;派单指令见
$DESK/references/data-fetching.md)。定位到当日异动主角后,抓那只票的热帖最有料。
数据准确性是第一红线(关系观众真金白银):
- 指数、成交额、涨跌家数以
market_snapshot.py 当日返回为准;个股股价/市值/PE 以 xueqiu_quote.py 为准。不要用搜索结果或记忆里的数字覆盖接口返回值。
- 搜非实时信息务必带当前日期,确保拿到当天的。
- 涨跌原因这类归因,必须有当日信源(公告/权威媒体/研报),搜不到就如实说"市场普遍归因于……,但没有正式披露",不编。
- 拿不到的数字标"未获取到",宁可不讲。
第二步:产出 3 个主线候选 + 快评清单
先读 references/mainline-selection.md——它是主线选择的完整判断逻辑(A 异动归因型 / B 分析框架型的选择、四道筛子、快评取舍标准、以及"持仓相关性"这个第一筛)。
产出格式:3 个候选,每个标明走 A 还是 B、一句话钩子、支撑数据(必须是真抓到的)、为什么和观众持仓有关;再附同批推荐的 3-5 条快评清单。给完用一句话邀请用户选,然后停下来。
若 参考资料/ 里已有用户丢进来的资料,先通读再定主线——用户主动搜的往往就是他想讲的方向。
阶段二:写稿 + 独立终审
用户选定主线后,产出口播稿、标题、终审记录,写进 视频基础信息.md,然后停下等用户确认最终标题。
1. 口播稿
写稿前先补一轮搜索:阶段一的搜索颗粒度偏粗,选定主线后围绕这条主线再跑一轮更有针对性的 web_search.py,把归因写扎实。涉及个股就重跑 xueqiu_quote.py 核对当日行情。
读 references/review-structure.md——复盘品类口播稿的完整方法论(固定骨架、hook 取材、快评写法、情绪段写法、留存设计)。核心要点:
- 固定骨架:hook(前 5 秒)→ 子栏目品牌锚 → 大盘三句话 → 主线深挖 2.5-3.5 分钟 → 3-5 条编号快评(各 40-60 秒)→ 结尾情绪段(40-60 秒)→ 价值锚 + 风险提示 + 互动。
- 5-8 分钟,约 1500-2400 字,口语化能直接念。
- 首句必须含一个具体锚(公司名,或"板块名+数字"),绝不能只有"今天大盘"这类泛指词——首句会变成自动字幕、是搜索推荐匹配的第一手素材。
- 结构性优势要用足:复盘天然就是留存单元制(大盘/主线/每条快评各自成立),快评是天然的留存引信,这正好补账号最大的短板(中段流失)。但快评绝不能写成流水账念稿。
- 零结构标注 + 中文全角标点:成稿只留能直接念的纯正文,不要【】小标题、时间轴、分镜提示(TTS/花生会一起念出来)。
- 数字写法:阿拉伯数字 + 四舍五入到顺口量级(念"2.1 万亿"不念"2.1017 万亿",念"2800 只上涨"不念"2796 只")。
- 合规收尾:结尾必须有风险提示 + 互动引导。
写稿过程中缺一块料就当场补搜,别硬编——出现"这个数我不确定""这个归因我记不清"就立刻跑一次搜索核实了再往下写。
2. 标题
读 references/review-titles-covers.md,产出 3 个精华候选,20 字以内,标推荐指数。复盘品类的标题坑:不要写成"8月28日复盘"这类日期流水账(零信息缺口、零情绪),要从当日最锋利的那个反差/归因里长出来。
3. 独立终审(强制关卡)
稿子和标题齐了之后,必须起一个独立审核子 agent 走 references/review-check.md 的终审,喂给它五样输入:定稿全文 + 受众画像 + 当日盘面数据 + huasheng.md 第八节流量认知 + 本技能的复盘专属红线。
只认逐条核查结果,不认"已检查、合规"这类自评断言。前三层不过就打回重写、改完重审,拿到 PASS 才继续。把 PASS 判决写进 视频基础信息.md 的终审记录小节。
复盘品类的终审有两条个股稿没有的硬门禁:不预测指数点位/大盘方向、板块只做归因不做配置建议。详见 review-check.md。
阶段二收尾
口播稿、3 个候选标题、终审 PASS 都写进 视频基础信息.md 后停下来,邀请用户确认最终标题。
若用户改选了另一个标题,必须同步回改开头 hook 让开头兑现新标题(铁律)——标题和开头永远绑定。
阶段三:封面(标题定稿后)
用户确认标题后,以该标题为封面大字方向,用 $DESK/scripts/generate_cover.py 生成 B站 4:3 + 抖音 3:4 两版:
python3 "$DESK/scripts/generate_cover.py" \
--platform bilibili \
--prompt "封面画面描述" \
--output "$WORKSPACE/<日期>_复盘_<最终标题>/封面/<最终标题>_bilibili.png"
复盘子栏目沿用账号的严肃财经调查风主色板(墨黑/炭灰+暖金、极粗黑体、真实物件+颗粒质感),但有自己的固定模板:固定位置的日期条 + 当日最硬的那个数字锤。日更靠这套固定排布攒系列识别度,别每期即兴换审美。完整模板与提示词方法论见 references/review-titles-covers.md。
硬规则(继承账号封面基因,横评数据实锤):封面实锤必须是具体数字,不是抽象意象(账号唯一崩掉的封面就是用抽象意象替代数字锤)。定封面时问一句:"观众 0.5 秒能读到一个具体数字吗?"
没设 LLM_GATEWAY_API_KEY 就提醒用户,别卡住流程——可先把提示词写好交付。
阶段四:分镜规划(封面后自动跑)
把定稿口播稿翻译成花生 AI 能吃的 storyboard_plan.md。直接用 $DESK/references/storyboard-plan.md 的「独立入口 / 无封面降级」路径(它已内建这条路径,无需为复盘另写一套分镜方法论),派子 agent 去做(重推理长输出,隔离保护主线程),子 agent 自己去读那份 reference。
铁律:分镜只能从口播稿原文「切」,绝不能改、增、删一个字或标点(花生逐字照念)。素材禁忌照抄现有硬规则——不检索 K 线图/个股行情图、不把具体股价数字当检索素材,走势涨跌一律改由 MG 动画绘制。
复盘稿的分镜有个特点值得利用:编号快评天然对应独立场景批次,每条快评就是一个素材检索批次,比个股稿的连续论证更好切。
产出后在 视频基础信息.md 补「五、分镜规划」指针小节。
统一输出文档
阶段二/三的产出汇总写进 $DIR/视频基础信息.md,让用户一次性复制粘贴,不要拆成好几条对话消息发。
# 视频基础信息 · <日期>复盘
## 元信息
- 平台: 抖音(蛋炒饭财经,B站/小红书/视频号并行分发)
- 品类: 每日复盘 ← 横切工具靠这个字段区分品类
- 交易日: <YYYY-MM-DD>
- 主线类型: A 异动归因 / B 分析框架
- 主线: <一句话>
- 最终标题: <最终标题>
- 标题状态: ✅ 已确认 / ⚠️ 待最终确认
- 发布日期: 待填
- 视频链接: 待填
- 创作后台链接(各平台,复盘更新数据用):
- 抖音: 待填
- B站: 待填
- 小红书: 待填
- 快手: 待填
- 视频号: 待填
- 封面文件: 见同目录 `封面/`
- 发布后数据: 见同目录 `数据/`
---
## 一、当日盘面速览
(指数涨跌幅、两市成交额、涨跌家数、涨跌停、行业与题材领涨领跌。标注哪些是精确值、哪些是抽样近似)
## 二、口播稿
(完整口播稿正文,零标注纯正文)
## 三、爆款标题(3个精华候选)
(标题列表 + 推荐指数,最终选定的标注「✅ 最终采用」)
## 四、终审记录(独立终审 PASS 判决)
(逐条核查结论与 PASS 判决原文;曾打回的简述改了什么)
## 五、投稿前流量预测
(三段自评 + 落档预测 + 短板;复盘品类基准线尚未积累,前几期只做定性预测)
## 六、封面(标题确认后生成)
### B站版(4:3) / 抖音版(3:4)
- 采用标题 / 封面提示词 / 成图路径
## 七、分镜规划(花生 AI)
- 分镜规划书:storyboard_plan.md(<场景数>场景 / <分镜数>分镜 / 总 MG 占比 <X%>)
工作台归档规范
产出以视频为单位扁平归档在 $WORKSPACE/ 下,命名 <交易日>_复盘_<最终标题>:
workspace/
├── huasheng.md # 账号级 Memory,开工前先读
├── 账号数据/ · reports/ # 账号级数据与复盘报告
└── <交易日>_复盘_<最终标题>/
├── 视频基础信息.md
├── storyboard_plan.md
├── 参考资料/
│ ├── 参考资料.md # 用户丢进来的素材
│ ├── 雪球热帖-摘要.md # 子 agent 消化后的摘要
│ └── 抓取数据/ # market_snapshot.json 等原始 JSON,备查不精读
├── 数据/(+ 数据_raw/) # 发布后各平台稿件数据
└── 封面/
硬规则:文件夹名带交易日前缀 + 同名即新建绝不覆盖。 日期先跑 date +%F 取,别凭记忆写。文件夹在阶段一先用 provisional 名 <交易日>_复盘_待定,阶段二用户定标题后改成 <交易日>_复盘_<最终标题>。
发布后数据抓取走 danchaofan-data-tracker 技能(脚本和 cookie 在那边,数据写回 $WORKSPACE/)。用户给出创作者后台数据页链接时,第一件事是回填进 视频基础信息.md 的 创作后台链接 块——那是 data-tracker 后续读 --url 的入口。
合规红线(不可省略)
完全继承账号红线(huasheng.md 第七节 + 创作 skill 的「荐股红线」专节):不给具体买卖点位/目标价/止盈止损价,不给分人群操作指令,不转述研报目标价,不做保证性承诺(必涨/稳赚/闭眼买/安全边际/确定性机会),正文不出现股票代码,结尾必带风险提示。
复盘品类额外两条(本产线最容易踩,参考号天天踩):
- 不预测指数点位、不给大盘方向断言。❌"下周要反弹到 4100 点""这里就是底部了""量能见底了要起来了"。✅ 改成该盯的信号:"成交额能不能在 2 万亿上方站住、融资余额回不回来,这两个没看清之前我不下结论。"
大盘方向断言比个股荐股更隐蔽但同样危险——它没点名个股,却在给全体观众一个可执行的方向指令。
- 板块只做归因,不做配置建议。两个参考号的公众号里"农牧渔 ETF 值得关注""电力 ETF 适合小白关注""搭配网格策略使用"这类写法,是我们明确要避开的部分,一句都不能抄。讲清"今天这个板块为什么涨"是内容;说"所以你该配这个 ETF"是荐股。
参考文档是内容结构的参考,不是合规尺度的参考。抄骨架,不抄这个。
情绪段的红线:不做未坐实的负面定性("某公司造假""某人跑路"没有权威信源坐实就只能写成"有投资者质疑")、不碰敏感政治议题、不传谣当真。落点回到"和咱们散户的钱有什么关系"。
一句话把握:帮观众看懂今天为什么这样、该盯什么,是内容;替观众判断明天怎么走、该买什么,是荐股。 我们只做前者。
快速参考
本技能 reference(按需调阅,别一次性全读):
借用 $DESK 的(不复制,直接读):references/data-fetching.md(采集脚本手册)、references/banned-words.md(AI 味词表)、references/storyboard-plan.md(分镜,走独立入口)。
脚本:scripts/market_snapshot.py(当日盘面快照)+ scripts/bk_codes.json(板块代码缓存,--refresh-bk 更新)。