这款神级 Skill 彻底杀疯,公众号/飞书/推文通杀!任何 URL 都能转成 Markdown

大家好,我是小智,专注 AI 工具,AI 智能体和编程提效

痛点分析

对于搞内容矩阵的朋友们来说,有一个高频痛点:每天都需要通过 URL 抓取大量文章、推文或文档作为参考资料。但直接把链接丢给 AI,结果往往不尽如人意——要么因为防爬虫机制提取不出内容,要么只拿到一堆充满噪音的 HTML 代码。要知道,喂给大模型的数据,质量越高、结构越清晰(尤其是 Markdown 格式),它输出的结果才越精准。

markdown-proxy 就是专门为解决这个痛点而生的。它是一个极其强大的 Claude Code Skill,安装之后,你只需要把任何 URL 丢给 Claude,它就能自动判断链接类型,选择最合适的抓取通道,为你输出干净、结构化的 Markdown 内容。不管是反爬严格的微信公众号、需要认证的飞书文档,还是 X/Twitter 的推文,它都能轻松搞定。

项目地址:https://github.com/joeseesun/markdown-proxy

为什么需要它?

Claude Code 本身有 WebFetch 工具,但它有几个硬伤:

第一,登录墙过不去。 微信公众号文章有反爬机制,直接请求拿到的是空白页面。飞书文档需要 API 认证,裸抓什么也拿不到。X/Twitter 的内容也越来越难直接获取。

第二,输出噪音太多。 即使页面能打开,HTML 里混着导航栏、侧边栏、广告、JavaScript 代码,提取出的内容需要大量清理。

第三,没有降级策略。 一个代理服务挂了就彻底抓不到了,没有自动切换的能力。

markdown-proxy 针对这三个问题分别给出了方案:专用脚本搞定登录墙,代理服务输出干净 Markdown,四层级联保证可用性。

工作原理

markdown-proxy 的核心设计是路由分发 + 多层降级。收到一个 URL 后,它先判断链接类型,再选择对应的抓取通道:

URL 进来
  │
  ├─ mp.weixin.qq.com    → Playwright 无头浏览器抓取
  ├─ feishu.cn / larksuite.com → 飞书开放 API 抓取
  ├─ youtube.com / youtu.be    → 专用 YouTube skill
  └─ 其他所有 URL        → 代理级联
                             ├─ 1. r.jina.ai(内容最全)
                             ├─ 2. defuddle.md(输出最干净)
                             ├─ 3. agent-fetch(本地工具)
                             └─ 4. defuddle CLI(本地 CLI

这个设计有两个好处:一是专有平台走专用通道,保证抓取成功率;二是通用 URL 有四层降级,任何一层挂了自动跳到下一层。

四大抓取通道详解

1. 微信公众号:Playwright 无头浏览器

公众号文章的反爬是出了名的严格,普通 HTTP 请求拿到的要么是空页面,要么是验证码。markdown-proxy 用 Playwright 启动一个无头 Chromium 浏览器来绕过这个限制。就像下面这样,系统会在后台自动打开并成功加载公众号页面:

picture.image

核心逻辑在 scripts/fetch_weixin.py,大约 120 行 Python 代码:

async with async_playwright() as p:
    browser = await p.chromium.launch(headless=True)
    page = await browser.new_page(
        user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..."
    )
    await page.goto(url, wait_until="domcontentloaded", timeout=30000)
    await page.wait_for_selector("#js_content", timeout=15000)
    html = await page.content()

拿到完整 HTML 后,用 BeautifulSoup 解析出标题、作者、发布时间和正文内容,图片链接也会保留。最终输出带 YAML frontmatter 的干净 Markdown 文件,提取效果非常出色:

picture.image

2. 飞书文档:开放 API 直连

飞书文档不是普通网页,它的内容是通过 API 以 Block 结构化数据的形式存储的。markdown-proxy 内置了 scripts/fetch_feishu.py(约 280 行),直接调用飞书开放 API 拉取文档 blocks,然后逐个转换为 Markdown。你可以看到,即便是复杂的飞书文档结构也能被精准还原:

picture.image

支持三种飞书文档类型:

类型URL 示例处理方式
新版文档(docx)feishu.cn/docx/xxx直接获取 blocks
旧版文档(doc)feishu.cn/docs/xxx直接获取 blocks
知识库页面(wiki)feishu.cn/wiki/xxx先解析节点获取实际文档 ID,再获取 blocks

Block 转 Markdown 的映射非常全面,覆盖了标题、列表、代码块、引用、待办事项、公式、图片等十几种类型。代码块还支持 70 种编程语言的语法标识映射:

# 飞书的语言代码到字符串的映射(节选)
lang_map = {
    7: "bash", 8: "c", 10: "cpp", 25: "go",
    31: "java", 32: "javascript", 50: "python",
    53: "rust", 62: "typescript", ...
}

使用前需要配置飞书应用的 FEISHU_APP_IDFEISHU_APP_SECRET 环境变量,并给应用授予 docx:document:readonly 权限。

3. 通用 URL:代理服务级联

对于普通网页,markdown-proxy 不需要任何自建基础设施,它巧妙地组合了两个免费的在线代理服务和两个本地工具:

r.jina.ai(首选)—— Jina AI 提供的免费 URL 转 Markdown 服务。用法极其简单,在原始 URL 前面加上 https://r.jina.ai/ 就行:

curl -sL "https://r.jina.ai/https://example.com/article"

内容最完整,图片链接也会保留。

defuddle.md(备选)—— 另一个免费的文章提取服务,输出更干净,还带 YAML frontmatter 元信息。用法类似,URL 前面加 https://defuddle.md/

agent-fetch(本地降级)—— 当两个在线代理都不可用时,回退到本地工具。通过 npx 直接运行,不需要预装。

defuddle CLI(最终降级)—— 最后一道防线,本地 CLI 工具,适合普通网页。

4. Twitter 推文

Twitter 推文有专门的工具链(元信息解析等),markdown-proxy 把这部分委托给专用的 Twitter skill 来处理。不管是简单的文本推文还是带有多媒体信息的推文:

picture.image

通过 markdown-proxy,都能被完整地提取并转换为排版良好的 Markdown 格式:

picture.image

安装与使用

安装

一行命令搞定:

npx skills add joeseesun/markdown-proxy

安装过程非常简单,控制台会显示安装进度和相关依赖的配置情况:

picture.image

验证安装成功:

ls ~/.claude/skills/markdown-proxy/SKILL.md

前置依赖

基础功能(通用 URL 抓取)只需要 curl,macOS 和 Linux 都自带,开箱即用。

如果需要抓取公众号文章,额外安装 Playwright:

pip install playwright beautifulsoup4 lxml
playwright install chromium

如果需要抓取飞书文档,配置环境变量:

export FEISHU_APP_ID="your_app_id"
export FEISHU_APP_SECRET="your_app_secret"

使用

安装好之后,直接给 Claude 发 URL 就行,不需要任何特殊指令:

帮我读一下这篇文章:https://example.com/post
抓取这条推文:https://x.com/user/status/123456
读一下这篇公众号:https://mp.weixin.qq.com/s/abc123
把这个飞书文档转成 Markdown:https://xxx.feishu.cn/docx/xxxxxxxx

Claude 会自动识别 URL 类型,选择对应的抓取通道,输出格式化后的 Markdown 内容。

技术实现亮点

代码量极小。 整个项目只有两个 Python 脚本加一个 SKILL.md 配置文件。公众号抓取约 120 行,飞书 API 约 280 行。通用 URL 抓取甚至不需要代码,直接用 curl 调用外部代理。

零 API Key 依赖。 通用 URL 抓取用的 r.jina.ai 和 defuddle.md 都是免费服务,不需要注册账号或配置 API Key。只有飞书文档需要额外认证——因为飞书的文档权限模型决定了必须走 API。

Skill 化设计。 作为 Claude Code Skill 而不是独立工具,它的使用体验是无缝的。用户不需要记命令、不需要切换工具,直接在对话中发链接就行。SKILL.md 里定义了完整的路由逻辑和降级策略,Claude 会自动执行。

飞书 Block 解析覆盖全面。 飞书文档的 Block 类型有二十多种,markdown-proxy 覆盖了最常用的十几种,包括标题(1-7 级)、有序/无序列表、代码块(70 种语言)、引用、公式、待办、分割线、图片等。对于未知类型也有兜底逻辑,尝试提取其中的文本元素。

常见问题速查

问题解决方法
公众号抓取失败运行 playwright install chromium 安装浏览器
飞书返回权限错误检查 FEISHU_APP_IDFEISHU_APP_SECRET 环境变量,确认应用有文档读取权限
飞书知识库页面抓取失败确认应用有 wiki:wiki:readonly 权限
r.jina.ai 返回空内容无需操作,会自动降级到 defuddle.md
所有代理都失败URL 可能有严格认证限制,试试 npx agent-fetch

适合谁用?

markdown-proxy 适合所有 Claude Code 用户,特别是:

  • 日常需要让 Claude 阅读和分析网页文章的开发者
  • 需要抓取微信公众号内容做研究或整理的人
  • 团队协作中需要把飞书文档内容导出为 Markdown 的人
  • 经常需要从 X/Twitter 等社交平台提取信息的人

进群交流 & 领取福利

关于如何使用 Claude CodeOpenClaw 的各种玩法,小智建了一个学习交流群,欢迎大家一起沟通玩法心得。

如果本文对您有帮助,也请帮忙点个 赞👍 + 在看 哈!❤️关注小智AI指南公众号,AI 路上不迷路

0
0
0
0
评论
未登录
暂无评论