x-tracker
X Tracker
同步并归档 X 数据(关注列表、书签、个人推文),支持内容聚合、改写和 Notion 同步。
路径约定:
{SKILL_DIR}— skill 目录(含 scripts/、references/){PROJECT_ROOT}— skill 父目录(含 config.json、data/、digests/)
首次设置
- 配置 OAuth 2.0:参考
references/oauth-setup.md - 初始化:
cd {SKILL_DIR} && bun scripts/auth.ts init - 登录:
cd {SKILL_DIR} && bun scripts/auth.ts login
所需 scope:tweet.read, users.read, follows.read, bookmark.read, offline.access
数据同步
重要:不要主动运行 sync-following.ts。关注列表由定时任务或用户手动同步,新增关注需用户确认后才纳入跟踪。
cd {SKILL_DIR}
# bun scripts/sync-following.ts # ⚠️ 仅限用户明确要求时运行
bun scripts/sync-bookmarks.ts # 书签 → data/bookmarks/
bun scripts/fetch-my-tweets.ts # 个人推文 → data/my-tweets/
bun scripts/fetch-following-tweets.ts # 关注者推文 → data/following-tweets/
日常同步(不含关注列表):bun scripts/sync-bookmarks.ts && bun scripts/fetch-my-tweets.ts && bun scripts/fetch-following-tweets.ts
每日精选(Digest)
cd {SKILL_DIR} && bun scripts/analyze.ts digest [--date YYYY-MM-DD]
零 API 调用,基于本地 following-tweets + bookmarks。按 score = like + retweet×3 + bookmark×2 排序取 Top 20。输出 digests/{date}/digest.json。
触发流程("每日精选"/"今日精选"):
- 运行 digest 命令,生成
digests/{date}/digest.json - 读取 JSON,确认
date_distribution日期分布 - 按分类生成中文精选,每条格式:
作者 | 类型 | 来源标签 | 互动数据- 英文原文(保留原始内容)
- 中文翻译/摘要(不超过 2 句话概括核心)
- 来源标签:🔖 书签 / 📌 双来源 / 无标签=关注
- 根据
tweet_date标注发布日期,非当日内容标注[MM-DD] - 写入
{PROJECT_ROOT}/digests/{date}/digest.md
内容改写(Rewrite)
cd {SKILL_DIR} && bun scripts/analyze.ts rewrite [--date YYYY-MM-DD] [--top 10]
按分数取 Top N,输出 digests/{date}/rewrite.json(含 is_link_only、expanded_url)。
触发流程("推文改写"/"内容改写"/"rewrite"):
- 运行 rewrite 命令
- 读取 JSON,确认日期:查看
date_distribution中各日期占比,若当日(tweet_date= 今天)不足半数则展示分布并让用户确认是否继续 - 纯链接处理(
is_link_only: true):列出这些推文的expanded_url,提示用户手动转存网页内容后再改写,跳过这些条目先处理其余内容 - 并行 sub-agent(Task, general-purpose, model=sonnet),每条一个(跳过纯链接)
- 改写风格见下方「改写风格指南」
- 合并写入
digests/{date}/rewrite.md
改写风格指南(sub-agent prompt 必须包含):
- 人称:第一人称,站在用户视角写,像发推/写公众号,不是写新闻稿
- 语气:口语化、短句为主,可以自嘲、可以直接,不端着、不用"值得关注的是"之类的套话
- 结构:标题(一句话抓眼球)+ 正文(200-400字),不要小标题堆叠
- 内容:先说事实(一两句话讲清楚发生了什么),再说自己的看法/体感,可以联系自身使用经验
- 禁止:AI 腔("值得注意的是"、"本质上"、"标志着"反复出现)、过度总结、三段式排比、空泛的"未来可期"
- 参考调性:
data/my-tweets/all.json中的原创推文风格——中英混用、网络用语自然、技术人视角
风格分析(Style)
cd {SKILL_DIR} && bun scripts/analyze.ts style
分析个人推文风格,输出 data/my-style/style-profile.json。
单条推文获取
cd {SKILL_DIR} && bun scripts/fetch-tweet.ts <tweet_id>
通过 X API v2 获取单条推文全文(含 note_tweet),JSON 输出到 stdout。
Notion 同步
cd {SKILL_DIR} && bun scripts/notion-sync.ts <following|bookmarks|all>
增量推送到 Notion 数据库。详见 references/notion-schema.md。
配置
{PROJECT_ROOT}/config.json(gitignored):
{
"client_id": "...",
"client_secret": "...",
"access_token": "...",
"refresh_token": "...",
"user_id": "...",
"data_dir": "./data",
"notion": { "following_db_id": "...", "bookmarks_db_id": "..." }
}
参考文档
references/x-api-endpoints.md— API 端点参考references/oauth-setup.md— OAuth 2.0 配置指南references/notion-schema.md— Notion 数据库 schema