$npx -y skills add chubbyguan/chubbyskills --skill x-ingestX(Twitter) 推文采集 → 统一 frontmatter Markdown。自动区分图文与视频: 图文下载图片本地嵌入,视频提取直链转成文字稿。无需登录(走官方嵌入端点)。
| 1 | # X(Twitter) 推文采集 Skill |
| 2 | |
| 3 | 把 X 推文抓成结构化 Markdown 入库。**自动区分图文与视频笔记**:图文 → 下载图片本地嵌入; |
| 4 | 视频 → 像抖音那样转成文字稿。通过 X 官方嵌入用的 syndication 端点采集,**无需登录、无需 API Key**。 |
| 5 | |
| 6 | ## 环境要求 |
| 7 | |
| 8 | ```bash |
| 9 | # 图文采集零依赖(仅 Python 标准库) |
| 10 | |
| 11 | # 视频推文转录需要(与抖音/B站/小红书同一套依赖): |
| 12 | pip install funasr modelscope torch torchaudio |
| 13 | # macOS: brew install ffmpeg | Ubuntu: sudo apt install ffmpeg |
| 14 | ``` |
| 15 | |
| 16 | ## 使用方法 |
| 17 | |
| 18 | ```bash |
| 19 | # 采集推文 → 统一 frontmatter Markdown |
| 20 | python scripts/fetch_tweet.py "https://x.com/user/status/1234567890" -o ./out |
| 21 | python scripts/fetch_tweet.py "https://twitter.com/user/status/1234567890" -o ./out |
| 22 | |
| 23 | python scripts/fetch_tweet.py "链接" -o ./out --no-images # 图文:只留图片链接不下载 |
| 24 | python scripts/fetch_tweet.py "链接" -o ./out --no-video # 视频:不转录,只留视频链接 |
| 25 | python scripts/fetch_tweet.py "链接" -o ./out --fallback-text 手动正文.txt |
| 26 | ``` |
| 27 | |
| 28 | ## 产出 |
| 29 | |
| 30 | `fetch_tweet.py` → 统一 frontmatter Markdown(`platform: x`,含 `note_type: image|video|text|article`),含作者(`name @handle`)、互动数据(赞/回复)、话题标签。**按内容类型分流**: |
| 31 | |
| 32 | - **图文 / 纯文字推文**:正文 + 图片下载到本地 `<标题>.assets/` 并以 `![]()` 嵌入;`--no-images` 只留链接,单张失败自动回退为链接 |
| 33 | - **视频推文**:提取最高码率 mp4 直链 → ffmpeg 抽音频 → SenseVoice 转录(`language=auto`,X 中英混杂)写入 `## 视频文字稿`;`--no-video` 只留视频链接;缺 funasr/ffmpeg 时自动降级为存链接 |
| 34 | - **X 长文章(Article)**:取文章标题、预览正文、封面图(封面本地化嵌入)。⚠️ syndication 不返回长文章全文,全文需登录另抓——Markdown 会标注「预览,全文见原文链接」 |
| 35 | |
| 36 | ## ⚠️ 关于可用性 |
| 37 | |
| 38 | 采集走 `cdn.syndication.twimg.com/tweet-result`——X 官方嵌入推文用的公开端点,**无需登录**,但它是非官方契约: |
| 39 | |
| 40 | - 受保护账号、已删除、成人/受限内容可能取不到 |
| 41 | - 端点或 token 算法(`fetch_tweet.py` 里的 `make_token`)若被 X 调整,需相应更新 |
| 42 | - 目前仅支持**单条推文**;thread(连串推文)是未来增强方向 |
| 43 | |
| 44 | 抓取失败时可以使用 `--fallback-text`:把浏览器里能看到的正文复制到 txt/md 文件,脚本仍会生成统一 frontmatter 的 Markdown,保证后续 `content-enrich` / 入库工作流不断。 |
| 45 | |
| 46 | ## 合规声明 |
| 47 | |
| 48 | 仅供**个人学习与研究**使用。请遵守 X 服务条款,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。 |
| 49 | |
| 50 | ## 衔接工作流 |
| 51 | |
| 52 | - 采集产物 → `knowledge-base-management` 入库(统一 frontmatter,按 `platform` 聚合) |
| 53 | - 海外信息源 → 配合 `industry-intelligence-radar` 的 X 信号扫描,沉淀情报 |
| 54 | - 视频文字稿 → `learning-notes-automation` 提取知识点 + 闪卡 |
| 55 | |
| 56 | ## 参考 |
| 57 | |
| 58 | - X 官方嵌入(syndication)端点 |
| 59 | - [FunAudioLLM/SenseVoice](https://github.com/FunAudioLLM/SenseVoice) — 语音识别模型 |