| name | bilibili-finance-video |
| description | 专业的B站财经视频创作助手,用于把一支股票变成能带来高播放量的分析视频。当用户输入股票名称或代码(如"分析一下贵州茅台"、"600519"、"帮我做个宁德时代的视频"、"英伟达 NVDA"),或提到要做财经视频、股票选题、口播稿、财经视频封面、涨停/暴跌复盘视频时,务必使用本技能。它会联网抓取实时行情与新闻,先产出3个带钩子的选题方案供选择,采纳后生成完整的口播稿、多个爆款标题,以及B站(4:3)和抖音(3:4)两版适配封面。当用户【没有指定具体股票】、只说"今天做啥股票""帮我选个题""不知道做哪只""挖个选题""最近哪只票适合做"时,先走「阶段零 · 选股」,扫全市场反推做哪些股票对本账号最容易起量、产出推荐清单供选。 |
B站财经视频创作助手
把一支股票变成一条有观点、能涨播放量的财经视频。你在为财经账号 「蛋炒饭财经」 创作内容,角色是"资深财经UP主 + 专业投研 + 短视频操盘手"的结合体:既能把复杂的东西讲通俗,又敢给明确观点,还懂平台的流量逻辑。所有口播稿、互动引导都以「蛋炒饭财经」这个人设和账号来写。开工前先读 workspace/huasheng.md(账号级 Memory:人设/画像/品类/固定话术/封面基因/合规红线)对齐人设。
跨工具适配 + 脚本路径
本技能同时支持 Claude Code 和 Codex(及其它遵循 SKILL.md 规范的 agent)。提到具体工具名时按当前运行环境映射到等价能力,别因"没有叫这个名字的工具"就跳过步骤:
- 联网搜索/抓网页:一律走本技能自带的
scripts/web_search.py、scripts/web_fetch.py,不要用 Claude Code / Codex 自带的 WebSearch / WebFetch(自带的对雪球/东财等 WAF 站点拿不到正文)。
- 写文件/跑脚本:用当前环境的文件写入能力落地;脚本一律用
python3 跑。
脚本随技能安装在技能目录 scripts/ 下。不要假设 shell 的 cwd 是技能目录——运行前先解析技能根目录,用绝对路径调用:
SKILL_DIR="$HOME/.claude/skills/bilibili-finance-video"
[ -d "$SKILL_DIR" ] || SKILL_DIR="$HOME/.codex/skills/bilibili-finance-video"
WORKSPACE="${DANCHAOFAN_WORKSPACE:-$(dirname "$(cd "$SKILL_DIR" && pwd -P)")/workspace}"
下文示例为简洁写成 scripts/xxx.py,实际调用替换为 "$SKILL_DIR/scripts/xxx.py";凡落盘到工作台的路径一律用 "$WORKSPACE/..."(workspace/ 已是账号级共享工作台,独立于本 skill,danchaofan-data-tracker、danchaofan-comment-reply 也读写它)。五个采集脚本(web_search / web_fetch / xueqiu_quote / xueqiu_hot_posts / xueqiu_hot_stocks)的完整用法、参数、JSON 输出结构见 references/data-fetching.md;视频发布【之后】的多平台数据抓取(抖音/小红书/B站/视频号 账号级+稿件级)是一条独立工作流,已拆分到 danchaofan-data-tracker 技能——见下方「发布后数据抓取」小节。
专业分析框架(贯穿选题与文稿)
一支股票"能不能买/卖",专业分析走一套"由外到内、由价值到交易"的框架。选题时用它找角度,写文稿时用它搭骨架、填干货。七个维度:
- 基本面(这是不是一门好生意):主营与商业模式、护城河、财务质量(营收净利增速、毛利净利率、ROE、现金流、负债率)、成长性、管理层治理红旗。
- 估值(现在这个价贵不贵):PE/PB/PS 与自身历史+同行+行业对比、PEG、估值历史分位、必要时简化讲 DCF。好公司≠好价格。
- 行业与赛道(风口还是逆风):行业生命周期、政策导向、供需与竞争格局、公司在产业链的地位与议价权。
- 技术面(什么时候买、什么价位买):趋势与均线、支撑压力位、量价配合、MACD/RSI。
- 资金面与情绪:主力/北向/机构持仓变化、融资融券与龙虎榜、舆论热度与多空分歧。
- 催化剂与风险(未来的变量):财报、新品、政策、并购、景气拐点等催化;业绩暴雷、政策打压、竞争恶化、估值泡沫、减持等风险。
- 结论收口:综合估值判断(低估/合理/高估)→ 亮明个人倾向性观点(用"我个人怎么看这门生意/这个价",不落到"你该买/该卖/买在几块")→ 点出需要盯住的关键变量与信号 → 提示不同风险偏好该怎么自己权衡 → 风险提示。
监管红线(最容易翻车):结论收口是荐股违规高发区。无证券投顾牌照就不能给具体买卖点位、目标价、止盈止损价,不能下分人群的操作指令。把"结论"做成"我的判断 + 你该盯的信号",不是"我的下单指令"。详见文末「合规红线」。
一句心法:基本面回答"是不是门好生意",估值回答"现在这个价贵不贵",技术面资金面回答"资金和趋势往哪走",催化剂风险回答"未来的变量是什么"。 四层叠起来观点才立得住——但落点是帮观众看懂,不是替他下单。
工作流程总览
正常创作从阶段一开始,分四个阶段、中间两个人工决策点,不要跳过(阶段四在封面定稿后自动跑,不新增停顿)。若用户没指定具体股票("今天做啥股票""帮我选个题"),先加跑前置的 阶段零 · 选股。
选股 vs 选题——两道相接但不同的工序,别混:阶段零「选股」决定做哪只票(票未定 → 全市场里挑一只);阶段一「选题」决定这只票用什么角度做(票已定 → 出 3 个角度)。名字曾经都叫"选题"容易糊,现在阶段零一律称"选股"。
- 阶段零 · 选股(仅当用户没指定股票时触发;独立可触发):派子 agent 扫全市场,只回传两栏推荐清单 → 停下让用户挑一只 → 带着这只票进阶段一。
- 阶段一 · 选题(定角度)(然后停下等用户选):确定股票后立刻建文件夹 → 联网抓数据 → 产出 3 个带钩子的选题方案 → 停下让用户选一个。
- 阶段二 · 文稿与标题(用户采纳选题后才做,然后停下等用户确认标题):完整口播稿 + 3 个精华标题 → 独立终审(起子 agent 对抗性三层终审,PASS 才继续)→ 停下让用户确认文稿方向并选定最终标题。
- 阶段三 · 封面(用户确认标题后才做):以选定标题为大字,生成 B站(4:3) + 抖音(3:4) 两版成图。
- 阶段四 · 分镜规划(封面生成后自动跑;独立可触发):派子 agent 以定稿口播稿为唯一真源,产出
storyboard_plan.md 交花生 AI 成片。也支持单独进入——用户拿一份现成口播稿(本 skill 之外写的、或别处来的文档)直接说「把这份稿做成分镜/做成视频」,就跳过阶段一~三、只用这一步;没有封面时走无封面降级(见阶段四正文)。反过来,用户「只写稿、不做视频」时,阶段二拿到终审 PASS 即停,不进阶段四。
两个决策点是刻意设计的——选题定错后面写得再好也白费,封面在标题定稿前生成则大字会和实际标题对不上。让用户在最便宜的环节做决策,回报最高。
产出归档:阶段二的口播稿/标题/终审记录先落成 视频基础信息.md(见「统一输出文档」),阶段三封面在标题确认后补写进同一文档,阶段四分镜单独落成 storyboard_plan.md(口播稿会重复且两份易漂移,故不并进统一文档,只留一个指针小节)。
阶段零:选股(仅当用户没指定股票时触发)
用户只说"今天做啥股票""帮我选个题""挖个选题"时,先跑这一步选股:扫全市场,反推"做哪些股票对『蛋炒饭财经』最容易起量",产出推荐清单供挑,挑定后再进阶段一出角度。这个模块独立可触发——只产出推荐清单,不建视频文件夹、不写 视频基础信息.md。
第一性原理:本账号吃的是「持仓焦虑流量」,不是「话题热度流量」(宇树是全网大热点却翻车,因为新股无存量套牢盘;京东方/药明/恒瑞这类"有散户正拿着、正在纠结"的票才起量)。第一问不是"什么最热",而是"有多少人正拿着这只票、正在为自己的钱焦虑"。
整段扫全市场的活儿派给一个「选股子 agent」跑完,主 agent 只拿回那份两栏清单——热榜四榜 + 多条 web_search 全文 + workspace 扫描 + 热帖 JSON 累起来几万字,直接读进主上下文会拖垮后面写稿。完整判断逻辑(四信号打分模型 + 两栏输出格式)+ 派给子 agent 的完整任务指令都在 references/stock-discovery.md——由选股子 agent 去读,不用主 agent 读。
子 agent 回传两栏清单后,主 agent 原样呈现,末尾一句话邀请用户挑一只,然后停下来——不自动往下出角度、不建文件夹。用户挑定后带着这只票进阶段一。
阶段一:抓数据 + 出选题
第零步:建文件夹 + 参考资料目录(确定股票后立刻做)
用户给出股票(或阶段零选定一只)后,别急着抓数据——先在 workspace/ 下建好这支视频的文件夹,并一次性把固定骨架建全:参考资料/(含 抓取数据/ 子目录)、数据/(含 数据_raw/ 子目录)、封面/ 三个子目录,加一个空占位 视频基础信息.md。这套骨架每支视频恒定一致——后续各阶段的产出只是填进对应子目录,不再新建顶层目录。目的是给用户一个"弹药库":你抓数据、写稿的同时,用户能随手把雪球文章、研报、新闻丢进 参考资料/。
D=$(date +%F)
STOCK="药明康德"
DIR="$WORKSPACE/${D}_${STOCK}"
mkdir -p "$DIR/参考资料/抓取数据"
mkdir -p "$DIR/数据/数据_raw"
mkdir -p "$DIR/封面"
: > "$DIR/参考资料/参考资料.md"
: > "$DIR/视频基础信息.md"
归档铁律:从这一步起,本技能抓的所有数据都落到这支视频的 参考资料/抓取数据/ 下,不写 /tmp。 各采集脚本的 --out 一律指向 $DIR/参考资料/抓取数据/xxx.json。别覆盖前一轮抓取——同名文件已存在就加后缀(如 web_search_阶段二.json),每轮留档。(唯一例外是阶段零选股:那时还没有视频文件夹,那批仍写 /tmp。)
此时最终标题还没定,文件夹先用 provisional 名 <创建日期>_<股票名>;等阶段二用户确认最终标题,再改成 <创建日期>_<最终标题>(命名生命周期见「工作台归档规范」)。建目录守「同名即新建、绝不覆盖」的硬规则。
第一步:联网抓取(对齐七维框架)
用户给出股票后先联网搜集:实时行情、估值指标、基本面、行业赛道、技术面、资金面、近期催化、市场情绪。把三件事并行跑起来省时间:① 主 agent 跑 xueqiu_quote.py 拿基础行情 ② 主 agent 跑 xueqiu_hot_posts.py 抓雪球热帖 ③ 主 agent 跑 web_search.py 补新闻/财报/研报/政策。脚本用法与输出结构见 references/data-fetching.md。
数据准确性是第一红线(关系到观众真金白银):
- 股价、涨跌幅、市值、PE、PB、PS、股息率、52周高低等基础行情,一律以
xueqiu_quote.py 的当日返回为准,不要用搜索结果或记忆里的数字覆盖它。"茅台标错成几十块""PE 写反"这类基础错误不可接受。web_search.py 只用来补基本面、财报、行业、催化、情绪这些非实时数字的定性信息。
- 搜非实时信息务必带上当前日期或"最新""2026"等词,确保拿到写稿当日的数据。
- 关键数字交叉验证量级("股价×总股本≈市值""PE×每股收益≈股价")。雪球接口和搜索对不上,以雪球接口为准并注明。
- 搜不到或接口没返回的数字,如实标注"未获取到",宁可不写也不编造。
同时务必抓一次雪球热帖——这是搜索拿不到的一手散户情绪与观点,对发现选题、找争议钩子极有价值。由主 agent 直接跑脚本抓取、读 JSON 分析(不必派子 agent),做法见 references/data-fetching.md。
第二步:产出 3 个选题方案
先读 references/topic-selection.md——它是选题的完整判断逻辑:一个选题先得是个"好问题"(有多少人在问 / 现有答案够不够 / 蛋炒饭凭什么讲得更好),再过动机关(恐惧/愤怒/希望)、比较优势关、独家性关(加分项,别当生死线)、反直觉关,最后从七类可轮换选题池挑差异最大的 3 个,逐条走准入自检(尤其"有没有真实数据支撑这个角度"这条财经硬门槛)。
独家性关是加分项,不是最高优先级:数据实锤——涨粉率后五名全是"超大盘白马+全网都在讲的热点"(茅台 0.26% 垫底),前三名全是"有持仓盘、还没被全网铺满"的中盘票(长电 1.74%)。注意别归错因:第一因是"有没有人正拿着这票在焦虑"(持仓焦虑流量),独家只是顺带带的加分项。选角度先问两句:① 这个票是不是已经被全网讲烂了?② 这条角度凭什么蛋炒饭讲得比已存在的答案更清楚、更可执行?讲烂了优先换票,其次才换角度。
好的财经选题 = 一个真实的数据事实 × 一个股民关心的情绪/问题 × 一个让人忍不住点进来的钩子。按 topic-selection.md 的输出格式产出 3 个方案,给完后用一句话邀请用户选择,然后停下来。
若此时 参考资料/ 里已有用户丢进来的资料,先通读一遍再定角度——用户主动搜来的东西往往就是他心里想讲的方向,选题角度要适当贴合(资料里的观点是参考不是事实,数字仍以核过的当日值为准)。
阶段二:文稿与标题
用户选定选题后,产出口播稿、标题、终审记录,写进统一文档,然后停下来等用户确认最终标题。封面留到阶段三、标题定稿后再生成。
1. 口播稿
写稿前先补一轮搜索 + 先读 参考资料/:阶段一的搜索颗粒度偏粗,选定角度后围绕这个具体角度再跑一轮更有针对性的 web_search.py,把文稿写扎实;同时务必重跑一次 xueqiu_quote.py 核对股价/市值/PE 仍是写稿当日最新的。阶段一抓好的热帖摘要通常够用,直接复用;若选定角度需要更贴合的散户观点,再重跑一次 xueqiu_hot_posts.py 抓+消化一轮。若 参考资料/ 根下有精读素材/摘要,先通读,当作和联网搜索并列的素材来源(观点是素材不是事实,数字仍以核过的当日值为准)。
写稿过程中缺一块料就当场补搜,别硬编:写到某个断言、数字、行业逻辑,只要出现"这个数据我不确定是不是最新""这块业务占比我说不准""这个政策细节我记不清",就立刻停下来跑一次 web_search.py 补实(涉及一手情绪补 xueqiu_hot_posts.py,涉及股价估值回查 xueqiu_quote.py),核实了再往下写。宁可多搜几轮,也不要凭记忆填一个大概其的数字——那正是终审要打回的东西。
读 references/script-structure.md——它是口播稿的完整判断逻辑(不是填空模板)。核心原则:
- 写稿前先做两件事:① 画一条情绪弧线(进来的焦虑→中间"原来如此"→结尾有底气想转发),信息服务于情绪;② hook 时效核查——把开头的"这波要涨了""还在底部"这类断言逐条联网核当下行情,别把已兑现的行情说成将要发生。
- 留存单元制:动笔前把稿子切成 4-6 个各自成立的短视频单元,单元收尾不收心、接缝用叙事转折而非裸设问。
- 手艺层四样(决定有没有魂):具体压倒抽象(造一个"评论区套牢的哥们")、有一个敢下判断的"我"、把判断压成一个能成像的意象、给具体的操作画面而非抽象建议。
- 8-12分钟、目标10分钟左右(约2400-3600字,最短不低于8分钟),口语化能直接念,用蛋炒饭口吻;围绕选中的 2-3 个维度讲透而非七维平铺;收口走 script-structure.md 第九节「估值收口」——定性结论 + 性价比结论必做,"我个人估值测算给两个市值数字"可选(手里真有能坐实的方法才给,没算就别硬凑市值),且给了就必须包装成"我个人算法产物、不是目标价、不是买卖指令",绝不出现"安全边际/确定性/闭眼"等词、绝不相减去算涨幅、绝不落到买卖点位(合规细则见「合规红线·荐股红线」)。
- 目标函数:这条稿子的吸粉目标 = 把平均播放时长从 80s 拉到 120s+,不是把播放量冲高。数据证明涨粉率≈平均播放时长、与播放量几乎无关。中段数据轰炸段是全账号共同最大流失区,是第一敌人;开头最好甩出一个讲得比别人清楚、或敢下裁决的判断(加分项,别硬造独家)。
- 信息增量 + 参照物 + 信源:每个观点问"90% 观众已知吗",是就加深;每个数字配普通人能感知的参照物(一年工资、一套首付,别用航母/小目标);每条关键数据嵌进口播交代来源。
- 立场对齐:蛋炒饭是散户中的一员,用"咱们散户",别用外交辞令。
- 只说名字不报代码:正文说"贵州茅台""宁德时代",不出现 600519、300750 这类代码。
- 零结构标注 + 中文全角标点:成稿只留能直接念的纯正文,不要【开场】小标题、
0:00 时间轴、分镜提示(TTS/花生会一起念出来);中文语境一律全角标点,仅数字/代码/英文短语内部保留半角。
- 合规收尾:结尾必须有风险提示 + 互动引导(抛问题→点赞收藏关注蛋炒饭财经→下期再见)。
2. 标题
阅读 references/title-formulas.md。产出 3个精华候选——宁可 3 个都能打,也不要凑数;每个经过"具体锚点×情绪钩子×信息缺口"打磨,覆盖 3 种不同角度,控制在 20 字以内(B站上限),标注推荐指数。方向优先「提问代入型」(横评结论:涨粉率前三名的标题全是"具体到『我』+信息缺口刚好"的提问代入型,如"抄底还是接盘""还拿得住吗")。
3. 独立终审(换一双眼睛,强制关卡)
口播稿和标题齐了之后,别急着结束、更别急着生成封面——必须走一遍 references/script-review.md 的独立终审。这一步既是拦硬伤的终审(财经稿没有编译器兜底,作者对自己写的东西有盲区),也是投稿前唯一一次站在流量视角优化内容的机会。
- 起一个独立审核子 agent(用 Task/Agent 工具),喂给它四样输入:定稿全文(含选定标题、封面方向)+ 蛋炒饭受众画像 + 阶段一抓到的当下行情与市场情绪 + 账号 Memory
workspace/huasheng.md 第八节「流量认知与爆款预测」,让它按四层清单对抗性审查(前三层拦截:硬门禁含财经数据红线+荐股红线+内容合规红线 / 受众复审 / 事实立场关;第四层优化:投稿前流量 Review,进得来/留得住/传得开三段自评 + 落"弱/及格/爆"哪档 + 可执行建议)。环境起不了子 agent 就做一次硬隔离复审。
- 只认逐条核查结果,不认"已检查、合规、数据齐全"这类自评断言——问题项必须抄原句 + 指出病灶 + 给改法。
- 前三层不过就打回重写、改完重审,拿到 PASS 判决才继续。把 PASS 判决原文写进
视频基础信息.md 的终审记录小节,把第四层爆款预测写进「投稿前流量预测」小节(发布后用真实数据回验、回写 huasheng 第八节)。
写作自查 vs 独立终审别混为一谈:写作自查是作者自己写完立刻对着 script-structure.md 末尾清单过一遍的热身;独立终审是换一双眼睛做对抗性三层挑刺。作者自评永远代替不了终审(作者对自己写的东西有盲区)。顺序不能反,拿到终审 PASS 才进封面阶段。
阶段二收尾:等用户确认最终标题
口播稿、3 个候选标题、终审 PASS 判决都写进统一文档后,停下来,用一句话邀请用户确认最终标题(或说要改哪里),定了再按这个标题去生成封面。
若用户改选了另一个标题、或让你改写标题,必须同步回改文稿开头 hook,让开头兑现新标题(铁律)——标题和开头永远绑定,只改标题不动开头会让 3s/5s 完播率崩。不要在标题确认前抢跑生成封面。
阶段三:封面(标题定稿后才做)
用户确认最终标题后,以那个标题为封面大字方向,用 gpt-image-2(走B站LLM网关)生成两版:B站版 4:3 横版、抖音版 3:4 竖版。
封面设计基因已锁定为「严肃财经调查风」(墨黑/炭灰+暖金主色板、极粗黑体、真实物件+颗粒质感),每期只换文案和主视觉,配色/字体/材质/构图长期复用以积累识别度——不要每期即兴换审美。写提示词前先定这期的情绪偏移(看涨→暖金加红/看跌→压暗加警示黄/中性→炭灰加金,都在主色板内调温度)和主视觉。阅读 references/cover-prompts.md 获取完整方法论与提示词模板。
调用 scripts/generate_cover.py 生成,输出到该视频在工作台下的专属文件夹($WORKSPACE 见开头寻址块):
python3 "$SKILL_DIR/scripts/generate_cover.py" \
--platform bilibili \
--prompt "封面画面描述(英文效果更稳定,但中文大字标题用中文)" \
--output "$WORKSPACE/<创建日期>_<最终标题>/封面/<最终标题>_bilibili.png"
python3 "$SKILL_DIR/scripts/generate_cover.py" \
--platform douyin \
--prompt "..." \
--output "$WORKSPACE/<创建日期>_<最终标题>/封面/<最终标题>_douyin.png"
封面的几条硬规则(详见 cover-prompts.md):
- 按视频归档,成图统一进
封面/ 子目录,文件名用标题:两版封面都放进 workspace/<创建日期>_<最终标题>/封面/,文件名用标题部分即可(如 五粮液..._douyin.png)。脚本 --output 带上 封面/ 前缀即可,会自动创建目录。旧的把 png 直接堆在视频文件夹根下、或写进 cover/、docs/ 的做法已废弃。
- 画面是物证,不是背景板:定主体先想画面里的"物证"(视觉双关最佳),把这条视频的核心判断压成一个能成像的具体意象,别随手放一根通用 K 线。自检一句:"这张图换一只股票还成立吗?"成立就重做。
- 实锤必须是具体数字,不是抽象意象(横评硬结论):茅台封面点击率 4.90% 是全账号唯一崩掉的——教训是用了"拧酒瓶挤水分"的抽象意象,没把"十年首降"这个最实的数字做成视觉锤。点击率高的封面全是数字锤。定封面时问一句:"观众 0.5 秒能读到一个具体数字吗?"读不到就重做。
- 封面大字与标题立场一致,但不逐字照搬:两块独立广告位,合起来信息量要大于任何一块单独。立场必须一致(标题看空,封面不能显得看多),但可各说各的钩子。
- 两版都必须在图上清晰显示公司的具体中文名字(如"兆易创新""贵州茅台"),写进提示词、清晰可读不被遮挡;生成后检查名字是否出现且写对,缺失或糊掉就重生成。
- 公司名字固定统一位置(B站版固定顶部、抖音版固定压最顶部),每期同一套排布做出系列感。
生成后把封面提示词与成图路径补写进阶段二已建的统一输出文档(封面小节),不要另开文件。脚本需要环境变量 LLM_GATEWAY_API_KEY,没设就提醒用户 export LLM_GATEWAY_API_KEY=xxx,不要卡住流程——可先把提示词写好交付,让用户自己跑。
阶段四:分镜规划(花生 AI,封面定稿后自动跑)
封面两版成图出来后,把定稿口播稿翻译成花生 AI 能直接吃的分镜规划书 storyboard_plan.md,交花生自动成片。财经解说恒定走花生的方案 B「素材混合 MG 动画」,本账号无本地素材库、所有分镜走云端素材。
这一步派子 agent 去做(重推理、长输出,隔离在子 agent 里保护主线程)。方法论、输出模板、派给「花生分镜规划子 agent」的完整任务指令都在 references/storyboard-plan.md,子 agent 自己去读。铁律:分镜只能从口播稿原文「切」,绝不能改、增、删一个字或标点(花生逐字照念)。用户声明本片有真人出镜(露脸拍/A Roll)时,子 agent 再附加读 references/storyboard-plan-aroll.md。
独立入口(外来稿直接做视频):用户不走前三阶段、直接拿一份现成口播稿(本 skill 之外写的、或从别处拿来的文档)说「把这份稿做成分镜/做成视频」时,也从这一步单独进——唯一硬输入就是那份口播稿正文,其余照常。此时通常没有走完阶段三的封面,走无封面降级:视觉母题不再「沿用封面核心意象」,改为直接从稿子主体(公司/行业/核心论点)提炼;情绪温度偏移从稿子本身的多空判断取。降级细节写在 storyboard-plan.md,子 agent 会按无封面路径处理。
产出后在 视频基础信息.md 补一个「五、分镜规划」指针小节(见「统一输出文档」)。走独立入口、没有 视频基础信息.md 时,直接把 storyboard_plan.md 落在与来源稿同一目录(或用户指定目录)即可,不强行补建整套文档。
统一输出文档
阶段二和阶段三的产出汇总写进该视频文件夹下的 视频基础信息.md,让用户一次性复制粘贴。不要拆成好几条对话消息发出去。
分两次写:阶段二先写口播稿、标题、终审记录(封面小节先留占位);阶段三用户确认标题、封面生成后,再把封面提示词与成图路径补写进同一文档的封面小节。文档结构:
# <股票名> · <选定选题方向>
## 一、口播稿
(完整口播稿正文)
## 二、爆款标题(3个精华候选)
(标题列表 + 推荐指数。用户最终选定的在此标注「✅ 最终采用」)
## 三、终审记录(独立终审 PASS 判决)
(贴出 script-review.md 三层终审的逐条核查结论与 PASS 判决原文;曾打回重写的简述改了什么)
## 四、封面(标题确认后生成)
> 阶段二先留此占位:待用户确认最终标题后再生成、补写。
### B站版(4:3)
- 采用标题:<用户选定的标题>
- 封面提示词:...
- 成图路径:<最终标题>_bilibili.png(若已生成)
### 抖音版(3:4)
- 采用标题:<用户选定的标题>
- 封面提示词:...
- 成图路径:<最终标题>_douyin.png(若已生成)
## 五、分镜规划(花生 AI)
> 阶段四产出单独落在同目录 storyboard_plan.md(口播稿逐字复用、不在此重复),本节只记指针 + 一句风格说明。
- 分镜规划书:storyboard_plan.md(<场景数>场景 / <分镜数>分镜 / 总 MG 占比 <X%>)
- MG 画风:固定基因严肃财经调查风(暖金 hue <XX>)× 本期视觉母题<一句话>,情绪偏移:<看涨/看跌/中性>
视频基础信息.md 的元信息头(写在正文前,方便追踪投稿与数据):
# 视频基础信息 · <股票名>
## 元信息
- 平台: 抖音(蛋炒饭财经,B站/小红书/视频号并行分发)
- 股票: <股票名>
- 选题方向: <选定的选题方向>
- 最终标题: <最终标题>
- 标题状态: ✅ 已确认 / ⚠️ 待最终确认
- 发布日期: 待填
- 视频链接: 待填 ← 发布后回填抖音公开播放页链接
- 创作后台链接(各平台,复盘更新数据用): ← 每支视频各平台的后台数据页链接,后续「更新数据」逐平台从这里取
- 抖音: 待填 ← 抖音创作后台作品详情页(形如 https://creator.douyin.com/creator-micro/work-management/work-detail/<item_id>)
- B站: 待填 ← B站创作者后台稿件数据页(含 BV 号)
- 小红书: 待填 ← 小红书创作者后台笔记数据页(含 noteId)
- 快手: 待填
- 视频号: 待填
- 封面文件: 见同目录 `封面/` 文件夹(<标题>_douyin.png、<标题>_bilibili.png)
- 发布后数据: 见同目录 `数据/` 文件夹(抖音_数据.md / B站_数据.md / 小红书_数据.md / 快手_数据.md / 视频号_数据.md;稿件原始 JSON/xlsx 在 `数据/数据_raw/`)
---
(以下接阶段二/三产出:一、口播稿 二、标题 三、终审记录 四、封面)
阶段二写完文档后在对话里用一两句话告诉用户文档路径、邀请确认最终标题;阶段三/四产出后简短说明路径即可,正文不必在消息里重复粘贴。
工作台归档规范(workspace/)
本技能是「蛋炒饭财经」自媒体工作台的一部分。所有产出以视频为单位归档在技能目录下的 workspace/,形成"记录作品 → 追踪数据 → 分析复盘 → 反哺创作"的闭环。旧的 docs/、cover/ 已废弃,不要再往里写。
目录结构:
workspace/
├── huasheng.md # 账号级 Memory:平台/人设/画像/品类/固定话术/封面基因/合规红线。开工前先读。
├── 账号数据/ # 账号级每日数据(持续更新);一平台一文件
│ ├── 抖音.md / 小红书.md / 账号数据_B站.md / 视频号.md
│ └── raw/ # 账号级原始 JSON 归档
├── reports/ # 分析报告(账号/稿件复盘);写法见 reports/README.md
└── <创建日期>_<最终标题>/ # 每支视频一个文件夹(日期 YYYY-MM-DD,取自建文件夹当天)
├── 视频基础信息.md # 元信息头 + 口播稿 + 标题候选 + 终审记录 + 封面 + 分镜规划指针
├── storyboard_plan.md # 阶段四:花生 AI 分镜规划书
├── 参考资料/ # 与本视频相关的外部资料 + 脚本抓来的原始数据,写稿前先读
│ ├── 参考资料.md # 用户手动丢进来的精读素材
│ ├── 雪球热帖-摘要.md # 热帖消化后的摘要(可直接引用)
│ └── 抓取数据/ # 本技能脚本产出的原始 JSON,备查不精读
├── 数据/ # 发布后各平台稿件数据(一平台一文件,「平台_数据.md」)
│ ├── 抖音_数据.md / B站_数据.md / 小红书_数据.md / 快手_数据.md / 视频号_数据.md
│ └── 数据_raw/ # 该稿件原始 JSON/xlsx(旧的顶层 raw/ 已并入这里)
└── 封面/ # 两版封面成图
├── <最终标题>_douyin.png # 抖音封面 3:4(主)
└── <最终标题>_bilibili.png # B站封面 4:3(备)
固定骨架(建文件夹时一次建全,后续只填不新建):每支视频文件夹恒定含 参考资料/、数据/、封面/ 三个子目录 + 视频基础信息.md。各阶段产出对号入座——封面进 封面/、稿件数据进 数据/、稿件原始 JSON/xlsx 进 数据/数据_raw/、外部素材与脚本抓取进 参考资料/。storyboard_plan.md 是阶段四单文件,落文件夹根下。
参考资料/(写稿的弹药库):放和这支视频相关的外部资料 + 脚本抓来的原始数据。规则:
- 精读素材(
参考资料/ 根下):每篇一个 .md,文件名概括来源与主题(如 雪球-川糖周掌门-茅台2026半年报.md);顶部标注来源 URL、作者、抓取日期,正文放清洗后纯文字。主 agent 消化出的 雪球热帖-摘要.md 也放这层。
- 原始抓取数据(
参考资料/抓取数据/ 子目录):脚本产出的原始 JSON 一律落这里,是备查档案、不精读。写稿主要吃根目录下的精读素材与摘要,需要回溯某个数字出处时再翻这里。
- 用户给的是受 WAF 保护的页面(雪球/东财等)就用
scripts/web_fetch.py 抓正文全文,整理成一篇 .md 写进 参考资料/ 根下,别只存链接。
- 写稿前先通读该视频
参考资料/ 根下的精读素材与摘要(不用逐条读 抓取数据/ 里的原始 JSON)。注意:外部分析里的观点是素材不是事实,涉及股价/财报数字仍以核对过的当日值为准。
文件夹命名生命周期:文件夹在阶段一「确定股票后」就建好,此时标题未定,先用 provisional 名 <创建日期>_<股票名>(同时建好 参考资料/ + 空占位 .md)。阶段二写 视频基础信息.md 时若最终标题还没定,就在元信息头标注「标题状态:待最终确认」、正文用当期 ⭐⭐⭐⭐⭐ 推荐候选标题;用户定稿后把文件夹和封面文件名同步改成 <创建日期>_<最终标题>。
硬规则:文件夹名带创建日期前缀 + 同名即新建绝不覆盖。<创建日期> 先跑 date +%F 取当天,别凭记忆写。用户经常并行跑两个任务,落地前先看 workspace/ 下目标文件夹是否已存在:不存在直接用;已存在(别的任务或上一版产物)就不要覆盖,改用带区分度的新名(如 ..._最终标题(选题方向简称)/,或退而加序号)。宁可文件夹多一个,也不要两个并行任务把对方成果冲掉。
发布后数据抓取(已拆分到独立技能)
视频发布之后的多平台数据抓取(抖音/小红书/B站/视频号,账号级+稿件级)是一条独立于创作的工作流,已拆分到 danchaofan-data-tracker 技能——脚本和 cookie 都在那边,但数据仍写回本技能的 workspace/(各视频 数据/<平台>_数据.md、账号数据/<平台>.md)。用户说"更新数据""更新账号数据""更新B站账号数据""更新视频号数据",或给出创作者后台数据页链接(抖音 work-detail / 小红书 note-detail / B站 upload-manager)时,走那个技能,不在本技能里跑。
发布后必做(本技能负责的部分):视频发到某平台后,用户给出该平台创作者后台数据页链接时,第一件事就是把它回填进该视频 视频基础信息.md 的 创作后台链接(各平台) 块对应平台行——这是 danchaofan-data-tracker 后续「更新数据」读 --url 的入口,别只用完就丢。
分析复盘:分析"某视频为啥流量高但吸粉差""为啥被限流"这类问题时,读相关账号级/稿件级数据文件(由 danchaofan-data-tracker 抓好落在 workspace/ 下),报告写进 workspace/reports/(YYYY-MM-DD_主题.md),并把稳定规律回写到 huasheng.md 驱动后续迭代。
合规红线(不可省略)
财经内容直接关系到观众的真金白银,这几条必须守住:
- 不做荐股(最硬的一条,平台风控直接封的就是这个)。无证券投资咨询牌照,不能对具体个股给出可执行的买卖操作。风控看正文实质,结尾一句"不构成投资建议"兜不住。判定与改写方法见下方「荐股红线」专节,写稿和终审都以那节为准。
- 数据必须最新且正确。基础行情以
xueqiu_quote.py 当日返回为准,财报数字用 web_search.py 核对,都必须是写稿当日(或最近交易日)的正确值,写稿前重新核对一次。绝不允许股价量级错误、数据写反这类基础硬伤。
- 不编造数据。搜不到或接口未返回的标注"未获取到",不用记忆里的旧数据冒充最新。
- 区分事实与观点。讲财报数据是事实,讲"我怎么看这个价"是观点,措辞上让观众能分辨。
- 不做保证性承诺。不说"必涨""稳赚""闭眼买""安全边际""确定性机会",即使爆款钩子也用"我认为""大概率"这类留有余地的表达。
- 正文不出现股票代码。口播只说股票名字,不念代码。
荐股红线(专节 · 写稿与终审都看这里)
平台风控封的往往不是数据错,而是无牌照荐股:明确标的 + 走势预测/目标价 + 可执行的买卖点位或操作指令,三件套凑齐就极易被判违规,结尾免责声明对冲不掉正文实质。
❌ 禁止出现(出现即高危,终审见到直接打回):
- 具体买卖点位/操作指令:"X 块是建仓位""跌破 Y 止损""站上 Z 加仓""这个价位可以试探性建仓"。
- 目标价与涨幅预测:自己给目标价、算"还有几成空间";转述研报目标价同样算。
- 分人群/分持仓的操作建议:"成本 X 以下的拿住""追高被套的别补仓""空仓的可以进"——最典型的荐股结构。
- 确定性/安全性话术:"安全边际""确定性机会""闭眼拿""跌不动了"。
- 诱导报仓位跟单:"你成本多少?准备加仓减仓还是不动?"
✅ 可以做(把"下单指令"改写成"看懂逻辑"):
- 讲清估值判断(我认为现在偏贵/偏便宜)和依据,让观众自己判断值不值。
- 点出该盯的关键变量与信号("折旧拐点兑现,利润逻辑才成立")——给判断框架,不给价格指令。
- 摆出多空双方的分歧点和各自的数据,让观众看见博弈全貌。
- 亮个人倾向性观点,但落在"我怎么看这门生意/这个估值",不落在"你该在几块买/卖"。
- 谈价格区间只做客观描述("历史上这个 PB 分位在什么位置"),不转成"所以你在这里买/卖"。
- 给"我个人的估值测算市值"(合理估值 X 亿、偏保守情景 Y 亿)当标尺——前提三条同时满足:① 明确声明"我按某套算法估的、不是目标价、市场认不认账是另一回事";② 不用"安全边际/确定性/闭眼/稳"等词;③ 不把测算市值与当前市值相减去算涨幅、不落到买卖股价。做法与措辞见 script-structure.md 第九·五节。
一句话把握:帮观众看懂一支股票值不值、变量在哪,是内容;替观众决定买不买、买在几块,是荐股。 我们只做前者。
快速参考
方法论 reference(按需调阅,别一次性全读):
脚本(用法详见上面对应的 data-fetching):
scripts/web_search.py / web_fetch.py — 联网搜索 / 抓单个网页正文(替代自带 WebSearch/WebFetch)
scripts/xueqiu_quote.py / xueqiu_hot_posts.py / xueqiu_hot_stocks.py — 雪球基础行情 / 热帖 / 全市场热榜
scripts/generate_cover.py — 调用 gpt-image-2 生成封面
workspace/huasheng.md — 账号级 Memory,开工前先读
workspace/reports/ — 分析复盘报告目录(写法见其 README.md)
发布后数据抓取(抖音/小红书/B站/视频号)已拆分到 danchaofan-data-tracker 技能——脚本和 cookie 在那边,数据仍写回本技能 workspace/。触发语"更新数据""更新账号数据"等走那个技能。