| 能力 | 说明 |
|---|---|
| 按名称自动抓取 | 输入公众号名称 → 后端代理搜狗微信搜索(带 cookie 预热 / UA 轮换 / 重试 / 缓存)→ 拉取文章列表并解析正文 |
| 粘贴链接解析 | 直接粘贴 mp.weixin.qq.com 文章链接(或搜狗跳转链接),自动解析并清洗为纯净正文 |
| AI 结构化分析 | 自动输出「一句话总结 / 核心观点 / 关键数据 / 关键词标签 / 适用人群」,流式输出 |
| 批量自动化 | 导入后可自动分析,或一键批量分析全部未分析文章 |
| 多模型切换 | OpenAI、DeepSeek、通义千问任意切换;国产模型经后端代理转发,绕过浏览器 CORS |
| 工作区码同步 | 每个访客自动获得专属工作区码,文章与分析存云端、按码隔离、互不重叠;换设备输入同码即可恢复 |
| Key 仅本地 | API Key 只存浏览器 localStorage,绝不写入云端工作区,可随时清除 |
git clone https://github.com/Jackychen-12/wechat-digest.git
cd wechat-digest
./start.sh脚本会自动启动后端(端口 8000)和前端(端口 3000),打开浏览器访问 http://localhost:3000 即可使用。
首次使用需在页面「设置」中填写 后端 API 地址
http://localhost:8000和你的 API Key。
如果 start.sh 不适用,也可以手动分两步启动:
# 终端 1:启动后端
deno run --allow-net --allow-env --unstable-kv backend/main.ts
# 终端 2:启动前端(任选一种)
npx serve -s . -l 3000 # Node.js 方式
python3 -m http.server 3000 # Python 方式
⚠️ 不能直接双击index.html打开——ES Module 需要 HTTP 服务器,file://协议会报 CORS 错误。
如果你想让别人通过网址直接访问(而不是本地运行),可以部署到云端:
- 登录 dash.deno.com → New Project → 关联本 GitHub 仓库
- Entrypoint 选
backend/main.ts - 部署完成后会得到一个地址,例如
https://wechat-digest.deno.dev - Deno KV 自动可用,无需配置
- 把后端地址填进
js/config.js顶部:export const BACKEND_BASE = "https://wechat-digest.deno.dev";
- 仓库 Settings → Pages → Source 选 GitHub Actions,推送后自动部署
首次使用,在页面「设置」中配置:
| 模型 | Key 获取 | 备注 |
|---|---|---|
| DeepSeek | platform.deepseek.com | 国内可直连,推荐首选 |
| 通义千问 | 阿里云百炼控制台 | OpenAI 兼容模式 |
| OpenAI | platform.openai.com | 需国外网络 |
API Key 仅保存在你的浏览器本地,不会上传到云端。
- 输入公众号名称(如"晚点LatePost")→ 点「抓取文章」
- 在弹窗中勾选要导入的文章(可勾选「导入后自动 AI 分析」)
- 点击左侧文章列表中的任意文章 → 右侧查看 AI 结构化分析
- 也可以直接粘贴文章链接 → 点「解析」导入
- 「⚡ 一键分析未分析」可批量处理整个文章库
- 在分析框下方可填写自定义指令(如「侧重投资视角」)重新生成
无需注册登录。首次进入自动生成一串 工作区码(如 a1b2-c3d4-e5f6-7890):
- 文章与分析按工作区码隔离,不同码之间完全互不重叠
- 复制码 → 在另一台设备输入 → 数据自动同步
⚠️ 工作区码即数据钥匙,请妥善保存、勿公开分享- 未配置后端时自动降级为纯本地模式
前端(纯静态 HTML + ES Modules,零构建)
├─ index.html / styles.css
├─ js/
│ ├─ main.js 入口
│ ├─ config.js 常量与 Provider 配置
│ ├─ state.js 全局状态 + localStorage
│ ├─ helpers.js 工具函数
│ ├─ workspace.js 工作区码 + 云同步
│ ├─ settings.js 设置面板
│ ├─ render.js 列表 / 详情渲染
│ ├─ crawl.js 搜狗搜索 + 文章抓取
│ ├─ data.js 文章 CRUD + 导入导出
│ ├─ events.js 事件绑定
│ └─ skills/ AI 技能(可扩展)
│ ├─ registry.js 技能注册表 + 通用调度引擎
│ └─ digest.js 结构化摘要技能
└─ 跨域调用 ↓
后端(Deno 单文件 backend/main.ts,零依赖)
├─ GET /api/search?account=名称 搜狗微信搜索(KV 缓存 10min)
├─ GET /api/article?url=链接 抓取清洗正文(KV 缓存 1d)
├─ GET/PUT /api/data?ws=工作区码 工作区数据读写
└─ POST /api/chat LLM 流式代理(多 provider)
新增 AI 分析能力只需在 js/skills/ 下新建文件:
// js/skills/compare.js
import { registerSkill } from "./registry.js";
registerSkill({
id: "compare",
name: "多篇对比",
icon: "⚖️",
multi: true,
buildPrompt(articles) {
return {
system: "你是内容对比分析专家…",
user: articles.map(a => `【${a.title}】\n${a.content}`).join("\n---\n"),
};
},
});在 main.js 中 import "./skills/compare.js" 即可生效,无需修改其他文件。
- 后端已做加固:cookie 预热、UA 轮换、指数退避重试、KV 结果缓存
- 搜狗微信搜索存在反爬,高频访问会触发验证码,抓取不保证 100% 成功
- 触发反爬时可改用「粘贴链接」方式导入
- 本项目仅供个人学习与研究,请遵守目标站点的 robots 与服务条款
MIT