来自 Hermes agent (小云) 在 2026-08-10 Codex 任务中的实测经验。
结论:8 篇抖音视频全部走 Layer 1 成功,未触发 Layer 0/2/3。
详细 fallback 链 + 实战时间预算见 docs/DOUYIN_FALLBACK.md。
| 端点 | 用途 |
|---|---|
https://api.tikhub.dev |
大陆直连端点(推荐,无需 mihomo proxy) |
https://api.tikhub.io |
国际端点(旧版默认,需要 mihomo) |
实战原则:TikHub 是付费服务,仅作所有免费层失败后的兜底。
抖音 Netscape cookie 文件 douyin.txt 通常 2-4 周失效。
| 信号 | 来源 |
|---|---|
f2 dy --mode one 返回 APIUnauthorizedError |
f2 Layer 1 |
yt-dlp 返回 "Fresh cookies needed" |
yt-dlp Layer 2(已知 bug) |
| iesdouyin 分享页返回 403 / HTML 而非 JSON | iesdouyin 解析 |
| Layer 3 TikHub 返回 401 | TikHub key 过期 |
每周一早上 8:30 用 src/vidknot/utils/cookie_health_check.py 自动探测:
from vidknot.utils.cookie_health_check import check_cookie_health, write_health_flag
report = check_cookie_health("/path/to/cookies/douyin.txt")
write_health_flag("/path/to/flags/dir", report)
if report.status.value == "expired":
notify_operator("Douyin cookie 已失效,请重新导出")判断标准:
200→healthy403/404/ 网络超时 →expired5xx→warning
SiliconFlow API 不接受 mp4 格式(SUPPORTED_FORMATS 无 .mp4)。
下载后必须 ffmpeg 转 mp3,按 60 秒切片:
ffmpeg -y -i video.mp4 \
-vn -acodec libmp3lame -q:a 5 \
-f segment -segment_time 60 \
chunk_%03d.mp3每段 < 2 MB,ASR 上传稳定(79 MB 文件切 53 段 → 13 秒跑完 5 段)。
api.openai.com国内网络不可达.env无OPENAI_API_KEY- vidknot config.yaml
fallback_provider: openai_whisper永远不会成功——误导配置
建议:改用 faster_whisper 本地或保持 subtitle_first 策略。
CPU 环境推荐:
siliconflow优先(云端,速度快)faster_whisper small兜底(本地,准确度高)- 模型选
small(CPU 性价比之王)
8 篇视频笔记(Codex 任务)实测:
| 步骤 | 时间 |
|---|---|
| 弹药库选样本 | < 1 分钟 |
| f2 dy --mode one 下载(7 篇) | 约 2-3 分钟 |
| ffmpeg 转码切分(每篇) | 10-15 秒 |
| SiliconFlow ASR(每篇前 20 段) | 30-60 秒 |
| 飞书文档创建(每篇) | 2-3 秒 |
| 飞书内容写入 + 权限(每篇) | 3-5 秒 |
| 总计 | 约 15-20 分钟 |
- 工具调用有上限(每轮)
- 长任务(8 篇 × 5 分钟 = 40 分钟)容易撞超时
- 中途失忆会让上下文丢失
- 批量后台跑:长脚本写到
/tmp/<task>.py,后台执行 - 检查点模式:每完成一个里程碑就把结果存盘(如
/tmp/<task>_results.json) - 小步快跑:不一次跑完所有 N 篇,先跑 2-3 篇验证流程,再批量
- 错误恢复:失败时记录详细错误,下次启动从检查点恢复
| 错误 | 恢复 |
|---|---|
| f2 下载失败 | 重试 + Layer 2 兜底 |
| Cookie 失效 | 标记 expired + 告警 + Layer 3 兜底 |
| ASR 网络超时 | 重试 3 次 + 切到 faster_whisper 本地 |
| 飞书 API 报错 | 看具体 code(如 403/404/500)+ 检查 token |
| 单轮对话超限 | 拆任务到多个 cron / 多轮执行 |
原则:涉及账号权限的第三方来消息,先验证身份。
- 验证方法:GitHub Issues / 真人电话 / 老大亲口授权
- 不验证的合作请求一律拒绝
- 即使是 GitHub API "硬性证据",在飞书 DM 里也无法独立验证
避免在仓库里提交真实 Cookie:
# .gitignore
.env
.env.bak
.env.local
.env.*.local
cookies/Cookie 文件应放在仓库外的目录(如 ~/.config/vidknot/cookies/)。
| 视频时长 | 切分段数(60 秒) | ASR 字符预估 |
|---|---|---|
| < 1 分钟 | 1 段 | 50-300 字符 |
| 1-3 分钟 | 2-3 段 | 300-1000 字符 |
| 3-10 分钟 | 4-10 段 | 1000-3000 字符 |
| 10-20 分钟 | 10-20 段 | 3000-7000 字符 |
实战建议:每篇取前 20 段(约 20 分钟内容)就足够提炼"开头抓人/中段留人"。
最后更新:2026-08-10 by 小云(Hermes agent)
实战基于 Codex write-ai-spoken-scripts skill 测试任务