视频标题优化器
写短视频标题最常见的三件事:先凑出几个备选,再看每个备选会不会踩雷。 这个技能只干这种机械活:用固定句式把主题和关键词拼成候选标题,再逐条算字数、算关键词覆盖率、扫极限词、数标点与 emoji,把风险标出来。它不猜流量,也不替平台做审核判断。
何时使用
| 用户说法 | 是否触发 |
|---|---|
| 帮我想几个视频标题 / 给我标题变体 | 是 |
| 这条标题会不会太长 / 小红书标题能写多少字 | 是 |
| 这个标题有没有极限词、违禁词 | 是 |
| 标题里的关键词覆盖够不够 | 是 |
| 标题是不是太夸张(感叹号、emoji 太多) | 是 |
| 帮我刷播放量 / 保证上热门 / 保证涨粉 | 否(本技能不做刷量、不给流量承诺) |
输入
一份请求 JSON(UTF-8),字段与 SKILL 解耦,optimize 与 check 都读它:
{
"platform": "抖音",
"topic": "手冲咖啡入门",
"keywords": ["手冲", "入门", "3分钟"],
"original": "教你做咖啡"
}
| 字段 | 含义 | 约束 |
|---|---|---|
platform |
平台名 | optimize/check 需要;缺省为 抖音;未知平台报错退出码 2 |
topic |
主题 | optimize 必填 |
keywords |
关键词列表 | 可选;用于覆盖率与候选拼接;无关键词覆盖率记 N/A |
original |
原始标题 | 可选;optimize 只原样回显,check 在缺 title 时回退用它 |
title |
待检查标题 | check 用;缺省时回退 original,两者都缺报错退出码 2 |
命令行也可直接给:--platform/--topic/--keywords/--original/--title(--keywords 用逗号分隔)。
子命令
optimize · 生成候选标题并逐条体检
python3 scripts/title_optimizer.py optimize --input test-samples/req_ok.json
python3 scripts/title_optimizer.py optimize --topic 手冲咖啡入门 --keywords 手冲,入门,3分钟 --platform 抖音 --json
按四种句式各产 1 条(默认取前 4 条,--count 可调,模板池上限 4):
| 句式 | 模板 | 例(topic=手冲咖啡入门,k0=手冲,k1=入门,n=关键词数) |
|---|---|---|
| 数字型 | {topic}|{n}个要点讲清 |
手冲咖啡入门|3个要点讲清 |
| 疑问型 | {topic}怎么做?{k0}要不要先学 |
手冲咖啡入门怎么做?手冲要不要先学 |
| 痛点型 | 总做不好{topic}?先看{k0} |
总做不好手冲咖啡入门?先看手冲 |
| 关键词前置型 | {k0}|{topic}|{k1} |
手冲|手冲咖啡入门|入门 |
无关键词时退化为不含关键词槽位的写法(如 {topic}|要点讲清),k1 缺省回退为 k0。每条候选输出:字数、关键词覆盖率、极限词命中列表、风险标签(超长/含极限词/夸张)。
check · 体检单条标题
python3 scripts/title_optimizer.py check --title "手冲咖啡入门|3个要点讲清" --platform 抖音 --keywords 手冲,入门,3分钟
python3 scripts/title_optimizer.py check --input test-samples/req_risky.json --json
输出字数 vs 平台上限、关键词覆盖、极限词命中、连续标点与 emoji 计数、风险标签。
platforms · 内置表
python3 scripts/title_optimizer.py platforms
python3 scripts/title_optimizer.py platforms --json
内置平台字数限制表(6 个平台)
| 平台 | 标题建议上限(字符) |
|---|---|
| 抖音 | 55 |
| 快手 | 55 |
| 小红书 | 20 |
| 视频号 | 16 |
| B站 | 80 |
| YouTube | 100 |
上限是内置的经验建议值,只用于机械比对;平台规则会调整,请以官方最新说明为准。
内置极限词表(20 词,通用示例)
最、第一、国家级、顶级、唯一、独家、100%、史上、绝对、永久、全球领先、世界级、首创、王牌、极致、万能、无与伦比、顶尖、冠军、天花板
该表为扫描用的通用示例,不是任何平台的官方词库;实际以各平台最新规则与《广告法》为准。
规则表(4 条:1 error + 3 warn)
| 规则 | 级别 | 触发条件 |
|---|---|---|
banned_word |
error | 标题命中极限词表中任一词(按子串匹配去重计数) |
over_limit |
warn | len(标题) > 平台上限 |
punct_abuse |
warn | 连续感叹号 ≥2 或连续问号 ≥2 |
emoji_abuse |
warn | emoji 数 ≥3 |
机械口径:字数 = len(标题) 按字符计(一个汉字记 1,一个 emoji 记 1);关键词覆盖率 = 命中关键词数 / 关键词总数(无关键词记 N/A);极限词命中 → error 级风险标签;超平台上限 → warn;风险标签为「超长/含极限词/夸张」三类。
输出与退出码
- 退出码
0:optimize/platforms成功;check无 error 级问题(仅有 warn 也算 0); - 退出码
1:check发现 error 级问题(命中极限词); - 退出码
2:用法或读取错误(文件不存在、JSON 解析失败、缺子命令、未知子命令、未知平台、缺标题/主题、--count< 1)。
--json 输出:optimize → candidates[](含 title/chars/limit/over_limit/keyword_hits/keyword_coverage_text/banned_hits/risk_tags)+ count/platform/limit;check → chars/limit/over_limit/keyword_coverage_text/banned_hits/punctuation/risk_tags/issues[]/counts{error,warn}/total;platforms → platforms[]/platform_count/banned_words/banned_count。
使用示例
# 1. 生成候选(默认 4 条)
python3 scripts/title_optimizer.py optimize --input test-samples/req_ok.json
# → 平台 抖音(上限 55);候选1 数字型「手冲咖啡入门|3个要点讲清」字数 13、覆盖 2/3、极限词 无;
# 候选2 字数 17;候选3 字数 15;候选4 字数 12;共 4 条,退出码 0
# 2. 体检一条干净标题
python3 scripts/title_optimizer.py check --title "手冲咖啡入门|3个要点讲清" --platform 抖音 --keywords 手冲,入门,3分钟
# → 字数 13 → 未超限;覆盖率 2/3;极限词 无;问题 0 条(error 0 / warn 0),退出码 0
# 3. 体检一条带风险的标题
python3 scripts/title_optimizer.py check --title "全网最全手冲咖啡入门教程!!!" --platform 抖音 --keywords 手冲,入门
# → 字数 15;极限词命中「最」→ [ERROR] banned_word;连续感叹号 3 个 → [WARN] punct_abuse;
# 问题 2 条(error 1 / warn 1),退出码 1
# 4. 查平台上限与极限词表
python3 scripts/title_optimizer.py platforms
注意事项
- 标题仅供参考:候选标题由通用模板拼出、检查结果是字符级机械判定,不保证流量、推荐或涨粉,也不承诺上热门。
- 不做标题党:不提供刷量、刷赞刷粉、诱导分享、诱导点击或规避平台审核的建议,只做句面组合与风险提示。
- 极限词表为通用示例:内置 20 词仅作扫描示例,不是官方词库;实际合规判断以各平台最新规则与《广告法》为准。
- 不捏造事实:候选句式为通用模板,不写入无法验证的绝对化断言,也不替用户编造数据或经历。
- 输入即口径:字数按
len()字符计,关键词覆盖率按子串命中计,均不区分词形与语义。 - 不联网、不写文件:默认只向 stdout 打印,不改输入文件、不访问网络。
边界声明
只做候选标题的模板组合与字符级机械体检;标题仅供参考,不保证流量、推荐或涨粉;不做刷量、诱导分享、刷赞刷粉、规避平台审核或标题党违规建议;内置平台上限与极限词表均为通用示例,实际以各平台最新规则与《广告法》为准;句式来自通用模板,不捏造事实、不使用无法验证的绝对化断言;检查结果不构成合规意见或运营结论,需人工核对;不联网、不写文件、不修改输入。