微信文章阅读器

一个用于读取微信公众号文章并将其转换为Markdown格式和结构化元数据的工具,支持HTTP优先获取和可选的无头浏览器回退。

  • by sanfan3
  • Python
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 sanfan3/wechat-article-reader

使用说明

微信文章阅读器MCP(Python)🚀

推荐的存储库名称: wechat-article-reader-mcp 建议的包名称(如果发布到PyPI): mcp-wechat-reader 建议的MCP服务器ID/客户端名称: wechat-article-reader

阅读公众微信文章,并将其转换为Markdown+结构化元数据。 📖 HTTP优先获取,并为棘手的页面提供可选的无头浏览器回退。 🧭🧩

快速开始✨

从GitHub安装(无需克隆)

  • 使用紫外线(推荐):

    • 基础安装:
      • uv pip install "git+https://github.com/<your-github-user>/wechat-article-reader-mcp.git#egg=mcp-wechat-reader"
    • 启用浏览器回退:
      • uv pip install "git+https://github.com/<your-github-user>/wechat-article-reader-mcp.git#egg=mcp-wechat-reader[browser]"
      • playwright install chromium
    • 启用HTTP MCP服务器传输:
      • uv pip install "git+https://github.com/<your-github-user>/wechat-article-reader-mcp.git#egg=mcp-wechat-reader[mcp]"
  • 直接使用pip:

    • 基础安装:
      • pip install "git+https://github.com/<your-github-user>/wechat-article-reader-mcp.git#egg=mcp-wechat-reader"
    • 使用浏览器回退:
      • pip install "git+https://github.com/<your-github-user>/wechat-article-reader-mcp.git#egg=mcp-wechat-reader[browser]"
      • playwright install chromium
    • 使用MCP服务器传输:
      • pip install "git+https://github.com/<your-github-user>/wechat-article-reader-mcp.git#egg=mcp-wechat-reader[mcp]"

注意:当使用带有额外功能的VCS URL时(例如。, [browser], [mcp]),请确保将整个URL括在引号中。

克隆并在本地安装(对开发人员友好)

  • 克隆并进入仓库:
    • git clone https://github.com/<your-github-user>/wechat-article-reader-mcp.git
    • cd wechat-article-reader-mcp
  • 安装(可编辑):
    • uv pip install -e .
    • 使用浏览器回退: uv pip install -e .[browser] && playwright install chromium
    • 使用MCP服务器传输: uv pip install -e .[mcp]

直接使用Python

  • 仅HTTP(无额外deps):
    • python scripts/read_wechat_cli.py "https://mp.weixin.qq.com/s/<id>" --no-browser
  • 启用浏览器回退(建议用于复杂页面):
    • pip install playwright
    • playwright install chromium
    • python scripts/read_wechat_cli.py "https://mp.weixin.qq.com/s/<id>"

工具API🧰

  • 姓名: read_wechat_article
  • 输入:
    • url:string(必填),必须以开头 https://mp.weixin.qq.com/s
    • include_images:boolean(可选,默认值:true)
    • force_browser:boolean(可选,默认值:false)--即使HTTP获取成功,也强制Playwright浏览器渲染
  • 输出:
    • title, author, pub_time, content_md, images[], links[], source_url, strategy, logs
    • 失败时: error, message

看 .trae/specs/my-mcp-server/read_wechat_article.json 对于规范。

配置⚙️

编辑 mcp_server_my_mcp_server/utils/config.py:

  • ua, referer, accept_language, timeout_seconds
  • rate_limit_per_min, burst
  • proxy (计划中), cache_ttl_seconds
  • browser_enabled

与MCP运行时集成(类似Trae)🔌

通过uv将此项目导入您的Trae应用程序

选项A:将此项目安装到您的Trae应用程序环境中

  • uv pip install -e d:/code1/Q5/your-mcp-project
  • 使用浏览器回退: uv pip install -e d:/code1/Q5/your-mcp-project[browser] && playwright install chromium

选项B:在Trae应用程序的pyproject.toml中声明为依赖项

[project]
dependencies = [
  "mcp-wechat-reader @ file:///d:/code1/Q5/your-mcp-project"
]

然后在Trae应用程序目录中运行:

  • uv pip install -r pyproject.toml

CLI示例🛠️

安装完成后,可以直接使用 read-wechat-cli 命令:

  • 默认开启浏览器回退(需安装浏览器支持):

    • 安装:uv pip install -e d:/code1/Q5/your-mcp-project[browser] && playwright install chromium
    • 运行:uv run read-wechat-cli https://mp.weixin.qq.com/s/...
  • 仅使用 HTTP(禁用浏览器回退):

    • 运行:uv run read-wechat-cli https://mp.weixin.qq.com/s/... --no-browser
  • 输出中包含图片 URL:

    • 运行:uv run read-wechat-cli https://mp.weixin.qq.com/s/... --include-images
  • 强制使用浏览器渲染(即使 HTTP 成功也走浏览器):

    • 运行:uv run read-wechat-cli https://mp.weixin.qq.com/s/... --force-browser

说明:

  • --no-browser 现在会生效,CLI 会传入 WechatReaderConfig(browser_enabled=False);若需浏览器回退,请安装 [browser] 额外依赖并执行 playwright install chromium。
  • --include-images 控制是否在返回 JSON 的 images[] 字段中包含解析到的图片地址。
  • --force-browser 会在工具层传入 force_browser=true,并且抓取策略返回值中的 strategy 将标记为 browser_forced。

运行HTTP MCP服务器(用于mcpServers URL导入)🌐

  1. 安装时支持HTTP传输:
  • uv pip install -e ./your-mcp-project[mcp]
  1. 运行服务器(默认http://127.0.0.1:8000/mcp/):
  • uv run wechat-mcp-http
  1. 在Trae配置中(示例):
{
  "mcpServers": {
    "wechat-article-reader": {
      "url": "http://127.0.0.1:8000/mcp/",
      "headers": {
        "Authorization": "Bearer <optional-token>"
      }
    }
  }
}

如果需要身份验证,请在HTTP层添加简单的令牌验证(FastMCP支持中间件模式),或将服务器置于强制身份验证的反向代理之后。

  1. 规格:确保 .trae/specs/my-mcp-server/read_wechat_article.json 存在。
  2. 注册:进口 src/mcp_server_my_mcp_server/server.py 并注册 list_tools() 地图。
  3. 调用:调用 read_wechat_article(url, include_images, force_browser) 通过您的MCP工具调度器。
  4. 错误:句柄 invalid_url/need_auth/blocked_403/rate_limited_429/timeout/no_content.

备注📝

  • 仅支持公共链接。不要使用需要登录或付费的内容。
  • 图片/链接可能会过期;如果需要长期使用,可以考虑下载到对象存储。
  • 遵守网站服务条款和费率限制。

测试✅

屏幕截图和演示📸

马上就来:

  • CLI演示GIF显示HTTP优先与浏览器回退。
  • 架构图(HTTP获取→ 解析→ 标记语言→ MCP输出)。
  • Trae配置截图使用 mcpServers.

建筑示例(美人鱼):

flowchart TD
    A[Input URL] --> B{Compliance check}
    B -->|valid| C[HTTP fetch]
    C -->|success| D[Parse + Markdown]
    C -->|fail| E{Browser fallback?}
    E -->|yes| F[Playwright fetch]
    F --> D
    E -->|no| G[Error]
    D --> H[Return JSON]
  • tests/test_read_wechat_article.py 包含一个基本的无效URL测试。添加具有真实公共文章的集成测试。