头条热点自动化工作台
本地 Python 流水线 + 单文件网页工作台。用户在网页上点按钮走完「抓热点 → 看清洗结果 → 选选题 → 生成文章 → 复制排版稿」,草稿只落盘不自动发布。
目录约定:本技能目录下 assets/toutiao-workbench/ 是完整项目模板(已脱敏,不含任何 API Key);scripts/deploy.py 是部署脚本。下文「项目目录」指用户机器上已部署的项目副本。
全新部署(用户说"帮我搭/部署头条工作台"时)
-
确定安装位置。默认
~/Desktop/头条工作台;用户指定了位置就用用户的。路径避免中文空格混排与系统目录。 -
复制模板并校验(不要手工逐个复制文件):
bash
python <技能目录>/scripts/deploy.py [目标目录] [--force]
脚本会复制模板、校验 8 个关键文件齐全,并打印后续步骤。
- 装 Python 环境 + 生成启动脚本。在项目目录里执行:
bash
python src/setup_env.py
它自动建 .venv、走清华源装 requirements.txt、逐个 import 自检,并且在本机生成全部启动脚本(7 个 .bat + 定时任务 .ps1)——市场上架不允许打包可执行脚本,所以这些文件不随包分发、部署时生成。Windows 上没有 Python 时引导用户从 python.org 安装并勾选 Add Python to PATH 后重跑;其余平台用系统包管理器装 Python 3.10+。装完可选依赖 segno/pillow 仅影响二维码图片生成,不影响主流程。
-
问清账号定位并写进配置(默认
综合资讯只是通用模板,不改的话选题推荐没有针对性):
主动问使用者「你的号是写什么方向的、给谁看」,然后写入account.niche/description/prefer_keywords
(网页「设置」里改也行,改完无需重启)。对方一时说不清就先用默认,别擅自替他定领域。 -
API Key 必须由用户提供,技能不内置、不代填:
- 问用户要哪家的 Key(默认 DeepSeek,最便宜;也支持腾讯混元/通义/Kimi/智谱/OpenAI,OpenAI 兼容协议,可在网页设置里切服务商,地址模型自动带出)。
- 写入方式二选一:改config/settings.yaml的llm.api_key;或让用户启动后在网页右上角「设置」填。改 yaml 后无需重启服务(每次请求现读配置)。
- 没有 Key 时抓热点/清洗仍可用,只有选题推荐和写稿会失败。 -
启动(Windows 推荐
start_workbench.bat;跨平台等价命令):
bash
python src/server.py --port 8765 --open
验证:curl http://127.0.0.1:8765/api/health 返回 {"ok": true,...}。这是本地 HTTP 服务,不是网页链接,接口地址在浏览器里 404 属正常。
- 冒烟:网页里点「抓取热点」,应看到 7 个平台状态和条数统计。命令行等价:
python src/main.py run。
日常使用(用户问"怎么用/每天怎么操作")
网页从上往下:抓取热点 → 清洗结果(去重/敏感词/广告统计)→ 选题(1 推荐 + 3 备选 + 自定义)→ 成稿(预览 + 三种复制:排版稿/纯文本/Markdown)→ 草稿箱。确认选题后才调 LLM 写稿,幂等设计:同一天重复跑不重复消耗 API。
产出位置:output/drafts/(每篇 4-5 个文件:html / inner.html / md / txt / meta.json),inner.html 是可直接粘进头条编辑器的排版片段。
手机访问(同一 WiFi)
- Windows:右键
allow_phone_access.bat管理员运行(放行 8765,每台电脑一次)。 - 双击
生成手机二维码.bat生成output/手机扫码.png,手机扫码;IP 变了重跑。 - 手机地址:
http://<电脑局域网IP>:8765。
定时抓取(二选一)
- WorkBuddy automation(推荐):每天 9:00 提示抓取与选题(走 WorkBuddy 的 automation 能力,幂等)。
- Windows 计划任务:管理员 PowerShell 运行
setup_scheduler.ps1(用 $PSScriptRoot 定位,换目录无需改)。
常用配置(改 config/settings.yaml 或网页设置)
| 想改什么 | 位置 |
|---|---|
| 账号定位(默认「综合资讯」,需按使用者领域改成他自己的)+ 倾向/屏蔽关键词 | account.niche / prefer_keywords / avoid_keywords |
| 字数(默认 800-1200) | article.min_words / max_words |
| 排版平台(toutiao / wechat) | article.platform |
| 服务商/模型/base_url | llm.provider / model / base_url |
| 屏蔽词库 | config/sensitive_words.txt(一行一个,默认空,需使用者自填) |
排障速查
| 现象 | 处理 |
|---|---|
| 找不到 start_workbench.bat / 双击 bat 没反应 | 脚本由 python src/setup_env.py 生成(市场上架禁止打包可执行脚本);重跑一次即可全部重建。bat 必须 GBK 编码 + CRLF 换行,setup_env.py 生成时已保证 |
| 提示「没检测到 Python」 | 先跑 python src/setup_env.py;没有 Python 先去 python.org 装并勾 Add Python to PATH |
| 端口占用 | 服务自带探测:同端口再启一次会提示"已在运行"并给出地址,属正常 |
| 网页里保存/抓取报错且打开的是预览窗或在线链接 | 静态副本连不到本地服务,必须用 http://127.0.0.1:8765 打开 |
| 写稿报 Key 无效 | 核对服务商与 Key 匹配;混元接口浏览器打开 404 是正常的,POST 才有效 |
| 依赖装失败 | 脚本自动换官方源重试;仍失败检查代理/防火墙 |
硬性约束
- 绝不自动发布:只存草稿箱(落盘 + 网页草稿箱),发布由用户在头条平台手动完成。
- 绝不把用户 api_key 写进任何分享/打包产物;对外分享项目一律走脱敏模板。
- 技能包内不含 .bat/.ps1 可执行脚本(SkillHub 上架禁止该类文件):启动脚本由
src/setup_env.py的gen_scripts()在部署时生成——.bat 用 GBK+CRLF,.ps1 带 UTF-8 BOM。改脚本逻辑改 setup_env.py 里的模板,不要手工往包里塞 bat。 - 移动端页面保持单文件全内联(CSS/JS/SVG 零外部依赖)。