Good posts deserve good paper. 把 X (Twitter) 上别人发的长文变成一份排版精致的中英对照 PDF 阅读版。
ReadX 是一个 ZCode / Claude Code 技能:给它一条 X 链接,它自动完成 抓取 → 去 AI 腔翻译 → Kami 排版,产出可直接阅读和存档的 PDF。
![]() |
![]() |
| 封面:作者、日期、互动数据 | 正文:英文原段(橄榄色引文)+ 中文译段对照 |
上面是真实成品预览:Andrej Karpathy 的 6,800 字长帖(Dwarkesh 播客复盘)排成的 9 页 A4。
X 上的长文在 App 内无法直接翻译,要切到网页再翻译,体验很差。ReadX 把整条链路固化成一个技能:
- 抓取 — 免登录 API(fxtwitter → vxtwitter → ThreadReaderApp 兜底),完整拿回长推文(note tweet)、推文串(thread)的全文、媒体和互动数据;X Articles 只能拿到标题/预览(免费 API 限制),会自动降级处理。
- 翻译 — 中英对照:每个英文原段紧跟中文译段。译文强制经过一道 去 AI 腔改写(规则改编自 no-ai-slop):清掉"值得注意的是/总而言之/某种程度上"式译者腔,保住作者的口语、幽默和排比,信息零增删。
- 排版 — 复用 tw93/kami 的 long-doc 中文模板:羊皮纸底色、墨蓝点缀、中文衬线字体(仓耳今楷),WeasyPrint 出 PDF,并跑 kami 的内容覆盖/密度/字体/视觉全套校验。
# 本技能
npx skills add sniu-git/ReadX -g -y
# 排版依赖 kami(推荐一起装)
npx skills add tw93/kami -g -y手动安装:把 skills/ReadX/ 整个目录放进你的技能目录(ZCode:~/.zcode/skills/,Claude Code:~/.claude/skills/,或共享的 ~/.agents/skills/)。
依赖:
- Python 3(抓取脚本纯标准库,零依赖)
- kami 首次渲染 PDF 时需要 WeasyPrint:
pip install weasyprint pypdf pymupdf pygments(可运行 kami 的scripts/build.py --doctor自检);缺失的中文字体用 kami 的scripts/ensure-fonts.sh自动补齐
/ReadX https://x.com/karpathy/status/1979644538185752935
或者自然语言:*"把这条推文翻译成中文排个版:https://x.com/…"*。技能会在给出 X/Twitter 链接并要求翻译、转 PDF 时自动触发。
产物在 ~/Downloads/x-read/<日期-用户名-主题>/:
├── 原文.md # 抓取的原文(YAML 头 + 正文 + 附图/引用/链接)
├── 译文.md # 中英对照翻译稿(Markdown 引用块格式)
└── 译文.pdf # kami long-doc 成品(EN/CN 对照排版)
- 中英对照排版:英文原段用 kami 模板自带的橄榄色引文样式,紧跟中文译段,方便核对;章节连续排布 + 引文允许跨页,正文页填充率 85%+,不会一页只有一小段。
- 忠实与语气:翻译遵循"作者本人在好好说中文"的标准——信息零增删,作者的真实语气(口语、幽默、自嘲、"I think" 式不确定)保留;原文自身的排比是修辞,照译。
- 可校验:每次产出跑 kami 的内容覆盖、页密度、字体(防中文静默降级为黑体)、视觉四道校验;已知 WeasyPrint 70 的目录页码回归在技能内自动打补丁。
- X Articles 正文拿不到(免费无登录 API 只返回标题/预览),技能会明确提示并降级;长推文和推文串可完整抓取。
- 受保护/已删除的推文无法抓取,技能会请用户直接粘贴全文。
- 排版模板针对 A4 PDF;屏幕阅读可看同目录的
译文.md。
- tw93/kami — 排版系统(ReadX 只做抓取和翻译,纸面美学全部来自 Kami)
- petergyang/no-ai-slop — 去 AI 腔规则的来源
- FixTwitter / vxTwitter、ThreadReaderApp — 免登录内容通道
MIT © 2026 Shawn NIU

