用途
postlint-mcp 是一个 MCP 服务器,只回答一个问题:这篇社交帖子能否通过目标平台的字符限制检查。作者指出,语言模型无法通过目测准确统计字符数,而对 X、Bluesky、LinkedIn、Threads、Mastodon、Discord 等平台来说,限制并不像表面看起来那样简单:X 通过 t.co 将每个 URL 一律按 23 个字符计费,无论链接是 12 个字符还是 200 个字符;Bluesky 按扩展字素簇计数,因此一个四人家庭表情符号算 1 个字符而非 11 个;Mastodon 对远程提及中域名部分不计费。计数出错会导致发布时被拒或帖子被截断。作者记录了两个触发开发的案例:一篇 Bluesky 帖子在 300 限制下实际发出 302 字符,且下方还写着“低于 300 字素,审计通过”;一篇 X 帖子按 280 限制起草为 308 字符,本会在发布当天被拒。这两个案例都已作为回归测试收录在仓库中。
支持平台与计数规则
支持 X、Bluesky、LinkedIn、Threads、Mastodon、Discord。每一条平台数字都追溯到已发布的来源。广泛传播但无一手来源的数值,如 Facebook 帖子限制、YouTube 社区帖子限制、Reddit 标题上限、Instagram 自然配文上限等被刻意排除——无法被论证的限制会让通过的检查失去意义。
使用方式
已发布于 npm。配置块使用 npx,首次运行时自动获取,无需克隆仓库。可添加到 .mcp.json、claude_desktop_config.json,或添加到 ~/.codex/config.toml。无 token、无环境变量、无网络访问。包发布后,可用 npx -y @conorbronsdon/postlint-mcp 替换上述配置中的 node 调用。也可以直接向助手说“检查这篇帖子在 X 和 Bluesky 下是否合规”,并粘贴含若干链接的内容。
主要能力
提供 check_post 与 check_post_all 等工具。响应刻意保持精简:check_post_all 在通过的行上省略算术细节,因为代理按响应消耗 token。示例显示同一段 330 字符文本在 check_post_all 中得出 308、330、308 三个不同长度,这正是工具存在的理由。响应还提供“驱动因素”行,例如指出 69 个字符预算花在链接上,提示你把两个链接移到回复中而不是删减正文。
草稿占位符处理
草稿中常带链接占位符,而 [URL] 是五个字符,真实链接并非如此。带占位符测量、替换为真实链接后发布,就会测错。因此 [URL]、[LINK]、[YOUTUBE URL]、[SUBSTACK URL] 等占位符会按真实链接计价(一个 28 字符的 YouTube 短链,即通常发布的最短链接),并在响应中附带警告,说明该计数是下限。
限制
不发布任何内容:没有写入路径、没有凭据、没有任何网络调用。这一点通过测试强制保证——测试将 fetch、XMLHttpRequest 和 WebSocket 替换为抛错,并驱动每个工具,若日后新增调用会在 CI 失败。不检查实例的实际限制:Mastodon 服务器可自行配置,工具报告 500 的默认值,并提示你自行读取目标服务器的 configuration.statuses.max_characters。不做截断:曾考虑 truncate_to 辅助功能但被排除,因为按字符偏移截断会切断 URL、破坏字素簇、截在句子中间,按“安全”边界截断则会静默丢弃最后那个从句,无论哪种都是工具在决定帖子内容;工具只报告数字,编辑留给用户。不能检测平台会检测的所有 URL:带协议和 www. 前缀的主机总能匹配,裸域名仅在常见 TLD 上匹配(列表在 src/count.ts),而真实的 twitter-text 实现包含完整 IANA 注册表;在链接前写 https:// 即可获得精确计数。不统计媒体、投票、引用帖或链接卡片:这些有自己的规则,本工具仅测量文本。不了解内容警告:Mastodon 上 CW 与正文合计同一 500 限制,本工具只检查正文。不携带无法溯源的限制(见平台表)。
其他信息
测试不进行网络调用,因为服务器本身就不进行。两个历史超限帖子作为回归夹具放在 src/tests/lint.test.ts 中,同时包含 ZWJ 家庭表情、区域指示符旗帜、肤色修饰符、组合重音和 CJK 等字素用例。欢迎 issue 和 pull request:新增平台需要三样东西——限制值、计量单位、已发布来源;新增计数规则需要一条在缺少该规则时失败的测试。第三方重复的数字不算来源。项目由 Conor Bronsdon 构建与维护,处于维护模式,项目稳定并接受安全修复,不计划新功能,但仍欢迎 issue 和 pull request。这是独立个人项目,与任何公司无关联、无赞助、无背书。