Skip to main content
Glama
nevergoodstudy-hub

wechat-article-summarizer

📰 微信公众号文章总结器

将微信公众号文章抓取后生成摘要,并导出为 HTML / Markdown(支持写入 Obsidian Vault、创建 Notion 页面、写入 OneNote)。

OneNote 导出基于 Microsoft Graph(设备码授权 + 本地 token 缓存)。

✨ 功能特性

  • 🔗 自动抓取微信公众号文章内容

  • 📝 智能生成文章摘要(simple / Ollama / OpenAI / Anthropic / 智谱)

  • 🧪 RAG 增强摘要 - 基于向量检索的智能摘要,提升长文摘要质量

  • 🕸️ GraphRAG 全局摘要 - 基于知识图谱的全局理解,适合复杂长文分析

  • 📄 导出为 HTML / Markdown(可选:Obsidian / Notion / OneNote)

  • 💾 本地缓存(避免重复抓取)

  • ✅ 现代化 GUI 界面(支持深色/浅色主题,MVVM 架构)

  • 🆕 2026年GUI设计趋势重构 - 液态玻璃效果/微交互动画/无障碍支持

  • 🆕 知识图谱查看器 - 支持 GraphRAG 可视化,力导向布局

  • ⌨️ 命令行工具支持

  • 🤖 MCP 服务支持 - 可被 AI Agent(Claude/ChatGPT)直接调用

Related MCP server: WeChat Article Extractor

🏗️ 架构

采用 Clean Architecture / Hexagonal 设计:

src/wechat_summarizer/
├── domain/           # 领域层(实体/值对象/领域服务)
├── application/      # 应用层(用例编排/端口/DTO)
├── infrastructure/   # 基础设施层(抓取器/摘要器/导出器/配置与容器)
├── presentation/     # 展示层(CLI/GUI)
└── shared/           # 共享工具/常量/异常

🚀 快速开始

安装

# 克隆项目
cd Newidea-warp

# 安装依赖
pip install -e .

# 可选:启用 AI 摘要(OpenAI / Anthropic 等)
pip install -e .[ai]

# 可选:启用 Playwright 渲染抓取
pip install -e .[playwright]
playwright install chromium

# 可选:启用 RAG 增强摘要
pip install -e .[rag]

# 可选:启用 GraphRAG 全局摘要(知识图谱)
pip install -e .[graphrag]

使用

GUI 模式(默认)

python -m wechat_summarizer

CLI 模式

推荐安装后直接使用脚本:

# 帮助
wechat-summarizer --help

# 抓取 +(可选)摘要 +(可选)导出
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m simple -e html
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m openai -e markdown -o output.md

# 导出到 Obsidian Vault(需要配置 export.obsidian_vault_path)
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m simple -e obsidian

# 导出到 Notion(需要配置 export.notion_api_key / export.notion_database_id)
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m simple -e notion

# 导出到 OneNote(需要先授权;并配置 export.onenote_*)
wechat-summarizer onenote-auth
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m simple -e onenote

# 说明:word 始终可用;obsidian / notion / onenote 仅在对应导出器成功加载且配置完成时可用

# 使用 RAG 增强摘要(需安装 rag 依赖)
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m rag-openai -e markdown

# 使用 GraphRAG 全局摘要(需安装 graphrag 依赖)
# Local Search: 基于实体上下文的检索
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m graphrag-openai -e markdown
# Global Search: 基于社区摘要的全局分析(适合复杂问题)
wechat-summarizer fetch "https://mp.weixin.qq.com/s/xxx" -m graphrag-openai --global-search

# 兼容旧命令名:process = fetch
wechat-summarizer process "https://mp.weixin.qq.com/s/xxx" -m ollama

# 只查看文章信息(不生成摘要/不导出)
wechat-summarizer info "https://mp.weixin.qq.com/s/xxx"

# 从 CLI 启动 GUI
wechat-summarizer gui

也支持模块方式(更便于调试):

python -m wechat_summarizer fetch "https://mp.weixin.qq.com/s/xxx"
python -m wechat_summarizer cli fetch "https://mp.weixin.qq.com/s/xxx"  # 兼容旧写法

MCP 服务模式

启用 MCP 服务后,AI Agent(如 Claude、ChatGPT)可直接调用本工具:

# 安装 MCP 依赖
pip install -e .[mcp]

# 启动 MCP 服务器 (stdio 模式)
python -m wechat_summarizer.mcp

# HTTP 模式(默认仅监听本机)
python -m wechat_summarizer.mcp --transport http --host 127.0.0.1 --port 8000

# 远程监听(高风险,必须显式允许)
python -m wechat_summarizer.mcp --transport http --host 0.0.0.0 --allow-remote --auth-token your_token
# 也可通过环境变量提供 token:WECHAT_SUMMARIZER_MCP_AUTH_TOKEN

提供的 MCP 工具:

基础工具

  • fetch_article - 抓取文章内容

  • summarize_article - 抓取并摘要文章

  • get_article_info - 获取文章基本信息

  • batch_summarize - 批量摘要多篇文章

  • list_available_methods - 列出可用摘要方法

🆕 GraphRAG 工具

  • graph_analyze - 知识图谱分析(实体/关系/社区)

  • compare_articles - 多文章对比分析

  • track_topic - 主题追踪工具

  • evaluate_summary - 摘要质量评估

🔒 管理工具

  • get_audit_logs - 获取审计日志(需管理员权限)

安全特性

  • ✅ 工具权限控制(只读/读写/管理员)

  • ✅ 审计日志(记录所有调用)

  • ✅ 速率限制(令牌桶算法)

  • ✅ 参数脱敏(敏感信息过滤)

  • ✅ HTTP 模式默认本机监听(127.0.0.1)

  • ✅ 远程监听需显式 --allow-remote

  • ✅ 支持 X-MCP-Token 请求头鉴权

A2A 协议支持

  • 🤝 Agent Card 能力发现

  • 🤝 任务管理与协作

  • 🤝 跨 Agent 任务委托

⚙️ 配置

创建 .env 文件配置环境变量:

缓存说明:抓取结果默认缓存在用户目录 .wechat_summarizer/cache(如需清理可手动删除该目录)。

推荐使用带前缀的嵌套变量(与 Pydantic Settings 完全一致):

# OpenAI(可选,用于 AI 总结)
WECHAT_SUMMARIZER_OPENAI__API_KEY=sk-xxx
WECHAT_SUMMARIZER_OPENAI__BASE_URL=https://api.openai.com/v1
WECHAT_SUMMARIZER_OPENAI__MODEL=gpt-4o-mini

# Anthropic(可选)
WECHAT_SUMMARIZER_ANTHROPIC__API_KEY=sk-ant-xxx
WECHAT_SUMMARIZER_ANTHROPIC__MODEL=claude-3-haiku-20240307

# 智谱(可选)
WECHAT_SUMMARIZER_ZHIPU__API_KEY=xxx
WECHAT_SUMMARIZER_ZHIPU__MODEL=glm-4-flash

# 导出
WECHAT_SUMMARIZER_EXPORT__DEFAULT_OUTPUT_DIR=./output
WECHAT_SUMMARIZER_EXPORT__OBSIDIAN_VAULT_PATH=/path/to/your/vault
WECHAT_SUMMARIZER_EXPORT__NOTION_API_KEY=secret_xxx
WECHAT_SUMMARIZER_EXPORT__NOTION_DATABASE_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# OneNote(Microsoft Graph)
# 说明:Notebook 必须已存在;Section 不存在会自动创建。
# 第一次使用需要:wechat-summarizer onenote-auth
WECHAT_SUMMARIZER_EXPORT__ONENOTE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WECHAT_SUMMARIZER_EXPORT__ONENOTE_TENANT=common
WECHAT_SUMMARIZER_EXPORT__ONENOTE_NOTEBOOK=MyNotebook
WECHAT_SUMMARIZER_EXPORT__ONENOTE_SECTION=WeChat Summaries

# 抓取器
WECHAT_SUMMARIZER_SCRAPER__MAX_RETRIES=3
WECHAT_SUMMARIZER_SCRAPER__USE_PLAYWRIGHT=false

兼容旧变量名(项目也支持,但不推荐新项目继续用):

OPENAI_API_KEY=sk-xxx
OPENAI_BASE_URL=https://api.openai.com/v1
OUTPUT_DIR=./output

📦 依赖

  • Python 3.10+

  • httpx - HTTP 客户端

  • beautifulsoup4 - HTML 解析

  • customtkinter - 现代 GUI

  • click - CLI 框架

  • pydantic-settings - 配置管理

  • loguru - 日志

  • psutil - 性能监控

RAG 增强摘要可选依赖

  • chromadb - 向量数据库(持久化存储)

  • sentence-transformers - 本地嵌入模型

GraphRAG 可选依赖

  • networkx - 图数据结构与算法

  • igraph - 高性能图分析库

  • leidenalg - Leiden 社区检测算法

📋 文档

🌟 新手入门

📚 开发文档

🎨 GUI 现代化重构 (2026趋势)

本项目GUI已全面升级,采用最新设计趋势:

视觉系统

  • 💧 液态玻璃效果 (Liquid Glass) - 半透明模糊背景

  • 🎨 动态渐变色系统 - 支持线性/径向渐变动画

  • 🎴 现代卡片组件 - 4级阴影深度 + hover微动画

  • 📝 字体系统 - Inter/思源黑体 + 8级字阶

组件库

  • 🔘 ModernButton - Ripple水波纹/Loading状态/4种变体

  • 📋 VirtualList - 10万+数据量/只渲染可见区域/60fps

  • 📢 Toast/Notification - 堆叠管理/自动消失

  • 📀 DataGrid - 虚拟滚动/列排序/行选择

  • 📊 ContextMenu - 右键菜单/智能位置

性能优化

  • ⚡ 组件懒加载 (LazyLoader) - 路由级代码分割

  • 📊 性能监控 (PerformanceMonitor) - FPS/内存/CPU实时追踪

  • 🔄 滚动节流 - 16ms/60fps

无障碍支持

  • ⌨️ 键盘导航 - Tab顺序/焦点轮廓/SkipLinks

  • 🔍 设置缩放 - 80%-200%字体缩放

  • 🌓 高对比度模式 - WCAG AA/AAA级刹色对比度

  • 🌐 RTL布局支持 - 阿拉伯语/希伯来语

🆕 最新发布 (v2.4.3)

中文更新摘要

  • 🔒 安全加固:在抓取器真实请求前新增 DNS 解析与安全校验,增强 DNS Rebinding / SSRF 防护。

  • 🧪 测试增强:新增 DNS Rebinding 集成测试,并完成安全与核心路径定向回归测试。

  • 🧱 稳定性提升:修复结构化日志事件处理与上下文绑定类型一致性问题。

  • 📦 发布同步:版本升级至 2.4.3,同步更新打包配置(含 MSIX 默认版本)。

English Release Notes

  • Security hardening: added pre-request DNS resolution and safety checks in scraper paths to improve DNS rebinding / SSRF protection.

  • Test enhancement: added DNS rebinding integration tests and completed targeted regression runs for security-critical modules.

  • Reliability improvements: fixed structured logging event processing and context-binding type consistency.

  • Release sync: bumped project version to 2.4.3 and aligned packaging defaults (including MSIX version).

📝 更新日志

详细变更请查看 CHANGELOG.md

📜 许可证

MIT License

A
license - permissive license
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nevergoodstudy-hub/wechat-article-summarizer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server