weibo-chat-auto

agent
Guvenlik Denetimi
Basarisiz
Health Gecti
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 12 GitHub stars
Code Basarisiz
  • fs module — File system access in .github/workflows/ci.yml
  • child_process — Shell command execution capability in auto-archive-simple.js
  • exec() — Shell command execution in auto-archive-simple.js
  • fs.rmSync — Destructive file system operation in auto-archive-simple.js
  • fs module — File system access in auto-archive-simple.js
  • network request — Outbound network request in benchmark-qa.mjs
  • fs module — File system access in lib/chrome-path.js
  • fs.rmSync — Destructive file system operation in package.json
  • fs module — File system access in package.json
  • network request — Outbound network request in qa-agent.mjs
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

微博群聊消息自动归档 · 原生桌面应用(应用内扫码登录)+ 本地可视化查看器,含 AI 每日摘要与 Agentic 问答

README.md

📨 Weibo Group Chat Archiver

自动归档微博网页聊天群的历史消息 — 原生桌面应用(应用内扫码登录,无需手动配 Cookie)或本地查看器,支持多群、定时归档、按天导出,内置 AI 每日摘要与 Agentic 问答。

Tauri Node Puppeteer Platform License

演示

演示中的用户名、群名与头像均为脱敏示例。


✨ 功能

归档 查看器
🗂 多群支持(config.json 配置) 🎨 Linear 风格深色界面
🖥 原生桌面应用(应用内扫码登录) 🔀 多群切换
🍪 Cookie 自动保持登录 📅 日历选择 + 60s 自动刷新
📡 API 分页拉取全部历史 🔥 时段热力图 / 用户 / 媒体筛选
➕ 增量归档(断点续传) 🔍 搜索就地高亮 + n/N 跳转(保留上下文)
📆 按日期导出 JSON 📊 统计面板(日活 / 排行 / 时段 / 词频)
⏰ 定时任务 + 手动 Sync Now 🧹 红包 / 噪声消息过滤
🎯 上下文聚焦面板(追一条消息的来龙去脉)
💬 引用可跳转、标注原作者;@提及高亮
🤖 AI 每日摘要 + Agentic Q&A 问答
🖼 图片代理(绕过防盗链)、视频链接、分享卡片

🚀 快速开始

git clone https://github.com/alloevil/weibo-chat-auto.git
cd weibo-chat-auto
方式 命令 说明
桌面应用 ./run-desktop.sh 原生 app,应用内扫码登录,无需手动配 Cookie
网页版 ./setup.sh 浏览器查看器 http://localhost:3456

首次运行会自动安装所需依赖(Rust/Bun/npm)。

🖥 桌面应用(macOS)

./run-desktop.sh

一条命令完成:检测环境 → 安装依赖 → 编译 → 启动。打开后点击 🔑 登录,扫码即可开始归档。

🌐 网页版

./setup.sh            # 首次:安装 + 配置 + 扫码登录
npm run view          # 之后:启动查看器
桌面应用架构
  • Tauri v2 原生窗口 + WKWebView
  • Sidecar:Bun 编译 viewer-server.js 为 ~60MB 独立二进制,app 启动时自动拉起
  • 登录:Rust 打开 WebView → 扫码 → cookies_for_url() 提取 HttpOnly Cookie → 自动保存
  • IPC:WKWebView 不注入 Tauri IPC,改用 HTTP 信号中转
  • 图片:微博 CDN 检查 Referer,本地 /api/sinaimg?url= 代理绕过
手动安装(分步说明)

1️⃣ 安装依赖

npm install

2️⃣ 保存 Cookie

npm run save-cookies

会弹出一个独立浏览器窗口(与日常 Chrome 隔离),打开微博聊天页:用微博 App 扫码 → 手机确认 → 跳转到聊天列表后 Cookie 自动写入 cookies.json

3️⃣ 配置群聊

复制模板并填入群名(须与微博中完全一致):

cp config.example.json config.json
{
    "chromePath": "",
    "groups": ["群名称A", "群名称B"]
}

chromePath 留空即自动探测系统中的 Chrome;仅在 Chrome 装在非默认位置时才需手动填写。

4️⃣ 运行 & 查看

npm run archive   # 首次拉取最近 7 天,之后增量更新
npm run view      # 启动查看器 → http://localhost:3456

🔁 日常使用

平时保持查看器开着即可:

npm run view

打开 http://localhost:3456 → 点 Sync Now 同步最新消息(页面每 60s 自动刷新)。

读记录小技巧
  • 🎯 上下文:每条消息头部的链接,点开右侧面板看它的来龙去脉(被回复的原消息 + 前后邻域 + 后续回复)
  • 引用跳转:引用气泡标出原作者,点击可跳到原消息并高亮
  • 搜索定位:搜索不隐藏其它消息,就地高亮匹配,用 n / N 在结果间跳转
  • 未读分隔线:再次打开时,「以下为新消息」标出上次离开后的增量
Cookie 维护

Cookie 有时效(约几天~两周),但归档器每次成功运行都会自动续期

方式 效果
✅ 保持定时任务运行 Cookie 自动续期,基本不会过期(推荐)
🖱 每天点一次 Sync Now 手动保活
🔄 npm run save-cookies 已过期时重新扫码(不影响已归档数据)

🤖 AI 功能

查看器内置两个 AI 功能:每日摘要Agentic Q&A 问答。需配置 OpenAI 兼容的 API。

配置

页面右上角 ⚙️ → 填写:

字段 说明
Base URL API 地址(如 https://api.deepseek.com/v1
API Key 密钥
Model 模型名(如 deepseek-chat
Vision 摘要时是否分析图片

配置保存到本地 ai-config.json(不会提交到 git)。

Q&A 问答

在工具栏的问答输入框中提问,支持自然语言时间("最近"、"昨天"、"上周")和人名筛选。

Agent 模式(默认):LLM 迭代搜索,自主决定关键词和搜索范围,多轮查找直到信息充分。

技术方案

采用 Agentic Search 模式,loop 机制参考:

  • Hermes Agent — IterationBudget + grace call
  • Pi-Multi-Agent — state machine + retry with backoff + timeout
  • LedgerAgent 论文 — 结构化状态累积

详见 docs/agent-qa.md

Benchmark (Agent vs Legacy):

指标 Agent Legacy
平均延迟 20.5s 10.1s
成功率 100% 100%
日期推理 正确 偶尔错误
搜索覆盖 多轮扩展 单次
答案质量

📸 预览截图

消息视图 — 时段热力图、引用气泡(标原作者)、@提及高亮、每条「🎯 上下文」入口

消息视图

上下文聚焦 — 点 🎯 弹出右侧面板:被回复的原消息 + 前后邻域 + 后续回复

上下文面板

统计面板 — 每日消息量、活跃用户排行

统计面板

截图中的用户名、群名与头像均为脱敏示例。

✅ 前置要求
必需 说明
🖥 macOS / Linux / WSL 归档与查看器跨平台运行;定时任务自动安装仅 macOS(Linux 见 cron 说明)
🟢 Node.js 18+ brew install node(macOS)/ apt install nodejs(Linux)/ nodejs.org
🌐 Google Chrome 归档器用它登录并抓取消息;路径自动探测
📱 微博账号 + 手机 App 首次需用 App 扫码登录网页版
🦀 Rust + Bun 仅桌面应用需要;./run-desktop.sh 会自动安装

Windows 用户请在 WSL 中使用;桌面应用目前仅在 macOS 验证。

⏰ 定时自动运行

macOS./setup.sh 安装时会询问是否启用,也可手动管理 launchd 任务:

launchctl list | grep weibo                                                # 查看状态
launchctl unload ~/Library/LaunchAgents/com.allo.weibo-chat-archive.plist  # 停用
launchctl load   ~/Library/LaunchAgents/com.allo.weibo-chat-archive.plist  # 启用

Linux / WSL — 用 cron(crontab -e),每小时归档一次:

0 * * * * cd /path/to/weibo-chat-auto && node auto-archive-simple.js >> logs/archive.log 2>&1

启用后定时归档会顺带刷新 Cookie,基本不会过期。

📁 项目结构
weibo-chat-auto/
├── setup.sh                 # 网页版一键安装脚本
├── run-desktop.sh           # 桌面应用一键启动(装依赖→编译→运行)
├── config.example.json      # 群聊配置模板
├── config.json              # 实际配置(不提交)
├── auto-archive-simple.js   # 主归档脚本
├── save-cookies.js          # Cookie 保存工具
├── viewer-server.js         # 本地查看器服务器
├── viewer.html              # 查看器页面(单页应用,Linear 深色主题)
├── qa-agent.mjs             # Agentic Q&A 模块
├── benchmark-qa.mjs         # Agent vs Legacy 对比测试
├── src-tauri/               # Tauri v2 桌面应用(Rust)
│   ├── src/lib.rs           # 窗口、sidecar 拉起、应用内登录
│   └── tauri.conf.json
├── sidecar/build.mjs        # 用 Bun 把 viewer-server 编译为独立二进制
├── cookies.json             # 登录凭据(不提交)
├── ai-config.json           # AI 配置(不提交)
├── state/                   # 归档状态(不提交)
├── output/                  # 归档数据(不提交)
│   └── 群名/
│       └── weibo_chat_2026-05-01.json
├── cache/images/            # 图片缓存(不提交)
├── docs/                    # 文档和截图
│   └── agent-qa.md          # Agent Q&A 技术方案
└── package.json
🧾 输出数据格式

每条消息:

{
    "id": 123456789,
    "from_uid": 12345,
    "user": "用户名",
    "avatar": "https://...",
    "timestamp": 1778000000000,
    "time": "2026/05/11 12:00:00",
    "date": "2026-05-11",
    "content": "消息内容",
    "type": 321,
    "pics": ["https://upload.api.weibo.com/2/mss/msget?source=...&fid=..."],
    "share": {
        "url": "http://weibo.com/...",
        "title": "...",
        "author": "...",
        "pics": ["https://wx1.sinaimg.cn/large/..."],
        "reposts": 100,
        "comments": 50,
        "likes": 200
    }
}

🛠 故障排除

Cookie 失效(同步报错、日历不更新、日志出现"未找到群聊")
npm run save-cookies

扫码登录后 Cookie 自动保存。

为什么过期? 独立浏览器不共享日常登录态,微博 Cookie 本身有时效。长期不运行归档(如定时任务被停用)就会过期。保持定时任务运行可自动续期。

页面加载失败

检查 config.json 中的 chromePath 是否正确,并确认已安装 Google Chrome。

图片不显示

图片经本地服务器代理加载(依赖有效 Cookie),Cookie 过期后无法显示。重新 npm run save-cookies 即可。


🔒 隐私声明

本工具仅供归档自己参与的群聊消息,请勿用于侵犯他人隐私。

  • 归档数据包含群内所有成员的消息内容、用户名和头像
  • 请妥善保管 cookies.jsonoutput/,切勿公开分享
  • 代码仅供学习交流,使用者自行承担风险
  • 请遵守微博服务条款和相关法律法规

📄 License

MIT

Yorumlar (0)

Sonuc bulunamadi