☰
instagram-agent-skill的ig-caption:125字符可见窗口+Caption Linter,让文案在‘…more‘前不翻车
2026/10/16 6:54:35 网站建设 项目流程

【免费下载链接】instagram-agent-skill

Thirteen Claude skills that run an Instagram account: Reels off 26 scored hook formulas, a viral research skill, a caption linter, and a humanizer. Free, MIT.

项目地址:https://gitcode.com/gh_mirrors/in/instagram-agent-skill
点击查看免费下载

写 Instagram 文案最大的坑,是信息流只给你大约 125 个字符,剩下的全部藏在 "... more" 后面。几乎每条失败的文案,都死在这个窗口里:钩子写到了第三句,或者第一行是问候语,或者整条文案从一堆标签开头。ig-caption是开源项目 instagram-agent-skill(MIT 协议,免费)中的文案技能:先把"信息流里真正能看到的那 125 个字符"画成一个框给你看,再用 Caption Linter 对 8 项硬性规则逐项检查,全部通过才允许发布。

为什么是 125 字符?

Instagram 在信息流中大约只展示文案的前 125 个字符,后面的内容必须点一下 "... more" 才能看到。问题在于,绝大多数读者不会点那一下。所以你的文案第一行必须独立成立:

  • 钩子写在前 125 字符内,而不是第三句;
  • 第一行不能是问候语("Hey everyone!")、不能以#或@开头、不能以 emoji 开头;
  • 搜索词尽量放进可见窗口。

需要注意的是,125 只是一个近似值——真实截断点会随设备、字体大小和换行位置浮动。这正是caption.py强调"留余量"而不是卡着 125 字写完的原因(caption.py#L10-L15)。工具还提供了--truncate参数,可以手动测试更严格的截断点(caption.py#L198-L199):

python3 caption.py caption.txt --truncate 100

动手前先想清楚:这条文案的任务是什么

这是最容易被跳过、也最容易毁掉文案的一步。ig-caption要求你先在两种任务之间做选择(SKILL.md#L24-L38):

任务适用场景文案的职责
Job AReel 视频前两秒已经有强钩子不再做第二个钩子,负责"行动指令 + 让指令成立的上下文 + 搜索词"
Job B单图、轮播封面等没有语音钩子的形式文案本身就是内容,第一行必须像 Reel 钩子一样:具体、短、在悬念处切断

一条 Reel 如果已经在画面和口播里给了钩子,文案再去抢钩子,结果通常是两边都输。工具会明确告诉你选的是哪一种,以及为什么。

文案骨架:125 字符窗口内的结构要求

ig-caption规定的文案结构非常克制(SKILL.md#L40-L54):

Line 1 125 字符可见窗口。Job A 放行动指令,Job B 放钩子。 永远不放问候语、不放标签、不以 emoji 开头。 Body 短段落,段与段之间空一行,2~6 段。搜索词放在这里。 The ask 只有一个:评论关键词 / 收藏 / 私聊。只留一个。 Hashtags 最多 5 个,单独一行放在最底部——或者干脆不用。

两条容易被忽视的硬约束:

  • 上限是 2,200 字符,但几乎没几条文案需要写满。600 字符讲清楚并让人愿意点 "... more",胜过 1,800 字的灌水。
  • Hashtag 上限已经是 5 个。Instagram 在 2025 年 12 月 18 日起把单帖标签上限从 30 降到 5,官方明确说"更少但更精准的主题标签,比一堆泛标签效果 better"。caption.py直接按新上限执法,超了就是 FAIL(caption.py#L120-L122)。你备忘录里存的那 20 个泛标签,现在是死重。

搜索词比标签更重要了

Instagram 的搜索会读取文案正文。所以你想被搜到的词,应该以"正常人会打出来的短语"形式写进句子里,而不是堆在底部的标签块里(SKILL.md#L71-L82):

"client proposals" 作为第三行的普通词语出现,而不是底部的 "#clientproposals"。

写好草稿后,把 2~3 个目标搜索词传给 Linter 做校验:

python3 caption.py draft.txt --keywords "client proposals,agency pricing"

Linter 会报告每个关键词是否存在、有几个落进了 125 字符可见窗口,缺了哪个会明确点名。

Caption Linter:8 项检查逐项过

caption.py会输出两部分结果:先打印"WHAT THE FEED SHOWS"可见窗口框,再跑 8 项检查(caption.py#L79-L179):

检查项FAIL 条件说明
LENGTH超过 2,200 字符Instagram 硬上限
FIRST LINE空行开头 / 以标签或 @ 开头WARN:第一行超过截断点但切在半句
HOOK IS CONCRETE—WARN:可见窗口内没有任何数字或专有名词可验证
HASHTAGS超过 5 个第 5 个之后的标签不计入且显得过时
TAG PLACEMENT—WARN:有标签出现在可见窗口内,浪费信息流空间
LINKS—WARN:文案里的链接不可点击,应放简介或私聊
ONE ASK—WARN:0 个或超过 1 个行动指令(两个指令等于没有指令)
EMOJI—WARN:每 100 字符超过 4 个 emoji,读起来像装饰

每项检查给出 PASS / WARN / FAIL 状态,最终输出READY(可直接用)、REVIEW(有人工判断项)或FIX(必须先改)三种结论。

真实运行效果:一条"典型坏文案"的体检报告

下面是一段真实运行输出(含故意设置的多个问题)。注意可见窗口框:第一行问候语占了宝贵的前 125 字符,正文只挤进了 "Body paragra" 就断了;6 个标签直接触发 FAIL:

CAPTION LINT · 252 / 2200 chars · 6 hashtags · 1 ask(s) ============================================================== WHAT THE FEED SHOWS +------------------------------------------------------+ | Hey everyone! Today I wanted to talk about how I | | manage client proposals and agency pricing. So much | | to share... | | Body paragra | +-------------------------------------------- ... more + PASS LENGTH 252 / 2200 characters PASS FIRST LINE 112 characters, lands whole PASS HOOK IS CONCRETE 1 number(s) or name(s) in the visible window FAIL HASHTAGS 6 tags, over Instagram's cap of 5. Tags past the fifth do not count and the block reads as old PASS TAG PLACEMENT tags are below the fold PASS LINKS no dead links in the body PASS ONE ASK one call to action: comment a keyword PASS EMOJI 0 emoji, 0.0 per 100 characters PASS SEARCH TERMS 2/2 present, 2 in the visible window -------------------------------------------------------------- VERDICT FIX

规则很硬:VERDICT FIX时脚本以非零状态码退出(caption.py#L210),方便接进任何自动化流程;--json参数则输出结构化结果。

完整工作流:从草稿到 CAPTION READY

ig-caption规定了一个标准循环,每步都有明确产出(SKILL.md#L99-L119):

  1. 先定 Job A 还是 Job B,并说明理由;
  2. 起草文案,按上面骨架写;
  3. 跑/ig-human:文案很短,AI 腔在这里比项目里任何其他内容都更刺耳,humanizer 会清掉破折号、套话和不可见水印字符;
  4. 跑caption.py并传入搜索词:每个 FAIL 必须修掉,每个 WARN 必须出声决策,不能默默放过;
  5. 输出成品块 + 回执:
CAPTION READY job: A - the reel carries the hook visible: 118 of 125 characters used before the cut ask: one, comment CONTRACT hashtags: 3 search: "client proposals" in line 3, "agency pricing" in line 5 linter: READY

最后一条设计原则:工具不发布任何东西。它只给出复制即用的文案块,粘贴和发布由你手动完成——这既是对平台规则的尊重,也保证了发布前永远有一道人工闸门。

最容易翻车的 6 个细节

  • 问候语开头:"Hey everyone!" 是钩子的头号杀手,linter 会直接 FAIL 第一行;
  • 泛标签堆砌:#viral、#fyp、#explorepage这类标签什么也没描述,linter 内置了一份垃圾词表会点名批评(caption.py#L56-L58);
  • 文案里放链接:信息流里的链接不可点击,是死文本,放简介或私聊;
  • 一次要两件事:两个行动指令等于没有指令,caption.py会数出来;
  • 关键词指令太长:Comment CONTRACT可以,Comment "the contract guide"不行——一个词、无空格、无 emoji,并且要在视频里念出来;
  • emoji 当装饰:每 100 字符超过 4 个就会被 WARN,emoji 是标点,不是贴纸。

常见问题

125 字符是精确值吗?不是。真实截断位置随设备、字体和换行浮动,所以工具建议留余量,而不是工程化地卡在 125 收尾。

2025 年 12 月后 hashtag 规则变了吗?变了。单帖上限从 30 降到 5(2025-12-18 生效),Linter 按新规则执法,超过 5 个直接 FAIL。

这个工具会自动发布文案吗?不会。所有技能产出的都是"复制即用"的文本块,发布动作由你完成。

不用 Claude Code 也能用吗?可以。caption.py是零依赖的 Python 脚本,在本机直接运行即可(caption.py#L15-L22);SKILL.md本身也可以贴进任何支持 skill 的聊天中作为模式使用。

相关文件

  • skills/ig-caption/SKILL.md — 完整技能定义:Job A/B 判定、文案骨架、Hashtag 新规、工作流
  • skills/ig-caption/caption.py — 125 字符截断预览 + 8 项 Linter 检查
  • skills/ig-human/SKILL.md — 配套 humanizer:去 AI 腔、清不可见字符
  • templates/voice.md — 声音档案模板,所有技能共读,建议先填
  • README.md — 项目总览与 13 个技能清单

【免费下载链接】instagram-agent-skill

Thirteen Claude skills that run an Instagram account: Reels off 26 scored hook formulas, a viral research skill, a caption linter, and a humanizer. Free, MIT.

项目地址:https://gitcode.com/gh_mirrors/in/instagram-agent-skill
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询