番茄小说抖音推广稿生成器
把番茄小说的分享短链,变成可直接拍摄/分发的抖音推广 Word 文档。一本小说一份独立 .docx。
前置依赖(首次使用需安装)
脚本基于 Python,需要 playwright(渲染 JS 页面)+ python-docx(生成 Word)。
# 1. 建并激活虚拟环境(可选,但推荐隔离)
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
# 2. 安装依赖
pip install -r requirements.txt
# 3. 安装无头浏览器内核(只需一次)
python -m playwright install chromium
> 说明:番茄分享页是纯前端 SPA,正文靠 JS 渲染;直接 curl 拿到的只是空壳。
> 而 api.fqnovel.com/reading/bookapi/share/detail/v1 需要前端签名(X-Bogus),裸 curl 会返回
> SHARE_CODE_NOT_VALID。因此本 skill 用 Playwright 真实渲染页面来提取内容,最稳。
一键批量(最省事,推荐路径)
如果用户发来一批链接、且接受「自动套模板生成的初稿文案」,直接用驱动脚本一条命令出全部 Word:
# 把链接写进 links.txt(每行一个),或直接空格传多个链接
python scripts/run_batch.py links.txt
python scripts/run_batch.py links.txt -o _outputs # 指定输出目录
python scripts/run_batch.py "https://changdunovel.com/t/xxx" "https://changdunovel.com/t/yyy"
python scripts/run_batch.py links.txt --wait 8000 # 每本渲染等待毫秒
run_batch.py 内部自动完成:解码短链 → Playwright 渲染提取 → draft_promo() 套模板生成初稿文案
(钩子/悬念/引流/封面字幕等)→ build_docx.build() 出独立 Word。每本书一份 <书名>_抖音推广稿.docx,
文档顶部带「自动初稿」标记。任一链接失败不影响其它,结尾汇总成功/失败清单。
> 自动初稿的文案是基于提取到的书名/评分/原文摘录套模板生成的,发布前建议人工润色一遍;
> 或把链接交给 AI(你),按下面「四步流程」读 excerpt/raw 写出更精准的文案后再 build。
工作流(四步,精细控制 / 要更优文案时用)
收到用户的链接列表后,按以下顺序执行:
步骤 1 — 解码链接,拿到每本书的真实 book_id 与分享页 URL
把用户给的链接放进 links.txt(每行一个),或空格分隔传给脚本:
python scripts/decode_links.py links.txt # 从文件读
python scripts/decode_links.py "https://changdunovel.com/t/xxx" "https://changdunovel.com/t/yyy"
输出 decoded.json,每条含:link、book_id、share_url(带 share_token 的完整 book-share 页 URL,渲染时要用它)。
> 原理:changdunovel.com/t/<token> 会 302 跳转到
> .../ug/pages/book-share?share_type=11&aid=1967&book_id=...&share_token=...。
> 我们拦截这次跳转,从中提取 book_id 与完整跳转地址。
步骤 2 — 渲染分享页,提取作品信息
对每一本书,用上一步的 share_url 渲染并抽取信息:
python scripts/extract_book.py "<share_url>" -o 走入你的雨季.json
输出一份 JSON,包含:title、author、score、ratings、reading、words、chapters、
excerpt(原文摘录,用于写悬念片段)、reviews(热门书评)、以及 raw(整页纯文本兜底,供你精读)。
> 若 excerpt 提取为空,直接读 JSON 里的 raw 字段,人工截取最抓人的前 1–2 章片段。
步骤 3 — 撰写推广文案(你的创意工作)
读取上一步 JSON,结合 excerpt / raw 的文本,为该书补齐以下字段(写入同一 JSON 或新建 promo 段):
- core_selling:3 条核心卖点(人设反差 / 强情节 / 情绪钩子)
- hook:钩子文案(准备 3–5 条)
- suspense:悬念片段台词(直接可念/打字幕,必须去露骨化,仅保留意境)
- ending_cta:结尾引流话术(3–5 条,统一指向"番茄小说搜书名免费看")
- cover_captions:封面字幕 3 套(主字/副字/角标)
- title_options:发布标题 2–3 条
- hashtags:话题标签串
- bgm:BGM 与节奏建议
- comment_guide:评论区置顶/互动话术
文案规则:
- 必含板块:钩子、悬念片段、结尾引流、封面字幕(用户硬性要求)。
- 悬念片段可用书里原句开场(如盲眼初遇"你,是谁?"),但亲密描写一律做合规模糊处理。
- 引流只指向番茄小说书名搜索,不放任何站外链接,避免限流。
步骤 4 — 生成独立 Word 文档
python scripts/build_docx.py 走入你的雨季.json -o "_outputs/走入你的雨季_抖音推广稿.docx"
每本书生成一份独立 .docx,包含:作品信息卡、核心卖点、钩子、悬念片段、结尾引流、
封面字幕、发布标题+话题、视频分镜建议、BGM 建议、评论区引导、合规提示。
批量时,把每个 JSON 都跑一遍 build_docx.py,产物放进同一个 _outputs/ 目录,最后整体打包交付。
输出规范(必须满足)
- 每个小说 = 一份独立 Word 文档,文件名建议
<书名>_抖音推广稿.docx。 - 每份文档必须包含:钩子、悬念片段、结尾引流、封面字幕(缺一不可)。
- 信息卡数据(评分/字数/章节/在读)必须来自步骤 2 的真实提取,不要编造。
- 正文亲密内容去露骨化;引流统一指向番茄小说;明确标注作品类型(如纯爱/双男主)以精准触达。
故障排查
decode_links.py拿不到 book_id:链接可能已失效或需登录;把原始链接贴给用户的浏览器里打开确认。extract_book.py提取为空/乱码:页面可能改版,先page.inner_text的raw仍在;或加大wait_for_timeout。- Playwright 报缺系统库(Linux):
playwright install --with-deps chromium。 - 想换浏览器:脚本用
chromium,可改launch(channel="chrome")用本机 Chrome。