English | 中文
万能内容抓取器 — 从任意平台抓取、转录和消化内容。
给它一个 URL(文章、视频、播客、推文),返回结构化的内容。支持 CLI 命令行、Python 库、MCP 服务器和 Claude Code 技能四种使用方式。
项目来源:feedgrab 是在 @runes_leo 的 x-reader 和 @dotey(宝玉)的 baoyu-danger-x-to-markdown Claude Code 技能基础上融合升级而来。继承了 x-reader 的多平台架构,融合了宝玉 skill 逆向工程的 X/Twitter GraphQL 深度抓取能力。
任意 URL → 平台检测 → 抓取内容 → 统一输出
↓ ↓ ↓
自动识别 文本:Jina Reader → output/X/作者_日期:标题.md
8+ 平台 视频:InnerTube API → yt-dlp 字幕 → output/YouTube/作者_日期:标题.md
音频:Whisper 转录
API:Bilibili / RSS / Telegram / YouTube Data API v3 / GitHub REST API / 飞书 Open API
X/Twitter:GraphQL → FxTwitter → Syndication → oEmbed → Jina → Playwright
Python 层负责文本抓取和 YouTube 字幕提取。Claude Code 技能(可选)提供完整的 Whisper 视频/播客转录和 AI 内容分析功能。
feedgrab 可自由组合,按需使用:
| 层级 | 功能 | 格式 | 安装方式 |
|---|---|---|---|
| Python CLI/库 | 基础内容抓取 + 统一数据结构 | 见 安装 | 必需 |
| Claude Code 技能 | 视频转录 + AI 分析 + 内容抓取 | npx skills add iBigQiang/feedgrab |
可选 |
| MCP 服务器 | 将阅读能力暴露为 MCP 工具 | python mcp_server.py |
可选 |
# 抓取任意 URL
feedgrab https://mp.weixin.qq.com/s/abc123
# 从剪贴板读取 URL 并抓取(解决 PowerShell 中 & 符号报错问题)
feedgrab clip
# 抓取推文(配置好 Cookie 后自动走 GraphQL 深度抓取)
feedgrab https://x.com/elonmusk/status/123456
# 批量抓取书签(需要 X_BOOKMARKS_ENABLED=true)
feedgrab https://x.com/i/bookmarks
feedgrab https://x.com/i/bookmarks/2015311287715340624 # 指定书签文件夹
# 批量抓取用户推文(需要 X_USER_TWEETS_ENABLED=true)
feedgrab https://x.com/iBigQiang # 抓取全部推文
X_USER_TWEETS_SINCE=2026-02-01 feedgrab https://x.com/iBigQiang # 指定日期之后
# ↑ 超过 ~800 条时自动启动浏览器搜索补充(需 feedgrab login twitter)
# 批量抓取 Twitter 列表推文(需要 X_LIST_TWEETS_ENABLED=true)
feedgrab https://x.com/i/lists/2002743803959300263 # 抓取最近 1 天
X_LIST_TWEETS_DAYS=3 feedgrab https://x.com/i/lists/2002743803959300263 # 抓取最近 3 天
X_LIST_TWEETS_SUMMARY=true feedgrab https://x.com/i/lists/... # 生成汇总表格(MD + CSV)
# 批量抓取小红书作者笔记(需要 XHS_USER_NOTES_ENABLED=true + feedgrab login xhs)
feedgrab https://www.xiaohongshu.com/user/profile/5eb416f...
XHS_USER_NOTES_SINCE=2026-02-01 feedgrab https://www.xiaohongshu.com/user/profile/5eb416f... # 指定日期之后
# 批量抓取小红书搜索结果(需要 XHS_SEARCH_ENABLED=true + feedgrab login xhs)
feedgrab "https://www.xiaohongshu.com/search_result?keyword=开学第一课&source=web_explore_feed"
# 搜索小红书笔记(通过 xhshow API,无需登录)
feedgrab xhs-so "AI Agent" # 综合搜索
feedgrab xhs-so "AI Agent" --sort popular # 按热门排序
feedgrab xhs-so "AI Agent" --type video # 只搜视频
feedgrab xhs-so "AI Agent" --sort latest --limit 50 # 最新 50 条
feedgrab xhs-so "AI Agent" --save # 同时保存单篇 .md
feedgrab xhs-so "claude code,openclaw,养龙虾" --merge # 多关键词合并到一个表格
feedgrab xhs-so "claude code,openclaw" # 多关键词分别生成表格
# 搜索微信公众号文章(通过搜狗微信搜索)
feedgrab mpweixin-so "AI Agent"
feedgrab mpweixin-so "AI Agent" --limit 5 # 限制结果数量
# 搜索 YouTube 视频
feedgrab ytb-so "AI Agent"
feedgrab ytb-so "教程" --channel @AndrewNg --order viewCount
feedgrab ytb-so "ML" --after 2025-01-01 --limit 5
# 搜索 Twitter 推文(按互动量排序的汇总表格)
feedgrab x-so openclaw # 默认:最近1天 + 中文 + 最新tab
feedgrab x-so "AI Agent" --days 7 --min-faves 50 --sort top # 自定义参数
feedgrab x-so '"openclaw" lang:zh since:2026-03-01' --raw # 原始查询模式
feedgrab x-so openclaw --save # 同时保存单篇推文 .md
feedgrab x-so "梯子,VPN,v2ray,小火箭" --merge # 多关键词合并到一个表格
feedgrab x-so "claude code,openclaw" # 多关键词分别生成表格
# 下载 YouTube 视频/音频/字幕(输出到 OUTPUT_DIR/YouTube/ 目录)
feedgrab ytb-dlv https://www.youtube.com/watch?v=xxx # 下载视频 (MP4)
feedgrab ytb-dla https://www.youtube.com/watch?v=xxx # 下载音频 (MP3)
feedgrab ytb-dlz https://www.youtube.com/watch?v=xxx # 下载字幕 (SRT)
feedgrab ytb-dla https://youtu.be/xxx?si=xxx # 支持短分享链接
# 按公众号账号批量抓取全部历史文章(需要 feedgrab login wechat)
feedgrab mpweixin-id "饼干哥哥AGI"
MPWEIXIN_ID_SINCE=2025-01-01 feedgrab mpweixin-id "饼干哥哥AGI" # 指定日期之后
# 按专辑批量抓取公众号文章(公开专辑,无需登录)
feedgrab mpweixin-zhuanji "https://mp.weixin.qq.com/mp/appmsgalbum?__biz=xxx&album_id=xxx"
MPWEIXIN_ZHUANJI_SINCE=2026-01-01 feedgrab mpweixin-zhuanji "..." # 指定日期之后
# 抓取 GitHub 仓库 README(自动检测中文 README 优先)
feedgrab https://github.com/nicepkg/aide # 仓库首页
feedgrab https://github.com/nicepkg/aide/blob/main/README.md # README 文件页
feedgrab https://github.com/nicepkg/aide/tree/main/src # 内页(自动回退到仓库级别)
# 抓取飞书文档(需要 feedgrab login feishu 或配置 Open API 凭据)
feedgrab https://xxx.feishu.cn/wiki/ABC123 # wiki 文档
feedgrab https://xxx.feishu.cn/docx/ABC123 # docx 文档
FEISHU_DOWNLOAD_IMAGES=true feedgrab https://xxx.feishu.cn/wiki/ABC123 # 同时下载图片
# 批量抓取飞书知识库
feedgrab feishu-wiki https://xxx.feishu.cn/wiki/ABC123 # 递归抓取知识库所有文档
# 批量抓取多个 URL
feedgrab https://url1.com https://url2.com
# 登录某个平台(一次性操作,用于浏览器兜底)
feedgrab login xhs
# Chrome CDP 自动提取 Cookie(Chrome 已登录状态下,免去手动登录流程)
# 前提:Chrome 开启 Remote Debugging(chrome://inspect/#remote-debugging)
CHROME_CDP_LOGIN=true feedgrab login twitter
CHROME_CDP_LOGIN=true feedgrab login xhs
# 下载推文图片/视频到本地(保存到 attachments/{item_id}/ 子目录)
X_DOWNLOAD_MEDIA=true feedgrab https://x.com/user/status/123
XHS_DOWNLOAD_MEDIA=true feedgrab https://www.xiaohongshu.com/explore/xxx
MPWEIXIN_DOWNLOAD_MEDIA=true feedgrab https://mp.weixin.qq.com/s/xxx
# 自动检测本机 Chrome UA 并写入 .env(推荐首次部署时运行)
feedgrab detect-ua
# 一键诊断(Cookie、依赖、queryId、网络)
feedgrab doctor # 全平台检查
feedgrab doctor x # Twitter/X 专项
feedgrab doctor xhs # 小红书专项
feedgrab doctor mpweixin # 微信公众号专项
feedgrab doctor feishu # 飞书专项
# 查看内容统计
feedgrab list
# 重置子目录(删除 .md 文件 + 清理去重索引,方便重新抓取)
feedgrab reset bookmarks/OpenClaw # 重置书签文件夹
feedgrab reset status_author/向阳乔木 # 重置账号推文目录
feedgrab reset bookmarks/all # 重置全部书签
# 清理索引目录中的批量记录和缓存文件(保留去重索引)
feedgrab clean-index # 交互确认后清理
feedgrab clean-index --yes # 跳过确认直接清理
feedgrab reset会扫描目标目录下所有.md文件的 YAML front matter,提取item_id并从去重索引中移除,然后删除文件。执行前会显示待删除数量并要求确认。找不到目录时会自动列出所有可用的子目录。
feedgrab clean-index清理索引目录中除item_id_url.json(全局去重索引)以外的所有文件,包括批量记录(status_*.json、list_*.json等)和 API 断点缓存(.api_discovery_*.jsonl)。这些文件在采集完成后不再需要,定期清理可释放磁盘空间。
一键安装所有技能:
npx skills add iBigQiang/feedgrab包含 5 个技能:
| 技能 | 命令 | 说明 |
|---|---|---|
feedgrab |
/feedgrab <URL> |
核心抓取 — 给 URL 返回结构化 Markdown |
feedgrab-batch |
/feedgrab-batch |
批量抓取 — 书签、用户推文、搜索、微信批量等 |
feedgrab-setup |
/feedgrab-setup |
安装引导 — pip install + 配置 + 诊断 |
analyzer |
/analyze <URL> |
内容分析 — 多维度结构化分析报告 |
video |
自动触发 | 视频转录 — yt-dlp 字幕 + Whisper 转录 |
安装后在 Claude Code 中直接发送 URL,对应技能会自动触发。
需要克隆仓库(mcp_server.py 不包含在 pip install 中)。
git clone https://github.com/iBigQiang/feedgrab.git
cd feedgrab
pip install -e ".[mcp]"
python mcp_server.py暴露的工具:
read_url(url)— 抓取任意 URLread_batch(urls)— 批量并发抓取多个 URLlist_inbox()— 查看已抓取的内容detect_platform(url)— 从 URL 识别平台
Claude Code 配置(~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"feedgrab": {
"command": "python",
"args": ["/你的路径/feedgrab/mcp_server.py"]
}
}
}| 平台 | 文本抓取 | 视频/音频转录 |
|---|---|---|
| YouTube | InnerTube API(零依赖零 quota)+ YouTube Data API v3 搜索 | InnerTube → yt-dlp 字幕 → Groq Whisper 兜底 + 智能断句 + 章节解析 |
| B 站 (Bilibili) | API | 通过 Claude Code 技能 |
| X / Twitter | GraphQL → FxTwitter → Syndication → oEmbed → Jina → Playwright | — |
| 微信公众号 | Jina → Playwright WeChat JS 提取(单篇 + markdownify 富文本 + 图片防盗链)/ 搜狗搜索(mpweixin-so)/ MP 后台 API 按账号批量(mpweixin-id)/ 专辑批量(mpweixin-zhuanji) |
— |
| GitHub | REST API(仓库元数据 + 中文 README 优先(含子目录语言链接搜索)+ 相对图片链接补全 + 摘要提取) | — |
| 小红书 | API (xhshow) → Pinia Store 注入 → Jina → Playwright 深度抓取 (单篇 + 作者批量 + 搜索批量 + 关键词搜索 xhs-so) |
— |
| 飞书/Lark | Open API → CDP 直连 → Playwright PageMain → Jina(单篇 + 知识库批量 feishu-wiki + 嵌入表格 + 图片下载) |
— |
| Telegram | Telethon | — |
| RSS | feedparser | — |
| 小宇宙播客 | — | 通过 Claude Code 技能 |
| Apple Podcasts | — | 通过 Claude Code 技能 |
| 任意网页 | Jina 兜底 | — |
*小红书支持 API 抓取(xhshow,无需登录)和 浏览器抓取(需一次性登录:
feedgrab login xhs)。单篇抓取优先走 API(完整元数据 + 评论),API 不可用时自动降级到 Pinia Store 注入(浏览器原生请求,无需第三方签名库)→ Jina → Playwright。关键词搜索(feedgrab xhs-so)和作者主页批量、搜索结果批量同样支持 Pinia 兜底层。XHS_PINIA_ENABLED=true(默认开启)。YouTube Whisper 转录需要
GROQ_API_KEY— 从 Groq 免费获取
feedgrab 对 X/Twitter 内容采用先进的六级兜底策略:
| 层级 | 方式 | 是否需要认证 | 能力 |
|---|---|---|---|
| 0 | GraphQL API | 需要 Cookie(auth_token + ct0) |
完整线程、图片、视频、引用推文、长文章 |
| 0.3 | FxTwitter API | 不需要 | 文本、图片、视频、完整互动数据(含 views/bookmarks)、Article Draft.js、作者画像 |
| 0.5 | Syndication API | 不需要 | 文本、图片、视频、互动数据(likes/replies)、article 检测 |
| 1 | oEmbed API | 不需要 | 单条推文文本(仅公开推文) |
| 2 | Jina Reader | 不需要 | 个人主页、非推文页面 |
| 3 | Playwright | 可选 session | 需要登录的内容,最后兜底 |
FxTwitter API 的价值:第三方公共 API,无需认证即可获取接近 GraphQL 的数据完整度(含 views、bookmarks、Article 全文)。缺少 blue_verified、listed_count 和线程展开。批量模式下连续 3 次失败自动触发 circuit breaker 跳过。
Syndication API 的价值:有 Cookie 时 GraphQL 自动切换,正常使用基本不会降级到 Syndication。Syndication 的价值在于:当 Cookie 全部过期/失效时,用户不需要立刻重新登录,仍能拿到 80% 的数据(缺 retweets/bookmarks/views 三项),而不是降级到只有纯文本的 oEmbed。
Tier 0(GraphQL)移植自 baoyu-danger-x-to-markdown 技能,特性包括:
- 动态
queryId解析(从 X 前端 JS bundle 中提取) - 完整线程重建(作者自回复链)
- 多阶段分页(向上 + 向下 + 续页)
- 完整媒体提取(图片、视频、引用推文)
- 互动数据(likes / retweets / replies / bookmarks / views)
- 作者回帖 + 评论区采集(可选开关)
- 书签批量抓取(全部书签 / 指定文件夹)
- 用户推文批量抓取(全部 / 按日期过滤,自动跳过 RT + 会话去重)
- 列表推文批量抓取(按天数过滤 1/2/3/7 天,会话去重,线程自动深度抓取)
- 浏览器搜索补充(突破 UserTweets ~800 条限制,自动按月分片搜索补充历史推文)
- 全局去重索引(跨模式统一去重)
Tier 0(GraphQL)需要 Twitter Cookie 才能获取完整数据。未配置 Cookie 时会自动降级,但将导致:
- 无法获取 likes / views / bookmarks 等互动指标
- 无法获取作者回帖和评论
- 无法使用书签批量抓取和账号批量抓取
- 仅能获取基础正文内容(oEmbed + Jina 兜底)
配置方法(任选其一):
feedgrab login twitter自动打开浏览器,登录 X 账号后 Cookie 会保存到 sessions/twitter.json,后续自动读取。
从浏览器 DevTools 手动复制 Cookie 值:
- 打开 https://x.com 并登录
- 按 F12 打开开发者工具 → Application → Cookies →
https://x.com - 找到
auth_token和ct0两个值 - 写入
.env文件:
X_AUTH_TOKEN=你的auth_token值
X_CT0=你的ct0值环境变量优先级最高,设置后会覆盖其他来源的 Cookie。
创建 sessions/x.json(路径受 FEEDGRAB_DATA_DIR 控制,默认 sessions/):
{
"auth_token": "你的auth_token值",
"ct0": "你的ct0值"
}还支持方式 4:Chrome CDP 自动提取 — 在 Chrome 中开启
chrome://inspect/#remote-debugging,然后CHROME_CDP_LOGIN=true feedgrab login twitter即可从已登录的 Chrome 秒提取 Cookie。
Cookie 优先级:环境变量 > Playwright session (twitter.json) > Cookie 文件 (x.json) > Chrome CDP
批量抓取时 GraphQL 容易触发 429 限流。配置多个 X 账号的 Cookie 可自动轮换:
sessions/
├── twitter.json ← 主账号(feedgrab login twitter 自动生成)
├── x_2.json ← 第二个账号(手动创建)
├── x_3.json ← 第三个账号...
额外账号的 Cookie 文件格式同方式 3。获取方法:
- 用 Chrome/Edge 打开 https://x.com 并登录目标账号
- 按 F12 → Application 标签 → 左侧展开 Cookies → 点击
https://x.com - 找到
auth_token和ct0两行,复制值填入sessions/x_2.json
Cookie 不绑定 IP/设备,可跨电脑使用。只要不在浏览器上退出登录,Cookie 就一直有效。
429 时自动切换到下一个未限流账号,15 分钟冷却后自动恢复。
替代浏览器搜索补充的服务器友好方案,无推文数量限制,$0.15/千条。
使用场景:
- 推文超过 800 条时自动替代 Playwright 浏览器搜索(配置 API Key 即可)
- 服务器部署:
X_API_PROVIDER=api全量走付费 API,无需 Cookie 和浏览器
# .env 配置
TWITTERAPI_IO_KEY=your_api_key # 从 https://twitterapi.io 获取
# X_API_PROVIDER=graphql # graphql(默认) | api(全量付费API)
# X_API_SAVE_DIRECTLY=false # true=直接保存(快,无图片) | false=GraphQL补全(推荐)
# X_API_MIN_LIKES= # 最低点赞数(留空=不过滤,三项为 OR 关系)
# X_API_MIN_RETWEETS= # 最低转发数
# X_API_MIN_VIEWS= # 最低阅读量智能直保模式 (X_API_SAVE_DIRECTLY=true):普通推文用 API 数据直接保存(快速),长文(article)和线程(thread)仍走 GraphQL 获取完整媒体。
断点续传:发现阶段实时写入缓存文件,中断后重新运行从断点继续,不重复消耗 API 额度。
每条内容保存为独立的 Markdown 文件,按平台分目录存放:
output/
├── X/ # Twitter/X
│ ├── index/ # 去重索引 + 批量抓取记录
│ ├── status/ # 单篇推文
│ ├── status_xxx/ # 用户推文(按 display_name)
│ ├── bookmarks/ # 全部书签
│ ├── bookmarks_xxx/ # 书签文件夹(按名称)
│ └── search/ # 关键词搜索结果(x-so 命令,.md + .csv)
│ └── 1day_new/ # 按天数+排序分目录
├── XHS/ # 小红书
│ ├── index/ # 去重索引 + 批量抓取记录
│ ├── notes_xxx/ # 作者笔记(按作者名分目录)
│ ├── search_xxx/ # 搜索笔记(按关键词分目录)
│ └── search/ # 关键词搜索结果(xhs-so 命令,.md + .csv)
├── mpweixin/ # 微信公众号
├── YouTube/ # YouTube
│ └── search_xxx/ # 搜索结果(按关键词分目录)
├── GitHub/ # GitHub 仓库
│ └── index/ # 去重索引
├── Bilibili/ # B 站
├── Telegram/ # Telegram
└── RSS/ # RSS
文件命名格式(Twitter):作者名_YYYY-MM-DD:标题.md(如 强子手记_2026-02-24:最近看到好多新蓝V都成功✅认证了创作者身份。.md)
文件命名格式(YouTube):作者名_YYYY-MM-DD:标题.{md,mp4,mp3,srt}(如 影视飓风_2026-02-12:能卖上亿美金?国产短剧如何征服世界?.md)
文件命名格式(小红书):作者名_YYYY-MM-DD:标题.md(如 墨客老师资料库_2026-02-18:开学第一课还没思路的班主任看过来👀.md)
文件命名格式(GitHub):owner_repo:README摘要.md(如 nicepkg_aide:在 VSCode 中征服任何代码:一键注释、转换、UI 图生成代码、AI 批量处理文件!.md)
文件使用 Obsidian 兼容的 YAML front matter:
Twitter 示例:
---
title: "OpenClaw新手完整学习路径"
source: "https://x.com/AI_Jasonyu/status/123"
author:
- "@AI_Jasonyu"
author_name: "鱼总聊AI"
published: 2026-02-25
created: 2026-02-26
cover_image: "https://pbs.twimg.com/media/xxx.jpg"
likes: 1075
retweets: 315
replies: 41
bookmarks: 2180
views: 426321
tags:
- "clippings"
- "twitter"
---小红书示例:
---
title: "开学第一课还没思路的班主任看过来👀"
source: "https://www.xiaohongshu.com/explore/69948f62..."
author:
- "墨客老师资料库"
author_url: "https://www.xiaohongshu.com/user/profile/5eb416f..."
published: 2026-02-18
created: 2026-02-27
cover_image: "https://sns-webpic-qc.xhscdn.com/..."
likes: 179
collects: 242
comments: 28
location: "福建"
tags:
- "开学第一课ppt"
- "开学第一课"
- "教师开学第一课"
item_id: db22cbe3d9c0
---GitHub 示例:
---
title: "在 VSCode 中征服任何代码:一键注释、转换、UI 图生成代码、AI 批量处理文件!💪"
source: "https://github.com/nicepkg/aide"
author:
- "nicepkg"
published: 2024-07-03
created: 2026-03-07
description: "Conquer Any Code in VSCode..."
stars: 2684
forks: 207
language: "TypeScript"
license: "MIT"
default_branch: "master"
repo_created: "2024-07-02"
repo_updated: "2026-03-06"
last_push: "2025-05-06"
readme_file: "README_CN.md"
tags:
- "agent"
- "ai"
item_id: 8f3a1b2c4d5e
---设置
OBSIDIAN_VAULT后,内容会直接写入 Obsidian 笔记库对应的平台子目录。
# 从 GitHub 安装(推荐)
pip install git+https://github.com/iBigQiang/feedgrab.git
# 带隐身浏览器 + TLS 指纹(patchright + browserforge + curl_cffi — 推荐,反检测能力最强)
pip install "feedgrab[stealth] @ git+https://github.com/iBigQiang/feedgrab.git"
patchright install chromium
# Twitter 搜索增强(x-client-transaction-id 反检测签名,x-so 命令必需)
pip install "feedgrab[twitter] @ git+https://github.com/iBigQiang/feedgrab.git"
# 小红书 API 增强(xhshow API 抓取,xhs-so 命令必需)
pip install "feedgrab[xhs] @ git+https://github.com/iBigQiang/feedgrab.git"
# 或使用 Playwright 兜底
pip install "feedgrab[browser] @ git+https://github.com/iBigQiang/feedgrab.git"
# 安装所有可选依赖
pip install "feedgrab[all] @ git+https://github.com/iBigQiang/feedgrab.git"安装完成后,运行一键部署引导:
feedgrab setup按提示完成 5 个步骤:环境检查 → 配置文件 → UA 检测 → 平台登录 → 功能启用,即可开始使用。每步可跳过,重复运行自动跳过已完成项。
或克隆后本地安装:
```bash
git clone https://github.com/iBigQiang/feedgrab.git
cd feedgrab
pip install -e ".[all]"
patchright install chromium # 推荐(反检测更强)
# 或: playwright install chromium
# macOS
brew install yt-dlp ffmpeg
# Linux
pip install yt-dlp
apt install ffmpegWhisper 转录需要从 Groq 免费获取 API 密钥并设置:
export GROQ_API_KEY=your_key_hereimport asyncio
from feedgrab.reader import UniversalReader
async def main():
reader = UniversalReader()
content = await reader.read("https://mp.weixin.qq.com/s/abc123")
print(content.title)
print(content.content[:200])
asyncio.run(main())复制 .env.example 为 .env:
cp .env.example .env| 变量 | 必需 | 说明 |
|---|---|---|
X_AUTH_TOKEN |
仅 X GraphQL | Twitter/X 认证 Cookie |
X_CT0 |
仅 X GraphQL | Twitter/X CSRF 令牌 Cookie |
X_GRAPHQL_ENABLED |
否 | 启用/禁用 GraphQL 层(默认:true) |
X_THREAD_MAX_PAGES |
否 | 线程最大分页数(默认:20) |
X_REQUEST_DELAY |
否 | GraphQL 请求间隔秒数(默认:1.5) |
X_FETCH_AUTHOR_REPLIES |
否 | 采集作者回帖(默认:false) |
X_FETCH_ALL_COMMENTS |
否 | 采集全部评论(默认:false) |
X_MAX_COMMENTS |
否 | 最大评论采集数(默认:50) |
X_BOOKMARKS_ENABLED |
否 | 启用书签批量抓取(默认:false) |
X_BOOKMARK_MAX_PAGES |
否 | 书签最大分页数(默认:50) |
X_BOOKMARK_DELAY |
否 | 书签处理间隔秒数(默认:2.0) |
X_USER_TWEETS_ENABLED |
否 | 启用用户推文批量抓取(默认:false) |
X_USER_TWEET_MAX_PAGES |
否 | 用户推文最大分页数(默认:50) |
X_USER_TWEET_DELAY |
否 | 用户推文处理间隔秒数(默认:2.0) |
X_USER_TWEETS_SINCE |
否 | 仅抓取该日期之后的推文(如 2025-10-01,留空=全部) |
X_LIST_TWEETS_ENABLED |
否 | 启用 Twitter List 列表批量抓取(默认:false) |
X_LIST_TWEETS_DAYS |
否 | 抓取最近 N 天的推文(默认:1,支持 1/2/3/7) |
X_LIST_TWEET_MAX_PAGES |
否 | 列表推文最大分页数(默认:50) |
X_LIST_TWEET_DELAY |
否 | 列表推文处理间隔秒数(默认:2) |
X_LIST_TWEETS_SUMMARY |
否 | 列表抓取后生成汇总表格 MD + CSV(默认:false) |
X_SEARCH_SUPPLEMENTARY |
否 | 搜索补充开关,UserTweets 不够时自动按月搜索补充(默认:true) |
X_SEARCH_MAX_PAGES_PER_CHUNK |
否 | 每个月度搜索分片最大分页数(默认:50) |
TWITTERAPI_IO_KEY |
否 | TwitterAPI.io 付费 API Key,从 https://twitterapi.io 获取 |
X_API_PROVIDER |
否 | graphql(默认)或 api(全量走付费 API) |
X_API_SAVE_DIRECTLY |
否 | true=直接保存 API 数据 / false=GraphQL 补全(默认) |
X_API_MIN_LIKES |
否 | 最低点赞数过滤(留空=不过滤,三项 OR 关系) |
X_API_MIN_RETWEETS |
否 | 最低转发数过滤(留空=不过滤) |
X_API_MIN_VIEWS |
否 | 最低阅读量过滤(留空=不过滤) |
FORCE_REFETCH |
否 | 强制重新抓取,跳过去重并覆盖已有文件(默认:false) |
X_SEARCH_ENABLED |
否 | 启用 Twitter 关键词搜索(默认:true) |
X_SEARCH_LANG |
否 | 搜索默认语言(默认:zh,留空=不限语言) |
X_SEARCH_DAYS |
否 | 搜索默认天数(默认:1,最近24小时) |
X_SEARCH_MIN_FAVES |
否 | 搜索默认最低点赞数(默认:0=不过滤) |
X_SEARCH_SORT |
否 | 搜索排序模式:live=最新 / top=热门(默认:live) |
X_SEARCH_MAX_RESULTS |
否 | 每次搜索最大推文数(默认:100) |
X_SEARCH_SAVE_TWEETS |
否 | 是否同时保存单篇推文 .md(默认:false,仅汇总表格) |
X_SEARCH_MERGE_KEYWORDS |
否 | 多关键词搜索时合并结果到一个文件(默认:false,也可用 --merge 开启) |
XHS_USER_NOTES_ENABLED |
否 | 启用小红书作者批量抓取(默认:false) |
XHS_USER_NOTE_MAX_SCROLLS |
否 | 作者主页最大滚动次数(默认:50) |
XHS_USER_NOTE_DELAY |
否 | 笔记处理间隔秒数(默认:3.0) |
XHS_USER_NOTES_SINCE |
否 | 仅抓取该日期之后的笔记(如 2026-02-01,留空=全部) |
XHS_SEARCH_ENABLED |
否 | 启用小红书搜索批量抓取(默认:false) |
XHS_SEARCH_MAX_SCROLLS |
否 | 搜索页最大滚动次数(默认:30) |
XHS_SEARCH_DELAY |
否 | 搜索笔记处理间隔秒数(默认:3.0) |
XHS_API_ENABLED |
否 | 启用 xhshow API 抓取(默认:true,已安装 xhshow 时自动生效) |
XHS_PINIA_ENABLED |
否 | xhshow 签名失败时自动通过 Pinia Store 注入兜底(默认:true) |
XHS_API_DELAY |
否 | API 请求间隔秒数(默认:1.5) |
XHS_FETCH_COMMENTS |
否 | 抓取笔记评论(默认:false) |
XHS_MAX_COMMENTS |
否 | 最大评论采集数(默认:50) |
XHS_SEARCH_SORT |
否 | xhs-so 搜索排序:general=综合 / popular=最热 / latest=最新(默认:general) |
XHS_SEARCH_NOTE_TYPE |
否 | xhs-so 搜索类型:0=全部 / 1=视频 / 2=图文(默认:0) |
XHS_SEARCH_MAX_PAGES |
否 | xhs-so 搜索最大分页数(默认:5) |
XHS_SEARCH_MERGE_KEYWORDS |
否 | 多关键词搜索时合并结果到一个文件(默认:false,也可用 --merge 开启) |
MPWEIXIN_SOGOU_ENABLED |
否 | 启用搜狗微信文章搜索(默认:false) |
MPWEIXIN_SOGOU_MAX_RESULTS |
否 | 每次搜索最大文章数(默认:10,最多 100) |
MPWEIXIN_SOGOU_DELAY |
否 | 文章处理间隔秒数(默认:3.0) |
MPWEIXIN_ID_SINCE |
否 | 按账号批量:仅抓取该日期之后的文章(YYYY-MM-DD,留空=全部) |
MPWEIXIN_ID_DELAY |
否 | 按账号批量:文章处理间隔秒数(默认:3.0) |
MPWEIXIN_ZHUANJI_SINCE |
否 | 按专辑批量:仅抓取该日期之后的文章(YYYY-MM-DD,留空=全部) |
MPWEIXIN_ZHUANJI_DELAY |
否 | 按专辑批量:文章处理间隔秒数(默认:3.0) |
MPWEIXIN_FETCH_COMMENTS |
否 | 抓取文章评论(实验性,默认:false,需微信客户端 session) |
MPWEIXIN_MAX_COMMENTS |
否 | 最大评论采集数(默认:100) |
GITHUB_TOKEN |
否 | GitHub personal access token(无 token 60 次/小时,有 token 5000 次/小时) |
FEISHU_APP_ID |
仅飞书 API | 飞书开放平台 App ID(申请地址) |
FEISHU_APP_SECRET |
仅飞书 API | 飞书开放平台 App Secret |
FEISHU_DOWNLOAD_IMAGES |
否 | 下载图片到本地 attachments/{item_id}/ 子目录,每篇文档独立存放(默认:false) |
FEISHU_WIKI_DELAY |
否 | 知识库批量抓取间隔秒数(默认:1.0) |
FEISHU_WIKI_SINCE |
否 | 仅抓取此日期后修改的文档(YYYY-MM-DD,留空=全部) |
FEISHU_CUSTOM_DOMAINS |
否 | 私有化部署域名(逗号分隔,如 feishu.mycompany.cn) |
FEISHU_PAGE_LOAD_TIMEOUT |
否 | Playwright 页面元素等待超时毫秒(默认:5000) |
FEISHU_CDP_ENABLED |
否 | CDP 直连已打开的 Chrome 抓取飞书(需 --remote-debugging-port=9222,默认:false) |
CHROME_CDP_LOGIN |
否 | 启用 CDP Cookie 提取,feedgrab login 优先从运行中的 Chrome 提取(默认:false) |
CHROME_CDP_PORT |
否 | Chrome CDP 端口(默认:9222) |
X_DOWNLOAD_MEDIA |
否 | Twitter 图片/视频下载到本地 attachments/ 子目录(默认:false) |
XHS_DOWNLOAD_MEDIA |
否 | 小红书图片下载到本地 attachments/ 子目录(默认:false) |
MPWEIXIN_DOWNLOAD_MEDIA |
否 | 微信公众号视频下载到本地 attachments/ 子目录(默认:false) |
BROWSER_USER_AGENT |
否 | 全局浏览器 UA(推荐 feedgrab detect-ua 自动检测) |
TG_API_ID |
仅 Telegram | 从 https://my.telegram.org 获取 |
TG_API_HASH |
仅 Telegram | 从 https://my.telegram.org 获取 |
GROQ_API_KEY |
仅 Whisper | 从 https://console.groq.com/keys 免费获取 |
GEMINI_API_KEY |
仅 AI 分析 | 从 Google AI Studio 获取 |
FEEDGRAB_DATA_DIR |
否 | Cookie/Session 存储目录(默认:sessions) |
OUTPUT_DIR |
否 | Markdown 输出目录(默认:./output) |
OBSIDIAN_VAULT |
否 | Obsidian 笔记库路径(内容写入对应平台子目录) |
feedgrab/
├── feedgrab/ # Python 包
│ ├── cli.py # CLI 入口
│ ├── config.py # 集中配置(路径、开关、stealth headers)
│ ├── reader.py # URL 调度器(UniversalReader)
│ ├── schema.py # 统一数据模型(UnifiedContent + Inbox)
│ ├── login.py # 浏览器登录管理器(+ CDP Cookie 提取)
│ ├── fetchers/
│ │ ├── jina.py # Jina Reader(万能兜底)
│ │ ├── browser.py # 隐身浏览器引擎(patchright Tier 1 → playwright Tier 3 + 52 stealth flags)
│ │ ├── bilibili.py # B 站 API
│ │ ├── youtube.py # yt-dlp 字幕提取
│ │ ├── github.py # GitHub REST API(仓库元数据 + 中文 README 优先 + 子目录搜索 + 图片链接补全)
│ │ ├── rss.py # RSS 解析(feedparser)
│ │ ├── telegram.py # Telegram 频道(Telethon)
│ │ ├── twitter.py # X/Twitter 六级兜底调度器
│ │ ├── twitter_cookies.py # Cookie 多源管理(环境变量/文件/Playwright/CDP)
│ │ ├── twitter_fxtwitter.py # FxTwitter API 客户端(Tier 0.3 兜底 + circuit breaker)
│ │ ├── twitter_graphql.py # X GraphQL API 客户端(TweetDetail, UserTweets, Bookmarks, SearchTimeline, 动态 queryId + x-client-transaction-id)
│ │ ├── twitter_thread.py # 线程重建 + 评论分类(分页 + 去重 + 根推文追溯)
│ │ ├── twitter_bookmarks.py# 书签批量抓取(全部/文件夹,分页+去重+分类)
│ │ ├── twitter_user_tweets.py# 用户推文批量抓取(分页+日期过滤+会话去重+RT跳过)
│ │ ├── twitter_list_tweets.py# List 列表批量抓取(按天数过滤+会话去重+线程深度抓取)
│ │ ├── twitter_search_tweets.py# 浏览器搜索补充(突破 UserTweets 800 条限制,按月分片+响应拦截)
│ │ ├── twitter_keyword_search.py# 关键词搜索(x-so 命令,纯 GraphQL + 互动排序汇总表格)
│ │ ├── twitter_api.py # TwitterAPI.io 付费 API 客户端(搜索+用户推文)
│ │ ├── twitter_api_user_tweets.py# 付费 API 补充/全量抓取(替代浏览器搜索)
│ │ ├── twitter_markdown.py# 线程 Markdown 渲染器(YAML front matter + 媒体)
│ │ ├── wechat.py # Jina → Playwright WeChat JS 提取
│ │ ├── wechat_search.py # 搜狗微信搜索(markdownify 富文本转换)
│ │ ├── mpweixin_account.py # 公众号按账号批量(MP 后台 API + 断点续传)
│ │ ├── mpweixin_album.py # 公众号专辑批量(mpweixin-zhuanji + 断点续传)
│ │ ├── xhs.py # API (xhshow) → Pinia Store 注入 → Jina → Playwright 四级兜底
│ │ ├── xhs_api.py # 小红书 API 客户端(xhshow 签名 + 评论 + xsec_token 缓存)
│ │ ├── xhs_pinia.py # 小红书 Pinia Store 注入(浏览器原生请求兜底,CDP 优先)
│ │ ├── xhs_user_notes.py # 小红书作者批量抓取(API → Pinia → 浏览器三层策略)
│ │ ├── xhs_search_notes.py# 小红书搜索批量抓取(xhs-so API/Pinia 搜索 + 搜索结果页滚动)
│ │ ├── feishu.py # 飞书单篇(Open API → CDP 直连 → Playwright PageMain → Jina + Block→MD + 图片下载)
│ │ └── feishu_wiki.py # 飞书知识库批量(Open API 递归 + CDP/Playwright 兜底 + 断点续传)
│ └── utils/
│ ├── storage.py # 按平台分目录 Markdown + JSON 双重输出
│ ├── dedup.py # 全局去重索引(跨模式统一 item_id 追踪)
│ ├── http_client.py # 统一 HTTP 客户端(curl_cffi TLS 指纹 → requests fallback)
│ └── media.py # 媒体文件下载(Twitter/XHS 图片视频本地化)
├── sessions/ # Cookie/Session 存储(自动创建,git 忽略)
├── skills/ # Claude Code 技能(npx skills add iBigQiang/feedgrab)
│ ├── feedgrab/ # 核心抓取 — /feedgrab <URL>
│ ├── feedgrab-batch/ # 批量抓取 — /feedgrab-batch
│ ├── feedgrab-setup/ # 安装引导 — /feedgrab-setup
│ ├── video/ # 视频/播客 → 转录 + 摘要
│ └── analyzer/ # 内容 → 结构化分析
├── mcp_server.py # MCP 服务器入口
└── pyproject.toml
用户发送 URL
│
├─ 文本内容(文章、推文、微信)
│ └─ Python 抓取器 → UnifiedContent → Markdown
│
├─ X/Twitter 推文或线程
│ └─ GraphQL(完整线程 + 媒体)→ FxTwitter → Syndication → oEmbed → Jina → Playwright
│
├─ GitHub 仓库
│ └─ REST API → 仓库元数据 + 中文 README 优先(根目录 + 子目录语言链接)→ 相对图片补全 → Markdown
│
├─ 视频(YouTube、B站、X 视频)
│ ├─ Python 抓取器 → 元数据(标题、描述)
│ └─ Video 技能 → 通过字幕/Whisper 生成完整转录
│
├─ 播客(小宇宙、Apple Podcasts)
│ └─ Video 技能 → 通过 Whisper 生成完整转录
│
└─ 需要分析
└─ Analyzer 技能 → 结构化报告 + 行动建议
feedgrab 基于以下项目融合升级而来:
- x-reader — 由 @runes_leo 开发的多平台万能内容阅读器,提供了核心架构、CLI、MCP 服务器和 7+ 平台的抓取器。
- baoyu-danger-x-to-markdown — 由 @dotey(宝玉)开发的 X/Twitter 深度抓取技能,提供了逆向工程的 GraphQL API 访问、线程重建和 Markdown 渲染能力。
由 @iBigQiang 维护
如果 feedgrab 对你有帮助,欢迎请作者喝杯咖啡 :)
MIT
