Video Auto Publish - 短视频全流程自动化
文生视频 + 快手自动发布,一站式短视频生产流水线。
核心能力
视频生成能力
- 文生播报视频(推荐):AI配图 + edge-tts配音 + 字幕 → MP4,专业口播风格
- 图片+文案视频:纯Python实现,无需ffmpeg,单图/多图生成视频
- 支持横屏16:9(1280x720)和竖屏9:16(720x1280)
- 字幕自动叠加(白色文字+黑色描边)
- H.264视频 + AAC音频,标准MP4输出
发布能力
- 自动登录快手创作者平台(扫码 / 账密两种方式)
- 上传视频并填写标题、描述、标签
- 上传图文内容(多图 + 标题 + 描述)
- Cookie 持久化,避免重复登录
- 批量发布支持
- 发布间隔随机化,模拟人工操作
📦 安装教程(从零到可用,约 10 分钟)
第 1 步:确认环境
| 项目 | 要求 | 验证命令 |
|---|---|---|
| Python | 3.10+ | python --version 或 python3 --version |
| Microsoft Edge | 已安装(CDP发布方案依赖Edge) | 打开 Edge 确认能正常浏览网页 |
| 网络 | 可访问 cp.kuaishou.com 和微软TTS服务 |
浏览器打开快手创作者平台确认 |
| 磁盘空间 | ≥ 200MB(venv + 依赖) | — |
> ⚠️ Python 版本注意:moviepy 2.1.2 要求 Python ≥ 3.8 且 < 3.14。如果你系统 Python 是 3.14+,需要先安装 3.10-3.13 版本。
第 2 步:安装技能
通过 WorkBuddy SkillHub 安装,技能会自动解压到 ~/.workbuddy/skills/video-auto-publish/。
安装完成后,目录结构如下:
video-auto-publish/
├── SKILL.md ← 本文件(技能说明)
├── scripts/
│ ├── cdp_publish_v2.py ← 快手发布主脚本(CDP方案)
│ ├── kuaishou_publisher.py ← 快手发布旧脚本(登录功能)
│ ├── text_to_video.py ← 文生播报视频
│ ├── compose_video_v2.py ← 图+配音+字幕合成
│ ├── video_generator.py ← 纯Python视频生成器
│ ├── generate_fallback_images.py ← 兜底图生成(ImageGen限流时)
│ ├── requirements.txt ← 依赖清单
│ └── batch_config_example.json ← 批量配置示例
第 3 步:创建虚拟环境 + 安装依赖
> 所有 Python 命令都在技能目录下执行,且必须用 venv 里的 Python。
Windows:
# 进入技能目录
cd ~/.workbuddy/skills/video-auto-publish
# 创建虚拟环境
python -m venv venv
# 安装全部依赖
venv/Scripts/pip install -r scripts/requirements.txt
Linux/Mac:
cd ~/.workbuddy/skills/video-auto-publish
python3 -m venv venv
venv/bin/pip install -r scripts/requirements.txt
> 国内网络加速:如果 pip 下载慢,先换镜像:
> bash
> venv/Scripts/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
> venv/Scripts/pip install -r scripts/requirements.txt
>
验证依赖安装成功:
# Windows
venv/Scripts/python.exe -c "import playwright, edge_tts, moviepy, PIL; print('All dependencies OK')"
# Linux/Mac
venv/bin/python -c "import playwright, edge_tts, moviepy, PIL; print('All dependencies OK')"
看到 All dependencies OK 即为成功。
> 关于 Playwright Chromium:无需单独安装 playwright install chromium。发布脚本使用 CDP 连接本地 Edge 浏览器,不依赖 Playwright 内置 Chromium。视频生成脚本也是纯 Python 实现。
第 4 步:启动 Edge 浏览器(CDP 模式)
快手发布依赖 Edge 浏览器的 CDP(Chrome DevTools Protocol)连接。必须以特殊参数启动:
Windows(PowerShell):
# ① 先关掉所有正在运行的 Edge(避免端口冲突)
Stop-Process -Name msedge -Force -ErrorAction SilentlyContinue
Start-Sleep 2
# ② 以 CDP 模式启动 Edge(user-data-dir 保存登录状态)
Start-Process -FilePath 'msedge.exe' -ArgumentList '--remote-debugging-port=9222','--user-data-dir=.edge_profile','--start-maximized','https://cp.kuaishou.com/article/publish/video'
# ③ 等待 Edge 启动完成
Start-Sleep 8
# ④ 验证 CDP 端口可用(必须返回 True)
Test-NetConnection -ComputerName 127.0.0.1 -Port 9222 -InformationLevel Quiet
Linux/Mac:
# 关闭已有 Edge
pkill -f msedge 2>/dev/null || true
sleep 2
# 启动 Edge CDP
microsoft-edge --remote-debugging-port=9222 --user-data-dir=.edge_profile --start-maximized "https://cp.kuaishou.com/article/publish/video" &
sleep 8
# 验证端口
curl -s http://127.0.0.1:9222/json/version | head -n 1
> ⚠️ 关键说明:
> - --remote-debugging-port=9222:让脚本可以通过 9222 端口控制浏览器
> - --user-data-dir=.edge_profile:把登录 Cookie 保存在本地,下次不用重新扫码
> - 每次发布前都要确认 Edge 是用这个命令启动的。如果你平时手动开了 Edge(不带 debug 端口),脚本连不上 CDP,会报错。
第 5 步:快手账号登录(首次必须)
Edge 启动后自动打开了快手发布页面。首次使用需要扫码登录:
- 在 Edge 浏览器窗口中,找到快手登录页面的二维码
- 用快手 App 扫码完成登录
- 登录成功后,Cookie 自动保存在
.edge_profile/目录 - 后续 7-30 天内无需重新登录(Cookie 自动续期)
> 验证登录成功:浏览器应显示快手视频上传页面(有上传区域),而不是登录页面。
第 6 步:测试——生成一条视频并发布
安装和登录都完成后,用以下命令测试完整流程:
6.1 生成测试视频(纯Python,无需AI配图):
# Windows
cd ~/.workbuddy/skills/video-auto-publish
venv/Scripts/python.exe scripts/generate_fallback_images.py --output-dir temp_scenes/test --theme geo
venv/Scripts/python.exe scripts/video_generator.py temp_scenes/test/img01_geo_precision.png temp_scenes/test_output.mp4 "AI获客系统测试视频"
6.2 发布测试视频到快手:
# Windows
cd ~/.workbuddy/skills/video-auto-publish
venv/Scripts/python.exe scripts/cdp_publish_v2.py upload-video \
--file "temp_scenes/test_output.mp4" \
--title "AI获客系统测试视频" \
--desc "AI获客系统测试视频"
> ⚠️ 发布不加 --tags 参数!
6.3 验证发布成功:
唯一成功标准:脚本输出报告 URL 跳转到 cp.kuaishou.com/article/manage/video。
如果看到这个 URL,说明安装配置完全正确,可以正常使用了!
🚀 日常使用
使用脚本一览
| 脚本 | 用途 | 状态 |
|---|---|---|
scripts/text_to_video.py |
文生播报视频(AI配图+配音+字幕→MP4,推荐) | ✅ |
scripts/cdp_publish_v2.py |
快手自动发布主脚本(CDP连接持久化Edge) | ✅ 当前 |
scripts/kuaishou_publisher.py |
快手发布(Playwright普通context,含登录功能) | ⚠️ 仅登录用 |
scripts/video_generator.py |
纯Python视频生成器(图片→MP4,无需ffmpeg) | ✅ |
scripts/compose_video_v2.py |
图+配音+字幕 → MP4(H.264+AAC) | ✅ |
scripts/generate_fallback_images.py |
兜底图生成(ImageGen限流时,支持3种主题) | ✅ |
发布视频到快手(日常操作)
每次发布只需 2 步:
1. 启动 Edge CDP(每天第一次发布时执行):
Stop-Process -Name msedge -Force -ErrorAction SilentlyContinue
Start-Sleep 2
Start-Process -FilePath 'msedge.exe' -ArgumentList '--remote-debugging-port=9222','--user-data-dir=.edge_profile','--start-maximized'
Start-Sleep 8
Test-NetConnection -ComputerName 127.0.0.1 -Port 9222 -InformationLevel Quiet
# 必须返回 True
2. 发布视频:
# Windows
cd ~/.workbuddy/skills/video-auto-publish
venv/Scripts/python.exe scripts/cdp_publish_v2.py upload-video \
--file "你的视频.mp4" \
--title "视频标题" \
--desc "视频描述"
> 不加 --tags 参数!
发布图文
venv/Scripts/python.exe scripts/kuaishou_publisher.py upload-note \
--images img1.jpg img2.jpg img3.jpg \
--title "图文标题" \
--desc "图文描述" \
--tags "标签1" "标签2"
批量发布
venv/Scripts/python.exe scripts/kuaishou_publisher.py batch \
--config config.json
批量配置文件格式(见 scripts/batch_config_example.json):
{
"platform": "kuaishou",
"items": [
{
"type": "video",
"file": "/path/to/video1.mp4",
"title": "视频标题1",
"desc": "视频描述"
},
{
"type": "note",
"images": ["img1.jpg", "img2.jpg"],
"title": "图文标题",
"desc": "图文描述",
"tags": ["标签1"]
}
],
"interval_min": 30,
"interval_max": 120
}
文生播报视频(AI配图 + 配音 + 字幕 → MP4)⭐推荐
一键将文案生成完整播报视频:AI生成场景配图 → edge-tts配音 → 字幕叠加 → MP4输出。
方式A:从JSON配置生成(精确控制每个场景)
python scripts/text_to_video.py --config scenes.json --output video.mp4
配置文件格式(scenes.json):
{
"width": 1280,
"height": 720,
"fps": 24,
"voice": "zh-CN-YunyangNeural",
"voice_rate": "-5%",
"scenes": [
{
"image": "scene_1.jpg",
"subtitle": "一个客服,一个月工资四千五。\n一年算下来,光这一个岗位就要花将近六万。",
"voice_text": "一个客服,一个月工资四千五。一年算下来,光这一个岗位就要花将近六万。"
},
{
"image": "scene_2.jpg",
"subtitle": "现在很多老板已经换了一种玩法:用AI自动化来做。",
"voice_text": "现在很多老板已经换了一种玩法:用AI自动化来做。一个客服岗位,换成AI自动回复,一个月成本不到两百块。"
}
]
}
> 字段说明:
> - image: 场景图片路径(绝对路径或相对于JSON文件的路径)
> - subtitle: 视频中显示的字幕文本(支持 \n 换行,建议每行≤20字)
> - voice_text: 配音朗读的文本(与subtitle可以不同,voice_text是完整朗读版)
> - voice_rate: 语速调整(-5%稍慢适合播报,+0%正常,+10%稍快)
> - 可选声音:zh-CN-YunyangNeural(男声专业)、zh-CN-XiaoxiaoNeural(女声)、zh-CN-YunjianNeural(男声新闻)
方式B:从纯文案 + 图片目录生成(自动分段)
python scripts/text_to_video.py \
--text "完整文案内容..." \
--images ./scenes/ \
--output video.mp4
> 图片按文件名排序(scene_1.jpg, scene_2.jpg...),文案按段落或句号自动均匀分配到各场景。
Python API 调用:
from scripts.text_to_video import generate_tts, compose_video
# Step 1: 生成配音
generate_tts("完整文案...", "voice.mp3", voice="zh-CN-YunyangNeural", rate="-5%")
# Step 2: 合成视频
scenes = [
{"image": "scene_1.jpg", "subtitle": "字幕", "voice_text": "配音文本"},
{"image": "scene_2.jpg", "subtitle": "字幕", "voice_text": "配音文本"},
]
compose_video(scenes, "voice.mp3", "output.mp4", width=1280, height=720, fps=24)
技术参数:
| 参数 | 说明 | 默认值 |
|------|------|--------|
| width/height | 分辨率 | 1280x720(横屏)或 720x1280(竖屏) |
| fps | 帧率 | 24 |
| voice | TTS声音 | zh-CN-YunyangNeural(男声专业) |
| voice_rate | 语速 | -5%(适合播报) |
| fontsize | 字幕字号 | 38 |
输出格式:H.264视频 + AAC音频(192kbps),标准MP4,兼容快手/抖音/小红书。
常见问题:
| 问题 | 解决方案 |
|------|----------|
| moviepy 版本错误 | 必须用 moviepy==2.1.2,v1 API不兼容 |
| 字体报错 "cannot open resource" | 脚本默认用 C:/Windows/Fonts/msyh.ttc(微软雅黑),确认文件存在 |
| edge-tts 网络超时 | 检查网络,edge-tts需要访问微软TTS服务 |
| 场景时长分配不均 | 按配音文本字数比例自动分配,voice_text越长场景越长 |
| 中文引号导致Python语法错误 | JSON中用 \" 转义,或用单引号包裹字符串 |
6. 生成视频(图片+文案→MP4,纯Python无ffmpeg)
python scripts/video_generator.py <图片路径> <输出视频路径> ["文案内容"]
示例:
python scripts/video_generator.py cover.png output.mp4 "老铁们,今天给大家分享一个省钱妙招..."
Python API 使用:
from scripts.video_generator import create_video, split_subtitles
# 单图生成视频
subtitles = split_subtitles("文案内容...", 20)
create_video(
image_paths=["cover.png"],
subtitles=subtitles,
output_path="output.mp4",
title="AI视频",
width=720,
height=1280,
fps=24,
quality=70,
duration_per_scene=20
)
7. 检查登录状态
python scripts/kuaishou_publisher.py check-login
快手创作者平台关键信息
| 项目 | 信息 |
|---|---|
| 登录页面 | https://cp.kuaishou.com |
| 视频发布页 | https://cp.kuaishou.com/article/publish/video |
| 图文发布页 | https://cp.kuaishou.com/article/publish/photo |
| 创作者中心 | https://creator.kuaishou.com |
| 登录方式 | 快手 App 扫码 / 手机号+密码 |
| Cookie 存储位置 | ~/.workbuddy/skills/video-auto-publish/cookies/ |
视频生成参数说明
| 参数 | 说明 | 推荐值 |
|---|---|---|
| width/height | 视频分辨率 | 720x1280(竖屏9:16) |
| fps | 帧率 | 24 |
| quality | JPEG质量 | 70(平衡质量和大小) |
| duration_per_scene | 每场景时长 | 5秒 |
| effect | 动画效果 | zoom_in, zoom_out, pan_left, pan_right, static |
| transition | 转场效果 | fade, none |
注意事项
- 首次使用必须先登录:运行
login命令完成登录并保存 Cookie - Cookie 有效期:快手 Cookie 一般有效 7-30 天,过期后需重新登录
- 发布间隔:批量发布时建议间隔 30-120 秒,避免被平台检测
- 视频格式:支持 mp4、mov、avi,强烈推荐 mp4(兼容性最佳)
- 视频大小:快手 PC 端支持最大 4GB 视频上传,建议控制在 50MB 以内
- 图文数量:图文发布建议 2-9 张图片
- 平台规则:请确保发布内容符合快手社区规范,违规内容会导致账号受限
- 反检测:脚本已加入随机延迟和 User-Agent 伪装,但仍建议控制发布频率
- 视频生成:内置生成器输出标准MP4格式,无需ffmpeg,纯Python实现
故障排除
| 问题 | 解决方案 |
|---|---|
| Cookie 过期/登录失效 | 重新运行 login 命令 |
| 页面元素定位失败 | 平台可能改版,需更新 CSS 选择器 |
| 上传超时 | 检查网络连接,增大视频文件可能需要更长上传时间 |
| 浏览器未启动 | 确认 Google Chrome 已安装(脚本会自动检测并使用本地 Chrome) |
playwright install chromium 下载失败 |
无需担心,脚本会自动使用本地 Chrome |
| 二维码不显示 | 检查网络,尝试使用 --method password 账密登录 |
| 视频预览黑屏/无法播放 | 视频格式问题,使用内置 video_generator.py 生成标准MP4 |
| 发布按钮点击无反应 | 参考下方"发布按钮定位技巧" |
| 视频文件太大 | 降低 quality 参数(如 60)或缩短时长 |
| 发布后检测失败但视频已发布 | 成功检测逻辑已增强,参考"成功检测机制" |
发布按钮定位技巧
快手发布页面的DOM结构比较复杂,发布按钮的精确定位需要特殊处理:
问题特征:
- 页面上有多个包含"发布"字样的元素(导航按钮、真正的发布按钮等)
- 简单的 button:has-text("发布") 可能匹配到错误的元素
- 发布按钮 y 坐标常 > 视口高度(典型 y=1257 vs vh=668),直接点击会被遮挡
解决方案:
-
使用精确选择器(已内置在脚本中):
python 'div[class*="_button-primary_"]:has-text("发布")' # 精确匹配主按钮 'div[class*="edit-section-btns"] div:first-child' # 编辑区域第一个按钮 -
⚠️ 必须先 scrollIntoView 再点击(2026-06-25 修复):
python # 滚动到发布按钮位置(block: 'center' 确保完全在视口内) el.scrollIntoView({block: 'center'}) await asyncio.sleep(1) # 再点击 el.click()
不滚动直接 click() 无效,URL 不会跳转,看起来"假成功"。 -
按钮位置验证:
python # 发布按钮必须在页面底部区域(视口下方60%) is_at_bottom = btn_rect['top'] > viewport_height * 0.6 # 必须同时包含"发布"字样且在底部 if is_publish_btn and is_at_bottom: # 确认是发布按钮 -
调试方法:
使用scripts/debug_publish_button.py分析页面DOM结构:
bash cd ~/.workbuddy/skills/video-auto-publish python scripts/debug_publish_button.py
脚本会:
- 自动登录快手
- 上传测试视频
- 滚动到页面底部
- 分析所有按钮元素的DOM结构
- 保存截图到logs/debug_publish_button.png
成功检测机制
脚本通过多种方式检测发布是否成功:
检测标志:
success_indicators = [
"发布成功", "作品已发布", "审核中",
"已提交审核", "发布完成", "视频管理", "作品管理"
]
检测方式:
1. 页面文本检测:检查页面是否包含成功关键词
2. URL跳转检测:检查是否跳转到管理页面
- https://cp.kuaishou.com/article/manage/video
- https://cp.kuaishou.com/profile
3. 多轮检测:连续检测5轮,每轮间隔5秒
注意:如果脚本报告失败但视频已发布,可能是成功检测逻辑没有捕获到成功标志。建议手动登录快手创作者平台确认。
扩展计划
- [x] 内置视频生成器(纯Python,无需ffmpeg)
- [x] 文生播报视频(AI配图 + edge-tts配音 + 字幕 → MP4)
- [x] AI全自动内容创作+发布流水线(多风格/防重复/自动记忆)
- [ ] 支持抖音(Douyin)平台
- [ ] 支持封面自定义
- [ ] 支持发布结果通知(微信推送)
8. AI全自动内容创作 + 快手发布(一键流水线)⭐⭐
全自动从零生成全新原创视频并发布到快手,每次内容不重复。
触发方式
当用户说"帮我发一条快手"、"自动发布快手"、"快手日更"、"每日发布视频"时,执行此流程。
核心特性
- 内容原创性保证:每次生成前检查历史发布记录,标题/文案/图片/风格绝不重复
- 两大关键词主题轮换:AI岗位自动化、AI智能获客系统GEO(与公众号/朋友圈统一,Token代理方向自2026-07-06起取消)
- 7种视觉风格轮换:科技商务风、国风水墨、日系漫画风、写实摄影、扁平插画风、赛博朋克风、波普艺术风(与公众号7种风格统一)
- 6种切入角度轮换:成本对比、行业案例、痛点共鸣、技术科普、未来趋势、客户见证
- 3种TTS声音:男声专业、男声新闻、女声温柔
- 14个标签池随机组合:避免每次标签相同
执行流程(⚠️ 必须严格按此顺序,禁止 inline Python)
Step 1: 检查历史记录 → 排除已用风格和角度
↓
Step 2: 随机选择风格 + 角度 + 声音
↓
Step 3: 生成全新原创文案(标题+5段口播文案)
↓
Step 4: 用 ImageGen 生成5张场景配图(1280x720)
↓
Step 5: 生成TTS配音(用 venv/Scripts/edge-tts.exe,禁止 inline)
↓
Step 6: 写独立 .py 文件 → 用 venv python 执行 → 合成视频
↓
Step 7: 发布到快手(用 venv python 执行 kuaishou_publisher.py)
↓
Step 8: 记录到记忆文件
↓
Step 9: 微信通知发布结果
> ⚠️ 关键规则(违反任意一条都会导致发布失败):
> 1. 禁止 inline Python 代码:所有 Python 代码必须写入独立 .py 文件,再用 venv/Scripts/python.exe 执行。Automation 环境中 inline 代码的反斜杠会被 Python 解释为 Unicode 转义(\UXXXXXXXX),直接 SyntaxError。
> 2. 路径必须用正斜杠:Windows 路径写成 ~/... 或原始字符串 r"C:\Users...",禁止在 inline 代码字符串里用单个反斜杠。
> 3. TTS 用 venv 里的 edge-tts.exe:路径是 venv/Scripts/edge-tts.exe(Windows)或 venv/bin/edge-tts(Linux/Mac),不是系统 python -m edge_tts。
> 4. 视频合成用 venv python + moviepy 2.1.2:系统 Python 可能不支持 moviepy,必须用 venv/Scripts/python.exe(Windows)或 venv/bin/python(Linux/Mac)。
> 5. 发布不加话题标签:快手发布命令只需要 --file、--title、--desc,不需要 --tags。
正确执行示例(自动化任务参考此模板)
Step 4: 生成配图(ImageGen,并行调用)
并行调用5次 ImageGen,output_dir 设为 temp_scenes/,size 设为 1280x720
图片文件名:scene_1.png, scene_2.png, scene_3.png, scene_4.png, scene_5.png
Step 5: 生成TTS配音(写 .bat 或直接在 Bash 里用 venv 路径)
cd "~/.workbuddy/skills/video-auto-publish" && \
venv/Scripts/edge-tts.exe \
--voice zh-CN-XiaoxiaoNeural \
--rate "-5%" \
--text "口播文案全文..." \
--write-media temp_scenes/voice_2026-05-31.mp3
Step 6: 合成视频(必须先写独立 .py 文件)
先写文件 temp_scenes/make_video.py:
import sys, os
SKILL_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.join(SKILL_DIR, "scripts"))
from text_to_video import compose_video
scenes = [
{"image": "temp_scenes/scene_1.png", "subtitle": "第一段字幕", "voice_text": "第一段配音"},
# ... 共5段
]
compose_video(scenes, "temp_scenes/voice_2026-05-31.mp3", "temp_scenes/output.mp4",
width=1280, height=720, fps=24)
再执行:
cd "~/.workbuddy/skills/video-auto-publish" && \
venv/Scripts/python.exe temp_scenes/make_video.py
Step 7: 发布到快手
cd "~/.workbuddy/skills/video-auto-publish" && \
venv/Scripts/python.exe scripts/kuaishou_publisher.py upload-video \
--file "temp_scenes/output.mp4" \
--title "视频标题" \
--desc "视频描述"
(注意:不加 --tags 参数)
两大关键词轮换(与公众号/朋友圈统一)
按 day_of_year % 2 轮换,与微信公众号和朋友圈同天同关键词:
> Token代理方向自2026-07-06起取消,不再作为内容主线。
| 关键词 | 主题方向 | 核心诉求 | CTA文案 |
|---|---|---|---|
| AI岗位自动化 | 岗位自动化提效 | 赚钱 | 与其焦虑人工成本高,不如让AI帮你赚钱 |
| AI智能获客系统GEO | AI获客增长引擎 | 精准获客 | 与其烧钱投广告,不如让AI帮你精准获客 |
风格库(7种,与公众号统一)
| 序号 | 风格 | 图片提示词关键词 | 适用场景 |
|---|---|---|---|
| 0 | 科技商务风 | futuristic, flat design, blue orange, data visualization | AI技术、数据对比 |
| 1 | 国风水墨 | Chinese ink painting, watercolor, traditional | 文化结合、传统行业 |
| 2 | 日系漫画风 | anime style, vibrant colors, expressive characters | 轻松话题、年轻受众 |
| 3 | 赛博朋克风 | cyberpunk, neon lights, dark atmosphere, holographic | 未来科技、颠覆创新 |
| 4 | 扁平插画风 | flat illustration, geometric, pastel colors, minimalist | 温暖话题、通俗讲解 |
| 5 | 写实摄影 | photorealistic, DSLR, natural lighting, 8K | 真实案例、企业场景 |
| 6 | 波普艺术风 | pop art, bold colors, halftone dots, high contrast | 视觉冲击、潮流话题 |
角度库
| 角度 | 内容方向 | 示例切入点 |
|---|---|---|
| 成本对比 | 人vs AI的具体数字 | 4500/月 vs 200/月,一年省5万+ |
| 行业案例 | 餐饮/电商/客服/教育等 | 某餐饮店用AI后效率翻3倍 |
| 痛点共鸣 | 招人难/管理累/离职率高 | 又一个员工提离职,老板崩溃 |
| 技术科普 | Token/岗位包/API | Token是什么?1分钟搞懂 |
| 未来趋势 | 一人公司/零代码/自动化工 | 2026年,一个人的公司已成现实 |
| 客户见证 | 虚拟案例效果展示 | 张老板用了3个月,省了15万 |
TTS声音库
| 声音ID | 风格 | 适用 |
|---|---|---|
| zh-CN-YunyangNeural | 男声专业 | 商务、数据 |
| zh-CN-YunjianNeural | 男声新闻 | 资讯、热点 |
| zh-CN-XiaoxiaoNeural | 女声温柔 | 故事、案例 |
话题标签系统(每日智能轮换)⭐
话题标签分两层,每次发布混搭使用:
层一:核心话题池(每日轮换,取当天主题 + 生成语义词)
按 day_of_year % 话题数 轮换当日主打话题,然后围绕主打话题扩展语义词。
| 序号 | 主打话题 | 语义词扩展(自动生成) | 关联定位 |
|---|---|---|---|
| 0 | AI自动化 | AI自动回复、AI智能客服、AI流程自动化、RPA、自动化工具 | 岗位替代 |
| 1 | AI精准获客 | AI获客系统、智能营销、精准引流、AI客户获取、GEO获客 | 增长引擎 |
| 2 | 降本增效 | 企业降本、降低人工成本、省人力、提效率、自动化省钱 | 成本优势 |
| 3 | Token代理 | API代理、Token额度、通义千问代理、大模型API、AI代理 | 产品服务 |
| 4 | 深圳AI | 深圳科技、大湾区AI、深圳创业、科技之都、深圳数字化转型 | 地域标签 |
| 5 | 深圳GEO | GEO精准获客、AI搜索获客、智能搜索排名、企业曝光、精准流量 | 特色服务 |
| 6 | AI岗位包 | 岗位自动化、AI客服包、一键部署、零代码AI、AI解决方案 | 产品形态 |
| 7 | AI替代人工 | 一个人顶三个、AI效率革命、重复劳动替代、智能替代 | 价值主张 |
层二:辅助标签池(每次随机选,增加多样性)
创业, AI变现, 老板必看, 一个人顶三个人, 零代码,
数字化转型, 智能客服, 企业管理, 中小企业, 一人公司,
电商运营, 餐饮数字化, 实体店转型, 新零售, 小程序
标签生成规则
- 当日主打话题:
day % 8决定,取层一中对应当前话题 - 语义词扩展:从当日话题的语义词列中随机取 2-3 个
- 辅助标签:从层二随机取 2-3 个,排除与话题语义重复的
- 标签总数:保持 5-6 个
- 防重复:与最近 3 次发布的标签重合度不超过 40%
示例:当天话题=AI自动化
生成标签: #AI自动化 #AI流程自动化 #一个人顶三个 #企业降本 #老板必看
(主打 + 2个语义词 + 2个辅助标签)
防重复机制
- 每次执行前读取记忆文件
MEMORY.md和最近的 daily log - 检查最近5次发布的:标题、文案角度、视觉风格、话题标签、标签组合
- 标题关键词重叠不超过30%
- 风格不连续重复(排除最近2次使用的)
- 话题标签与最近3次重合度不超过40%
- 发布完成后立即记录到当天记忆文件
记忆记录格式
发布后在 memory 文件中追加:
## 快手发布记录
- 时间: 2026-05-14 14:00
- 关键词: Token代理 / AI岗位自动化 / AI智能获客系统GEO
- 标题: xxx
- 话题: AI自动化
- 文案角度: 成本对比
- 视觉风格: 科技商务风
- TTS声音: zh-CN-YunyangNeural
- 标签: #AI自动化 #AI流程自动化 #一个人顶三个 #企业降本 #老板必看
- 视频文件: /path/to/video.mp4
9. 发布前 Checklist(2026-06-25 踩坑档案,每次发布必过)
> 今天踩了 5 个坑导致发布失败/假成功,全部沉淀在这里。每天发布前逐条确认:
坑 1:Edge 没启用 CDP 端口
症状:脚本报"CDP 连接失败"或"无法获取 kuaishou.web.cp.api_st cookie"。
根因:用户自己手动开了 Edge 浏览器(无 debug 端口),脚本通过 connect_over_cdp('http://127.0.0.1:9222') 连不上。
修复:
# 先关所有 Edge
powershell -Command "Stop-Process -Name msedge -Force -ErrorAction SilentlyContinue; Start-Sleep 2"
# 用绝对路径 + debug 参数启动(Start-Process 不要用 PWD 相对路径,会失败)
powershell -Command "Start-Process -FilePath 'msedge.exe' -ArgumentList '--remote-debugging-port=9222','--user-data-dir=$HOME\.workbuddy\skills\video-auto-publish\.edge_profile','--start-maximized'"
Start-Sleep 8
# 验证
powershell -Command "Test-NetConnection -ComputerName 127.0.0.1 -Port 9222 -InformationLevel Quiet"
# 必须返回 True
坑 2:草稿弹窗残留导致上传区被遮挡
症状:进入 cp.kuaishou.com/article/publish/video 后页面没显示上传区,而是显示「是否继续编辑上次草稿」弹窗。
根因:上一次发布没成功,浏览器本地保留了草稿。
修复(点"放弃"而不是"继续编辑"):
await page.evaluate('''() => {
const btns = document.querySelectorAll('button');
for (const b of btns) { if (b.textContent.trim() === '放弃') b.click(); }
}''')
await asyncio.sleep(3)
await page.reload(wait_until='networkidle')
注意:cdp_publish_v2.py 默认会点"继续编辑"——这次故意改成"放弃",避免加载旧草稿导致新视频被覆盖到旧标题/封面。
坑 3:ImageGen 5 张并发触发限流
症状:5 张图同时调用 ImageGen,第 2-5 张全部返回 "Provider returned rate limit exceeded"。
根因:ImageGen 限流是按调用次数(不是 QPS),并发 5 个直接打满。
修复:串行调用 + 间隔 8-15 秒:
for i, prompt in enumerate(prompts):
image = await image_gen(prompt, output_dir=f"temp_scenes/{today}/")
if i < len(prompts) - 1:
await asyncio.sleep(15) # 关键:给限流恢复时间
坑 4:发布按钮 y=1257 > vh=668,点击无效
症状:脚本报告"发布按钮已点击",但 URL 没跳转,管理页作品数没增加。
根因:快手新版编辑器把"发布"按钮放在视口外(必须滚动才能看到),element.click() 在 Playwright 里对于视口外元素静默失败。
修复(已内置到 cdp_publish_v2.py 第 7 步):
# 滚动到发布按钮
await page.evaluate('''() => {
const all = document.querySelectorAll('*');
for (const el of all) {
if (el.children.length === 0 && el.textContent.trim() === '发布') {
el.scrollIntoView({block: 'center'});
return 'scrolled';
}
}
}''')
await asyncio.sleep(1)
# 选 y 最大的(页面最底部的发布按钮)
await page.evaluate('''() => {
const all = document.querySelectorAll('*');
let best = null, bestY = 0;
for (const el of all) {
if (el.children.length === 0 && el.textContent.trim() === '发布') {
const r = el.getBoundingClientRect();
if (r.y > 100 && r.y > bestY) { best = el; bestY = r.y; }
}
}
if (best) best.click();
}''')
坑 5:草稿恢复后"放弃"清空导致视频丢失
症状:第二次跑发布时弹"是否继续编辑"→ 点"放弃" → 视频从工作区消失 → 看到的是空上传页。
根因:"放弃"是清空草稿(包括已上传的视频)的操作,不是"取消加载草稿"。
修复:新版 cdp_publish_v2.py 流程已改为:
1. 看到草稿弹窗 → 点「继续编辑」(不是放弃)
2. 草稿里的视频是上次已经传好的,直接用
3. 不需要重新上传文件,节省 2-3 分钟
4. 滚动 + 点击发布按钮(坑 4 的修复)
5. 等待 URL 跳转 → 确认成功
坑 6:兜底图主题与口播文案 mismatch(2026-07-06)
症状:视频画面还是 Token代理 主题(RISING API COST / TOKEN PIPELINE / Official API vs Agent Channel),但口播文案已经切换到 AI岗位自动化 或 AI智能获客系统GEO,音画严重不一致。
根因:scripts/generate_fallback_images.py 原本硬编码为 Token代理 主题,未随内容关键词切换。当 ImageGen 限流触发兜底图时,就会出现 mismatch。
修复:
1. 重写 generate_fallback_images.py,新增 --theme 参数,支持三套主题:
- --theme ai-job:AI岗位自动化
- --theme geo:AI智能获客系统GEO
- --theme token:Token代理(历史兼容)
2. 调用兜底脚本时必须带上与当日关键词一致的主题:
bash
python scripts/generate_fallback_images.py --output-dir "temp_scenes/YYYY-MM-DD" --theme <ai-job|geo|token>
3. 兜底图默认主题已改为 geo,Token代理主题仅作为历史兼容。
坑 7:发布前调试时误创建草稿
症状:用 Python check_login 或 find_publish_btn 调试脚本访问发布页时,会创建一条草稿。
根因:快手把每次进入发布页都视为一次草稿会话。
修复:不要在发布页调试!先在 manage/video 或 creator 页调试。调试时用 incognito context,不要污染正式 profile。
发布前 6 必查项
- ✅ Edge 进程存在 + 9222 端口 True
- ✅
kuaishou.web.cp.api_stcookie 在 ctx.cookies() 里 - ✅ temp_scenes/{today}/ 下 5 张图 + voice.mp3 + output.mp4 全部存在
- ✅ scenes_2026-MM-DD.json 里 file 路径都指向实际文件
- ✅ 没有遗留草稿(如果上一个流程异常结束,先点"放弃"清空)
- ✅ 若使用兜底图,确认 visuals 与当日关键词主题一致(--theme 参数匹配)
成功判定(绝对标准)
- 唯一标准:URL 跳转到
cp.kuaishou.com/article/manage/video?status=2&from=publish - 绝不算成功:页面文字包含"发布成功"但 URL 没变
- 绝不算成功:脚本 5 次检查后 timeout
- 绝不算成功:作品数没增加(用 manage 页验证 +1)