这份文档按日常使用场景整理命令。所有命令都可以用 video2post ...,如果本机命令入口还没绑定到当前仓库,就改用 python3 -m video2post.cli ...。
适合创作者先快速拿到一版可编辑稿件。
video2post video "VIDEO_URL" --fast --cleanup-source--fast 会自动开启生成,不需要再加 --generate。默认生成:
notes.mdx_article.mdx_thread.mdx_titles.md*.wechat.md/*.wechat.html*.x.md/*.x.txt
如果只想要部分产物:
video2post video "VIDEO_URL" --fast --targets notes,x_article适合需要完整中间稿和多种内容形态的场景。
video2post video "VIDEO_URL" --generate --cleanup-source标准默认 targets 来自 config.yaml 的 generation.default_targets。默认包含 translation、notes、X 产物、通用长文、脚本、标题和发布格式。
video2post video "VIDEO_URL" --output ./outputs-check这会创建任务目录、下载音频、生成转写稿,但不会调用 LLM 生成二创内容。
YouTube 默认按英文链路处理。如果视频本身是中文,加 --lang zh:
video2post video "YOUTUBE_URL" --lang zh --fast --cleanup-source这会输出 transcript.zh.md,并跳过英文翻译默认目标。
video2post video "VIDEO_URL" --output ./outputs-check --fastvideo2post video "VIDEO_URL" --generate --targets cover --cover-at 00:00:30对已有任务重新生成封面:
video2post task generate TASK_DIR --targets cover --cover-at 00:00:30不指定 --cover-at 时,对于 30 秒以上的视频,会自动在视频的 5%~95% 区间内均匀采样 5 个候选帧,保存到 cover-candidates/ 目录。cover.jpg 仍然是默认选中的主封面(视频 20% 位置)。候选帧信息记录在 cover.meta.json 中。
把日常想法、读书笔记、聊天内容或手动粘贴的 X 原推正文改写成 X 发布素材:
video2post draft "原始内容" --mode x_engage --x-url "https://x.com/user/status/123"
video2post draft --x-url "https://x.com/user/status/123"
video2post draft "https://x.com/user/status/123" --mode viral_280如果只给 X 链接,系统默认使用 --x-fetch auto:先通过 X 官方 oEmbed 接口尝试抓取原推正文;如果原推只有外链,会继续尝试抓取外链页面的标题、摘要和正文段落;如果识别到 X Article 长文,会升级到 Chrome 登录态抓取,再生成草稿。x_engage 会在 drafts/YYYY-MM-DD-.../ 下生成:
source.mdbrief.mdx_replies.mdx_quote.mdx_posts.mdmeta.json
如果只想生成一条 280 字符以内的爆款短推:
video2post draft "原始内容" --mode viral_280--x-url 会在缺少正文时尝试抓取原推正文;默认 --x-fetch auto 会在公开抓取失败且识别为 X Article 时升级到 Chrome 登录态抓取;如果同时提供正文,则只作为上下文保存。不会自动发布。
video2post task generate TASK_DIR --targets notes,x_article,x_thread,x_titles,publish_formats常见例子:
video2post task generate TASK_DIR --targets publish_formats
video2post task generate TASK_DIR --targets x_article,x_thread,x_titles
video2post task generate TASK_DIR --targets article,script,titles如果音频或转写已经存在,只想补后续缺失步骤:
video2post task retry TASK_DIR --generate --targets notes,x_article普通 Markdown 文件:
video2post format article.md --platform wechat,x已有任务目录中的稿件:
video2post format TASK_DIR --source x_article --platform wechat,x| Target | 输出文件 | 说明 |
|---|---|---|
translation |
transcript.zh.md |
英文转写稿的中文翻译/整理稿。中文来源默认跳过。 |
notes |
notes.md |
内容笔记和要点整理。 |
x_article |
x_article.md |
适合 X Articles 的长文稿。 |
x_thread |
x_thread.md |
适合拆成 X thread 的短段内容。 |
x_titles |
x_titles.md |
X 发布标题/钩子候选。 |
article |
article.md |
通用文章/公众号长文草稿。 |
script |
script.md |
视频口播脚本草稿。 |
titles |
titles.md |
通用标题候选。 |
cover |
cover.jpg, cover.meta.json |
从视频截图生成封面素材。 |
publish_formats |
*.wechat.md, *.wechat.html, *.x.md, *.x.txt |
把已有稿件转成公众号和 X 发布格式。 |
完整处理一个视频 URL,或一个本地音频/视频文件。
video2post video URL_OR_FILE [OPTIONS]常用参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
--config -c PATH |
config.yaml |
指定配置文件。 |
--output -o PATH |
配置中的 app.output_dir |
指定输出目录。 |
--lang auto/en/zh |
auto |
指定源视频语言。中文 YouTube 用 --lang zh。 |
--download / --no-download |
download | 是否下载并规范化音频。 |
--transcribe / --no-transcribe |
transcribe | 是否运行 ASR。 |
--generate / --no-generate |
no-generate | 是否生成二创内容。 |
--fast / --standard |
standard | 快速出稿模式;自动生成核心 targets。 |
--targets TEXT |
空 | 逗号分隔生成目标,例如 notes,x_article。 |
--cover-at TEXT |
空 | 封面截图时间点,例如 00:00:30。 |
--cleanup-source / --keep-source |
配置中的 app.cleanup_source |
音频规范化后是否删除压缩源文件。对本地文件输入不会删除原文件。 |
示例:
video2post video "https://www.youtube.com/watch?v=xxxx" --fast
video2post video ./local-video.mp4 --lang zh --fast
video2post video ./local-audio.wav --lang zh --generate --targets notes,x_article注意:--fast 只在 video 命令中生效。它不会改变 task generate TASK_DIR 的行为。
把命令行粘贴的原始文本改写成 X 草稿。
video2post draft "原始内容" --mode x_engage
video2post draft "原始内容" --mode viral_280
video2post draft --x-url "https://x.com/user/status/123"参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
--config -c PATH |
config.yaml |
指定配置文件。 |
--mode TEXT |
x_engage |
草稿模式:x_engage 或 viral_280。 |
--x-url TEXT |
空 | 可选 X 链接。缺少正文时会尝试抓取原推正文。 |
--x-fetch TEXT |
auto |
X 抓取模式:auto 先公开抓取,遇到 X Article 再用 Chrome 登录态;public 只公开抓取;browser 强制 Chrome 登录态。 |
--output -o PATH |
./drafts |
草稿库根目录。 |
--title TEXT |
空 | 用于生成本地目录名的标题。 |
输出:
x_engage:source.md、brief.md、x_replies.md、x_quote.md、x_posts.md、meta.json。viral_280:source.md、brief.md、viral_280.md、meta.json。
viral_280.md 会做本地 280 字符校验,超长时任务标记失败,不写入超长推文。
对已有任务目录重新生成内容。
video2post task generate TASK_DIR --targets notes,x_article参数:
| 参数 | 说明 |
|---|---|
--config -c PATH |
指定配置文件。 |
--targets TEXT |
逗号分隔生成目标。为空时使用默认 targets。 |
--cover-at TEXT |
生成 cover 时指定截图时间点。 |
从已有任务目录恢复缺失步骤。
video2post task retry TASK_DIR --generate --targets notes参数:
| 参数 | 说明 |
|---|---|
--config -c PATH |
指定配置文件。 |
--generate / --no-generate |
补齐音频/转写后是否继续生成内容。 |
--targets TEXT |
生成目标。 |
--cover-at TEXT |
封面截图时间点。 |
把一个 Markdown 文件转换成发布格式。
video2post format article.md --platform wechat,x --output ./publish
video2post format article.md --platform wechat,x --rewrite --config config.yaml参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
--platform TEXT / 位置参数 |
wechat,x |
发布平台,目前支持 wechat 和 x。例如 video2post format article.md wechat,x。 |
--config -c PATH |
config.yaml |
--rewrite 使用的 LLM 配置文件。 |
--output -o -output PATH |
输入文件所在目录 | 输出目录。 |
--rewrite |
false | 先用配置的 LLM 润色 Markdown,再做确定性发布格式转换。 |
从任务目录中选择已有稿件转换为发布格式。
video2post format TASK_DIR --source x_article --platform wechat,x参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
--source TEXT |
平台默认源 | 可选 article、x_article、notes、transcript。 |
--platform TEXT |
wechat,x |
发布平台。 |
--output -o -output PATH |
任务目录 | 输出目录。 |
--rewrite |
false | 先用配置的 LLM 润色对应 task 产物。 |
默认源规则:
- WeChat 优先使用
article.md,没有时 fallback 到x_article.md。 - X 优先使用
x_article.md,没有时 fallback 到article.md。
查看任务详细状态和错误诊断信息。
video2post task status TASK_DIR输出包含:任务状态、平台、来源 URL、已有产物清单。如果任务失败,会显示结构化错误信息和修复建议。
列出最近任务和已有产物。
video2post task list --output ./outputs-check --limit 20参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
--config -c PATH |
config.yaml |
指定配置文件。 |
--output -o PATH |
配置中的输出目录 | 任务输出目录。 |
--limit INTEGER |
10 |
最多显示多少个任务。 |
video2post doctor
video2post samples
video2post config show
video2post config show --config config.fast.yamldoctor:检查本地依赖。samples:列出内置手工回归样例。config show:打印最终生效配置。
video2post video "VIDEO_URL" --fast --cleanup-source如果结果值得精修,再补完整稿件:
video2post task generate TASK_DIR --targets article,script,titles
video2post task generate TASK_DIR --targets publish_formatsvideo2post video "VIDEO_URL" --output ./outputs-check --generate --cleanup-source长稿会自动使用 chunk 摘要和全局摘要链路;已有 chunk summary 会被复用。
video2post task generate TASK_DIR --targets publish_formats这不会重新下载、转写或调用 LLM 生成正文,只会基于已有 article.md / x_article.md 输出发布格式。
任务失败后,使用 task status 查看结构化错误信息和修复建议:
video2post task status TASK_DIR输出示例:
Status: failed
Error: YouTube requires browser cookies for authentication
Stage: audio_download
How to fix:
1. Install a JavaScript runtime: brew install node
2. Add to config.yaml:
download:
cookies_from_browser: chrome
This error is retryable. Run: video2post task retry TASK_DIR
doctor 命令会检查所有依赖并给出修复建议:
video2post doctor输出会显示每个依赖的状态(OK/MISSING/OPTIONAL),缺失项会附带安装命令。现在还会显示 ffmpeg 和 yt-dlp 的版本号、Node.js 是否安装、config.yaml 是否可解析。
- YouTube 提示登录或机器人校验:在
config.yaml配置download.cookies_from_browser: chrome或safari。 - YouTube JS 挑战失败:确认 Node.js 已安装,更新 yt-dlp 并启用
download.remote_components: ejs:github。 - LLM API 认证失败:检查
.env中的VIDEO2POST_LLM_API_KEY是否正确。 - LLM 超时:增大
llm.request_timeout_seconds或减小generation.chunk_max_chars。 - ASR 模型缺失:运行
video2post doctor查看哪些 ASR 后端已安装。 - 中文 YouTube 识别成英文链路:加
--lang zh。 - 只想重新生成某个文件:优先用
task generate TASK_DIR --targets ...。 - 不想保留下载源文件:加
--cleanup-source。 - 当前 shell 找不到
video2post:改用python3 -m video2post.cli ...。