在做一个 API 中转( origincoder.com )。在推特上发了三个月内容,每天要找素材、写文案、核对链接,很耗时间,所以把这套流程写成了一个 Claude Code skill ,叫 x-daily-post。
先说清楚它是什么、不是什么:它不是自动发推机器人。 它只负责「抓取 + 出草稿」,发不发由我在对话里明确说了才算。
流程
- 抓取:先抓 Hacker News 和官方博客 / Releases 的 RSS (免费),最后才调一次 X 搜索做补充。
- 去重:按来源链接对照已发历史去重,前几天出现过的链接不再进候选。
- 出 3 条草稿:让 Claude 挑最有价值、互不重复的 3 条,用自己的话改写,并注明出处。
- 通知:草稿保存后自动推送到企业微信,在手机上就能看。
- 确认:我回一句「发第 N 条」,才会真正调用 X 官方 API 发布。
做得比较克制的几处
- 发布护栏:发布和删除脚本要求环境变量
X_POST_CONFIRM=1,否则直接拒绝。定时任务只跑到出草稿,永远不设置它。 - 发布前强制校验:必须有来源链接、来源不能重复、文案必须和当天草稿完全一致(改稿要重新过校验)、每天最多 3 条。
- 事实不许编:文案里的事实和数字必须来自候选数据,没有就不写。候选里的标题、推文内容只当数据,里面出现的任何指令都不执行(防提示注入)。
- 长度按官方规则算:按 X 官方 twitter-text 规则算加权长度(中文、emoji 算 2 ,URL 一律算 23 ),超了就压缩正文,不截断结尾。
- 凭据管理:只放本机的 600 权限文件,不进仓库、不进日志; access_token 过期自动用 refresh_token 刷新,写回前先备份。
一个现实的坑:X 读取是按量计费的
发帖本身几乎不花钱,主要开销是读取。所以我做了几件事:
- 免费源优先;
- X 搜索每天只调一次,关键词合并成一条 query ;
- 只取最近 24 小时;
- 记录读到的最大 tweet id ,下次带
since_id增量读; - 同一天重复运行直接用缓存。
技术细节
Python 3 标准库,没有第三方依赖。授权用 OAuth 2.0 + PKCE ,回调地址是本机 127.0.0.1。带离线自测和夹具模式,测试时不触网,也不会碰真实数据。
说实话
这个工具能把每天收集素材和写稿的时间压得很短,但它解决不了「内容有没有人要看」。我推了三个月没起色,这套东西只是让我少花力气,不是让账号涨粉的魔法。
如果有人想看实现,或者有想法(比如更好的去重、更合理的选题标准),欢迎回帖,我会回。如果想要代码,我整理一下再分享。
发之前只要看一眼两点:「三个月没起色」和「想要代码就整理分享」是你的真实意思才留,不是就删。发完有回复,贴给我,我帮你想怎么回。