com um clique
toutiao-publisher
今日头条自动发布工具 - 微头条/文章/视频 + NAS 统一调度(生产就绪)
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
今日头条自动发布工具 - 微头条/文章/视频 + NAS 统一调度(生产就绪)
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
/pipeline-diagnose、pipeline 挂了、看 pipeline 状态 — Content Pipeline 总体健康诊断,一键输出所有关键状态并引导到具体 stage skill
/pipeline-persondata、修待补充、人物数据占位符 — Content Pipeline Stage 4 (person-data 构造) 运维 skill,修 "待补充/暂无数据" 导致的图片占位符问题
/pipeline-regen、重生图、V6 出图失败 — Content Pipeline Stage 4 (V6 图片生成) 运维 skill
/pipeline-run、用 X 做一套内容、给我生成 X 的内容 — Content Pipeline 手动即时触发(主理人在 Claude Code 对话里临时跑一条,走和 Dashboard 自动路径完全一样的 6 阶段 pipeline,但即时给进度反馈)
金句卡片生成工作流的质检和选择
抖音自动发布工具 - 图文/视频/文章三种类型(生产就绪)
| name | toutiao-publisher |
| description | 今日头条自动发布工具 - 微头条/文章/视频 + NAS 统一调度(生产就绪) |
| trigger | 发布今日头条、toutiao、头条发布 |
| version | 8.0.0 |
| created | "2026-02-09T00:00:00.000Z" |
| updated | "2026-02-12T00:00:00.000Z" |
| changelog | [{"8.0.0":"✅ 2026-02-12 最终版 - 三种类型完整验证,清理所有临时文件和矛盾信息"},{"7.0.0":"✅ 2026-02-12 NAS 统一调度器完成 - 从 NAS 读取内容自动发布"},{"6.0.0":"✅ 2026-02-12 文章发布完成 - 三种类型全部验证通过"}] |
今日头条自动发布工具 - 完全自动化,零 AI 干预
| 类型 | 耗时 | 最新测试 | 说明 |
|---|---|---|---|
| 微头条 | 33.7s | ✅ 成功 | 支持自定义图片 |
| 文章 | 50.8s | pgc_id: 7605807641759875624 | 支持自定义图片 |
| 视频 | ~120s | ItemId: 7605807289903595520 | 自动上传 19MB 视频 |
统计: 成功 3 | 失败 0 - 三种类型完整验证 ✅
美国 VPS (100.71.32.28)
↓ SSH (mac-mini)
Mac mini (100.86.57.69)
↓ SSH (密钥 ~/.ssh/windows_ed)
Windows PC (100.97.242.124)
↓ Playwright 本地执行
今日头条发布成功 ✅
关键配置:
~/.ssh/windows_ed(ED25519)C:\ProgramData\ssh\administrators_authorized_keysxuxia(管理员)所有脚本都在 Windows PC 上:C:\Users\xuxia\playwright-recorder\
| 脚本 | 功能 | 状态 |
|---|---|---|
publish-weitoutiao-playwright.js | 微头条发布 | ✅ 生产可用 |
publish-article-playwright.js | 文章发布(带图片) | ✅ 生产可用(2026-02-12 完成) |
publish-video-with-buttons.js | 视频发布 | ✅ 生产可用(2026-02-12 修复) |
问题:点击"发布"按钮后,API 返回"保存成功"而不是"发布成功",文章未真正发布
原因:文章发布需要两步:
修复:
// Step 5: 点击"预览并发布"
await page.getByRole('button', { name: '预览并发布' }).click();
await page.waitForTimeout(5000);
// Step 6: 点击"确认发布"(真正的发布)
await page.getByRole('button', { name: '确认发布' }).click();
await page.waitForTimeout(10000);
验证:API 响应 message: "提交成功",返回 pgc_id(文章ID)
问题:微头条的图片按钮选择器在文章编辑器中不工作
原因:文章编辑器使用工具栏按钮(.syl-toolbar-button),不是 getByRole('button')
发现方法:逐个点击 24 个工具栏按钮,发现索引 11 是图片上传按钮
修复:
// 文章编辑器中的图片按钮
const toolbarButtons = page.locator('.syl-toolbar-button');
await toolbarButtons.nth(11).click(); // 第 12 个按钮(索引从 0 开始)
// 后续步骤与微头条相同
await page.getByText('本地上传').click();
const fileInput = page.locator('input[type="file"]').first();
await fileInput.setInputFiles(imagePath);
await page.waitForSelector('text=已上传', { timeout: 20000 });
await page.getByRole('button', { name: '确定' }).click();
问题:等待标题输入框超时
原因:Placeholder 不是 "请输入 1~80 个字符",而是 "请输入 0~30 个字符"
修复:
// 正确的选择器
const titleInput = await page.locator('input[placeholder="请输入 0~30 个字符"]');
await titleInput.waitFor({ state: 'visible', timeout: 30000 });
await titleInput.fill(''); // 先清空默认值(视频文件名)
await titleInput.fill(queueData.title);
位置:Mac mini ~/scheduler.sh
架构:
NAS 内容目录
↓ 扫描日期目录
Mac mini 调度器
↓ 生成 JSON queue → Base64 传输
Windows PC Playwright
↓ 解码执行
今日头条发布成功 ✅
# 发布指定日期的内容
ssh mac-mini 'bash ~/scheduler.sh 2026-02-12'
# 发布今天的内容
ssh mac-mini 'bash ~/scheduler.sh'
/Users/jinnuoshengyuan/nas-publish/徐啸/creator/output/
└── YYYY-MM-DD/ # 日期目录
├── post-1/ # 第一条内容
│ ├── type.txt # "article" | "weitoutiao" | "video"
│ ├── title.txt # 标题(article/video 必须)
│ ├── content.txt # 正文(article/weitoutiao 必须)
│ └── image.jpg # 图片(可选,无则用 Windows 默认图)
├── post-2/ # 第二条内容
│ └── ...
└── post-N/ # 第 N 条内容
完整测试:微头条 + 文章 + 视频,三种类型全部验证通过
| 类型 | 耗时 | 结果 | 说明 |
|---|---|---|---|
| 微头条 | 33.7s | ✅ 成功 | 自定义图片上传 |
| 文章 | 50.8s | ✅ pgc_id: 7605807641759875624 | 自定义图片上传 |
| 视频 | ~120s | ✅ ItemId: 7605807289903595520 | 19MB 视频自动上传 |
统计:成功 3 | 失败 0
Base64 编码传输 - 避免 SSH 多行 JSON 编码问题
BASE64_JSON=$(echo "$QUEUE_JSON" | base64)
ssh ... << REMOTE
echo $BASE64_JSON > q.b64
certutil -decode q.b64 q.json # 无 BOM,无编码问题
node publish-xxx.js q.json
REMOTE
自动扫描 - 遍历日期目录下所有 post-* 文件夹
类型路由 - 根据 type.txt 自动调用对应脚本
错误过滤 - 只显示关键输出(标题、成功/失败、pgc_id、ItemId、耗时)
统计报告 - 成功/失败计数
| 类型 | type.txt 值 | 必需文件 | 调用脚本 |
|---|---|---|---|
| 微头条 | weitoutiao | content.txt | publish-weitoutiao-playwright.js |
| 文章 | article | title.txt, content.txt | publish-article-playwright.js |
| 视频 | video | ⚠️ 暂不支持(文件太大,需手动处理) | - |
版本: 8.0.0 (最终版) 状态:✅ 生产就绪 - 微头条/文章/视频三种类型完整验证通过 架构:NAS → Mac mini 调度器 → Windows PC → 今日头条 清理状态:✅ 所有临时文件、测试目录、矛盾信息已清理 完整性:✅ 端到端自动化,零人工干预
使用: ssh mac-mini 'bash ~/scheduler.sh YYYY-MM-DD'