| name | baokuan-factory |
| description | 爆款工厂:把"别人的爆款短视频"变成"你自己口吻的成片 + 全平台文案 + 一键发号"的一条龙总入口。串起五件事:①女娲蒸馏你自己的表达DNA(一次性 onboarding)②video-distill 蒸馏对标爆款→拆解/翻拍角度 ③talking-head-edit(口播)/hyperframes(图文混剪)把翻拍稿/录音做成成片 ④四平台爆款文案 ⑤social-auto-upload 把成片+文案一键发到抖音/小红书/视频号。它是路由器/checklist,按顺序调度 nuwa-skill / video-distill / talking-head-edit / hyperframes / social-auto-upload(sau CLI),并在翻拍和文案两处注入你自己的 profile。
什么时候用(要 pushy 一点别漏触发,但只在"整条链路 / 团队上手"时当入口):
- 团队新人 onboarding,"装一下 / clone 了这套爆款翻拍 skill 不知道下一步 / 怎么开始用 / 要不要装依赖"——本 skill 亲自带 onboarding(查依赖 + 用女娲蒸馏你自己),别只顾自己跑 bash。
- "我要开始做爆款翻拍 / 搭翻拍流程 / 从对标视频到成片到文案到发号走一遍 / 系统化做翻拍号"。
- "把这条对标视频(链接或文件)变成我自己口吻的成片和全平台文案,最好直接发出去"——要的是完整产物(成片+文案+上号),不是单步。
- "先蒸馏我自己再批量翻拍对标号"。
边界(守住精度):如果用户只要其中一步(只下载 / 只转写提字幕 / 只拆解一条视频结构 / 只写某平台文案标题 / 只蒸馏某个别人 / 只把一条现成的片发到某平台),那分别是 video-distill / nuwa-skill / hyperframes / social-auto-upload 的活,别抢;本 skill 只在要走完整链路或团队 onboarding 时当总入口。
|
爆款工厂 · Baokuan Factory
一句话:把别人的爆款变成你自己口吻的成片 + 全平台文案的一条龙。
你(Claude)在这里是总调度,不是亲自干所有活。每一步都委派给对应子 skill,本 skill 只负责顺序、衔接、和把"用户自己的 profile"注入到该注入的地方。
这套是什么(给第一次用的同事)
两条蒸馏线 + 剪辑 + 文案:
线A(一次性) 女娲蒸馏「你自己」 ── nuwa-skill ──► skills/<你>/SKILL.md
(表达DNA + 从夯到拉品味)
│ 反复复用,注入下游
线B(每条视频)video-distill 蒸馏「别人的爆款」
取片 → 转写 → 拆解 → 翻拍角度◄注入①品味 → 〔录制 → talking-head-edit 口播成片 / hyperframes 图文混剪〕 → 四平台文案◄注入②口吻 → 一键发号(抖音/小红书/视频号)
依赖的子 skill / 工具(install.sh 已一并装好子 skill;social-auto-upload 是外部公开仓库,单独装,见依赖区):
- nuwa-skill(女娲造人)——蒸馏一个人的思维操作系统成一个 Skill。这里用来蒸馏用户自己。
- video-distill(视频蒸馏)——取片/转写/拆解/翻拍角度/四平台文案。线B 的主力。
- talking-head-edit(口播剪辑)——把真人出镜录好的口播做成带双语字幕 + 卡片 + 顶部章节条 + 可换主题的成片,内置合成引擎和踩过的坑。口播号的主力成片工具。
- hyperframes 全家桶(hyperframes / -cli / -registry / gsap / website-to-hyperframes)——把图文/动画/混剪类做成 HTML 视频合成并渲染(talking-head-edit 底层也用它)。
- social-auto-upload(
sau CLI,外部公开仓库)——最后一环,把成片+文案一键发到抖音/小红书/视频号。它是真浏览器自动化(patchright 驱动 Chromium 模拟真人在创作者后台传,不是私有 API/抓包),所以要先扫码登录、cookie 会过期。见 Step 6 和依赖区。
详细全流程图见本 skill 同级或仓库的 docs/SOP.md。
开工前:第 0 步永远是「拉最新」(每次都做)
每次触发本 skill,动手前先跑一次同步,把团队公共仓库拉到最新再开工——这样谁改了引擎/拆解套路/卡片样式,全队下一次用就自动拿到,不会各人跑各人的旧版:
bash ~/.claude/skills/baokuan-factory/scripts/sync.sh
它永不阻塞:离线 / 没装过 / 有本地改动 → 打一行提示就退,用当前版本继续。只有真拉到新 commit 才会重装("已是最新"是 1 秒空操作)。看到它说"拉到更新…已更新到最新",就知道这次用的是最新版;本次更新下次触发才完全生效(当前对话已加载旧 SKILL.md),如果它报告有重大更新,可提示用户重开一轮。
为什么放第 0 步:这套是给团队用的,引擎和套路一直在迭代。靠每人记得手动 git pull 必然有人落后;把"先同步"焊死在每次开工的第一步,才能保证全队跑同一个版本。标记文件 ~/.baokuan-factory/repo 由 install.sh 写入,sync 靠它找到仓库。
然后:判断用户在哪一步(决策树)
同步完,按顺序自检,落在第一个不满足的地方就从那开始:
- 装好了吗? 检查
~/.claude/skills/ 下是否有 nuwa-skill、video-distill、talking-head-edit、hyperframes。缺 → 让用户在仓库根跑 ./install.sh(或指 README)。
- 依赖齐吗?
ffmpeg、whisper-cli、yt-dlp、bun、python3。缺 → install.sh 会列出来,提示 brew install ...。
- 蒸馏过自己吗? 读
~/.baokuan-factory/profile(一行,指向用户自己的 profile SKILL.md 路径)。
- 文件不存在或指向的文件不在 → 走 Phase O(一次性 onboarding)。
- 存在且有效 → 直接进 Phase 1,把该 profile 当注入源。
为什么用 ~/.baokuan-factory/profile 这个标记文件:每个同事翻拍时都要注入他自己的口吻,机器上可能蒸馏过好几个人(对标对象也会被蒸馏)。用一个显式标记记住"我是谁",避免每次猜或问。
Phase O · 第一次:蒸馏你自己(一次性,约 15-30 分钟)
目标:产出用户本人的 skills/<handle>/SKILL.md,作为后续所有翻拍的口吻+品味注入源。
- 问用户两件事:handle(英文短名,如
0xkaiwen)+ 素材入口(X/小红书/播客/公众号/LinkedIn 链接,越多越准;至少给一个主阵地)。
- 调用 nuwa-skill,让它蒸馏用户自己:把素材链接喂进去,按女娲的「蒸馏用户自己」路径走(女娲 SKILL.md 里有这个特殊场景)。
- 产物落在仓库
skills/<handle>/。蒸馏完,把路径写进标记文件:
mkdir -p ~/.baokuan-factory
echo "<绝对路径>/skills/<handle>/SKILL.md" > ~/.baokuan-factory/profile
- 跟用户确认:核心心智模型、表达DNA、从夯到拉品味是否像本人。不像就让 nuwa 再精炼一轮(女娲有「更新已有 Skill」流程)。
注意:蒸馏的是用户自己,不是对标对象。对标对象的人设如果也想要(比如要模仿某博主),那是另一次 nuwa 蒸馏,存成另一个 handle,别覆盖用户自己的。
Phase 1..N · 每条对标爆款:拆解 → 翻拍 → 成片 → 文案
每条对标视频独立跑一遍。把用户给的链接/文件交给 video-distill,它内部有完整 Phase 0-5;本 skill 的职责是确保两个注入点不被跳过、确保中间真的写出一份「翻拍稿」(最容易被漏掉的一步),以及在翻拍稿之后接上成片。
整条链路五步,别在第 3 步断档:取片+拆解 → 翻拍角度 → 写翻拍稿 → 成片 → 文案。最常见的翻车是拆完直接想去成片,跳过了"写翻拍稿"——结果没有可录的脚本,人没法录,口播引擎(卡片/截图/字幕)也就全没了。「翻拍角度」只是立场建议(写在 拆解.md 里),不是能照着念的稿子;真正能录的逐字脚本是 口播/<片名>/翻拍稿.md,必须单独写出来。
Step 1 · 取片 + 拆解(video-distill Phase 0-3)
- 调用 video-distill,给对标视频链接/文件。它会取片(视频号用 sph 解析器、YouTube/抖音用 yt-dlp)、whisper 转写、产出
拆解.md(一句话选题/叙事骨架/为什么有效/金句/论点分档)。
- 这一步是中性的——跟用户是谁无关,先把"它为什么火"拆干净。
Step 2 · 翻拍角度(video-distill Phase 4)← 注入① 品味
- 先
Read ~/.baokuan-factory/profile 指向的用户 profile,重点读「核心心智模型」「从夯到拉/评分品味」。
- 用它给原视频每个论点打档(夯/哈/拉),定翻拍打法:正着翻、反着锐评、还是元视频。写进
拆解.md 的「翻拍角度」节。
- 落差就在这:注入的是立场——用户站哪、锐评什么。
- ⚠️ 这步只产出角度/立场(写进
拆解.md),不是翻拍稿。别在这里停手就去成片。
Step 3 · 写翻拍稿(video-distill Phase 3.5 洗稿)← 这步以前总被漏,是断链元凶
- 产物:
口播/<片名>/翻拍稿.md —— 一份能直接照着念的逐字口播脚本(不是 bullet 角度)。这是 Step 4 成片的输入;没有它,人没法录、talking-head-edit 也没东西可剪。
- 跑 video-distill Phase 3.5:先做个人元素审计(把原作者的身份/经历/作品名/被点名/借用例子逐条揪出来,产一张映射表,跟用户对齐),再洗稿——骨架观点照搬,但把"原作者这个人"彻底换成用户自己(用户没有的亲身经历标红问用户,绝不替他编)。
- 开头黄金 5 秒:第一句必须是钩(暴论/认同/反直觉框架),别用自我介绍开场;紧跟借名权威 + 浓缩承诺,第一句里就有"你"。(见 video-distill Phase 3.5 hook 段)
- 顺带读 profile 的「表达 DNA」给稿子定调,但立场以 Step 2 拆解里的翻拍角度为准。
- 写完跟用户过一遍:还剩没剩原作者的痕迹?hook 够不够炸?用户点头,才进成片。
Step 4 · 成片(按形态选 skill)
- 真人出镜口播(talking head) → 用户照翻拍稿录好竖屏口播,把录音 mp4 交给 talking-head-edit:它产出双语字幕 + 卡片 widget + 顶部章节进度条 + 可换主题,
hyperframes render 出成片。这是口播号的主路径。别把素材/卡片当事后装饰——它是成片质感的命根子,跟字幕同等重要,所以这一步明确包含三件事(都以 talking-head-edit 的引擎为准,见下「素材与样式的真源」):
- 素材收集:他每提一个术语/人/产品/数字/电影,就得配一张权威截图。用 gstack
/browse 抓官网/权威媒体/Wikipedia 的图,存进本片 build/news/(截图)、build/naval/(剪入的真访谈片段)。素材要权威、清晰、对题,别拿不相干首页凑数。没有 /browse 怎么办:这是 gstack 的能力,没装就抓不了图。绝不因此把这步跳过、或拿空卡/编的图糊弄——明确告诉用户"我这边没有 /browse,抓不了截图",让他装 gstack 或手动把截图丢进 build/news/,你再继续套卡片。素材是成片质感的命根子,宁可停下要,也别出没素材的成片。
- 卡片样式(widget):
news(大字 stat/截图)、duel(左小灰 vs 右大金的数字/概念对决)、quote(名人金句)、clip(真访谈片段)、book(海报+大字)、titlecard(报幕大字坑)、recap(逐条点亮总结)。卡片要密(参考片几乎每几秒一张)、时间对齐他说那句话。
- 组件/视觉样式:主题配色(Claude 暖 / Linear 冷 / Vercel / 琥珀)、双语字幕 a/b 样式与描金、顶部章节进度条、字体子集。
- 纪律:字幕逐字贴音频(翻拍稿只兜底)、渲染前先出
review.html 给用户审(素材权不权威/卡片对不对/主题色/时间点)、终版用 standard 别盲上 high。
- 图文/动画/纯混剪(无真人或大量动效) → 直接用 hyperframes 全家桶手写 HTML 合成。
- 两条底层都是 hyperframes 渲染;talking-head-edit 给口播一套现成的字幕+卡片引擎,不用从零写 HTML。
素材与样式的真源(别在本 skill 里复制一份):卡片字段、组件样式、主题、素材收集纪律的权威定义全在 talking-head-edit 引擎里,装好后在 ~/.claude/skills/talking-head-edit/engine/:DESIGN.md(颜色/字体/字幕/卡片/章节/主题的完整规范)、build_caps.py(各卡片实际怎么渲)、review_page.py(素材+卡片审阅页)、make_groups.template.py(字幕模板)。本 skill 只点名"这一步要做素材收集+套卡片/组件样式",具体规格一律去读引擎的 DESIGN.md——这样样式只有一处真源,迭代不漂移。
Step 5 · 四平台文案(video-distill Phase 5)← 注入② 口吻
- 先
Read 用户 profile,重点读「表达 DNA」「价值观与反模式」。
- 用它的口吻写**抖音 / 微信视频号 / 小红书(中文)+ X(英文)**的标题+正文+hashtag,每平台 2-3 个备选。贴成片实际内容,不套空模板、不造假数据、不用长破折号。
- 落差在这:注入的是说话方式——梗、节奏、忌讳词。
Step 6 · 一键分发(social-auto-upload / sau CLI)← 最后一环,可选、要显式确认才发
- 目标:把
口播/<片名>/ 的终版成片,配 Step 5 的 平台文案.md,发到抖音 / 小红书 / 视频号。
- ⚠️ **发布是对外、不可逆的动作(发出去就公开了,删了也可能被缓存/推送)。动手发之前必须把"发哪个号、哪几个平台、标题正文、立即发还是定时"逐条念给用户确认,得到明确"发"才发。**能定时/存草稿就别默认立即发。绝不自作主张群发。
- 引擎/真源:细节 CLI 契约不在本 skill 复制,去读装好的 social-auto-upload 仓库
docs/CLI.md 和 skills/{douyin,xiaohongshu}-upload/。原理:真浏览器自动化(patchright 驱动 Chromium 模拟真人在创作者后台传,不是私有 API/抓包),所以要先扫码登录、cookie 会过期。
- 跑命令前先进仓库激活环境:
cd ~/Desktop/workplace/social-auto-upload && source .venv/bin/activate。约定 --account <handle>(一个号一份 cookie,如 kaiwen)。
- 三步:
- 先查登录态(cookie 几天到两周会过期,别盲发):
sau douyin check --account <h> / sau xiaohongshu check --account <h> / sau tencent check --account <h>。返回 invalid 就重新扫码:sau <平台> login --account <h> --headed(douyin 扫抖音 App、xiaohongshu 扫小红书 App、tencent 扫微信;二维码窗口会弹出)。
- 传视频(标题/简介/话题从
平台文案.md 对应平台那份取。⚠️ 成片在工作区 口播/<片名>/ 树里,不在 sau 仓库里,--file 给成片的绝对路径,别用相对路径):
sau douyin upload-video --account <h> --file /绝对路径/口播/<片名>/<片名>-成片.mp4 --title "标题" --desc "简介" --tags "标签1,标签2"
sau xiaohongshu upload-video --account <h> --file <同一个绝对路径> --title "标题" --desc "简介" --tags "..."
sau tencent upload-video --account <h> --file <同一个绝对路径> --title "标题" --desc "简介" --tags "..."
定时发布加 --schedule "YYYY-MM-DD HH:MM";视频号可 --draft 存草稿。
- 平台差异:视频号只发得了视频(
sau tencent 无 upload-note,图文没实现,别答应发视频号图文);抖音/小红书视频、图文都行,图文用 sau <平台> upload-note --account <h> --images a.png b.png --title "..." --note "正文" --tags "..."。
- 发完把每个平台的链接/状态回报给用户;失败先看排错区「发布:登录/cookie/视频号」。
两个注入点(这是本 skill 的命根子,别跳过)
| 步骤 | 读 profile 的哪部分 | 注入的是 | 为什么分开 |
|---|
| Step 2 翻拍角度 | 核心心智模型 / 从夯到拉品味 | 立场:站哪、锐评啥、反着做哪点 | 换题材时品味骨架不变 |
| Step 5 平台文案 | 表达 DNA / 反模式 | 口吻:梗、节奏、忌讳词 | 换号(如小红书走另一人设)只换这一处 |
(Step 3 写翻拍稿也会读 profile 的「表达 DNA」给稿子定调,但它的产物是口播脚本本身,不在这张"注入对比表"里——这张表讲的是同一条拆解换人设复用时只动哪两处。)
立场和口吻是两回事。拆开注入,才能"同一条拆解,换个人设重新发一遍"而不用重做。
产物落位(两棵树,别混)
团队实际是两个目录树,一棵管"读懂别人",一棵管"做自己的成片"。照这个来,别自创结构:
<工作区>/ # 如 clipping
├── 案例库/<slug>/ # 【蒸馏树】每条对标视频一个,video-distill 产出
│ ├── video.mp4 软链原片
│ ├── audio.wav caption.srt caption.txt
│ ├── source.txt 来源链接 + 下载方式 + 规格
│ └── 拆解.md ★选题/骨架/手法/金句/翻拍角度(立场)
└── 口播/<片名>/ # 【生产树】每条要做的成片一个,翻拍稿 + 成片在这
├── 翻拍稿.md ★Step 3 产出:能照着念的逐字脚本
├── build/ talking-head-edit 引擎工作目录
│ ├── news/ naval/ 素材截图 / 真访谈片段
│ ├── fonts/ groups.full.json widgets.json theme.json chapters.json
│ ├── index.html review.html
│ └── video.mp4 → 录音文件
└── <片名>-成片.mp4 终版渲染输出
- 蒸馏 →
案例库/<slug>/,翻拍稿 + 成片 → 口播/<片名>/。slug 用对标视频的英文短名;片名用你这条成片的名字(可中文)。
- 平台文案
平台文案.md 跟成片走(放 口播/<片名>/)或跟拆解走都行,写清是哪条。Step 6 发布就从这份取每个平台的标题/正文/话题,配同目录的 <片名>-成片.mp4 上传。
- 一条对标视频可能翻拍成多条成片:一个
案例库/<slug>/ 对多个 口播/<片名>/,正常。
依赖与排错(速查)
- 视频号下载:别上 mitmproxy。用在线解析器
https://sph.litao.workers.dev/(POST /api/fetch_video_profile {"url": 分享链})拿明文真链直接 curl。详见 video-distill Phase 0。
- 缺 ffmpeg/whisper:
brew install ffmpeg whisper-cpp。whisper 模型优先复用机器上已有的,别重复下。
- 缺 yt-dlp / bun:
brew install yt-dlp;bun 见 install.sh。
- 没 gstack
/browse:视频号取不了片、成片抓不了素材截图(成片质感命根子)。gstack brew 装不了,但它是公开仓库(github.com/garrytan/gstack,MIT),不用找团队要,自己一行装(需 Bun v1.0+ 和 Git):
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup
./setup 会把 /browse 等装进 ~/.claude/skills/,装完重开一轮 Claude Code 生效;升级用 /gstack-upgrade。临时没有照样能跑:视频号取片改备选下载工具,截图让用户手动塞进 build/news/,别因此跳过素材或拿空卡糊弄。
- 拆完没有"翻拍稿"、没法成片:这是最常见的断链——别跳过 Step 3 写翻拍稿(产出
口播/<片名>/翻拍稿.md)。「翻拍角度」只是立场,不是能念的稿。
- 没卡片/没截图:八成是上一条(没翻拍稿就没录音、talking-head-edit 没被触发),或没
/browse。先补翻拍稿、补素材,再成片。
- profile 注入不准:八成是 Phase O 蒸馏得糙,或
~/.baokuan-factory/profile 指错了。重蒸或改标记文件。
- 发布:social-auto-upload 装法(Step 6 用,外部公开仓库 github.com/dreammis/social-auto-upload,MIT,
brew 装不了,自己装。需 uv + python3.10~3.12):
cd ~/Desktop/workplace && git clone https://github.com/dreammis/social-auto-upload.git
cd social-auto-upload && uv venv --python 3.12 && uv pip install -e . # 注册 sau 命令
PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright" .venv/bin/patchright install chromium
cp conf.example.py conf.py
验证 source .venv/bin/activate && sau --help。三个平台各扫一次码登录后才能发(见 Step 6)。
- 发布:cookie 失效/发不出去:先
sau <平台> check --account <h>,invalid 就 sau <平台> login --account <h> --headed 重新扫码。cookie 是平台自己的会话,几天到两周会过期,每次发之前先 check,别盲发。
- 发布:首次登录报错(upstream 已知 bug,本机已打补丁):官方仓库的登录代码有几处真 bug,fresh clone 会踩,需同样补丁(或维护带补丁的 fork):① 抖音
uploader/douyin_uploader/main.py 的 _wait_for_douyin_login 用了未定义的 original_url/saw_2fa/i,秒崩 NameError,要在循环前补 original_url=page.url、saw_2fa=False,并把 for _ in range 改 for i in range;② douyin/xiaohongshu/tencent 三处登录 page.goto 加 timeout=90000, wait_until="domcontentloaded"(默认 30s 常超时);③ 视频号 uploader/tencent_uploader/main.py 要改三处:_build_launch_kwargs 的 channel="chrome" 改 "chromium"、二维码改「截主页面里的微信 OAuth iframe 元素」(新版码在 open.weixin.qq.com/connect/qrconnect 的 iframe 里、src 是 URL 不是 data:image)、_is_tencent_login_completed 放宽到「落 /platform/* 且无登录 iframe 即成功」(微信登录后落 /platform/home 不是 post/create)。最快修法:打本仓库带的补丁 cd ~/Desktop/workplace/social-auto-upload && git apply <baokuan-factory clone>/docs/patches/social-auto-upload-login-fixes.patch(打不上就照上面几条手改)。CLI 内置扫码窗口只等约 2 分钟太短,急的话直接调 xxx_cookie_gen(account_file, headless=False, poll_interval=3, max_checks=200) 给 10 分钟。
- 发布:视频号图文发不了:
sau tencent 只有 upload-video,图文(TencentNote)是骨架会 NotImplementedError,别答应用户用 sau 发视频号图文;抖音/小红书图文正常(upload-note)。