返回 Skill 列表
extension
分类: 其它需要 API Key

微信收藏知识库 一键整理微信收藏

微信收藏夹导出、智能分类与知识库管理。支持从解析后的 favorite.db 导出收藏记录、三级分类体系(一级9类 + 二级57标签 + 跨领域6类)、LLM 智能增强(可选)、批量导入 IMA 知识库(可选)。核心功能支持离线使用,网络功能默认关闭。

person作者: user_14423595hubcommunity

微信收藏知识库

Decrypt, categorize and organize wechat favorites (Official Account collection) into knowledge base

收藏夹导出 · 智能分类 · 知识库导入

快速上手: 解析收藏夹 → 导出记录 → 智能分类 → 导入 IMA 知识库

💡 试试这样说: "帮我整理微信收藏" / "导出收藏夹并分类" / "把微信收藏导入知识库" / "解析 favorite.db 导出文章"


触发词: 微信收藏(WeChat Favorites)、收藏夹导出(favorites export)、收藏文章分类(favorites classification)、IMA 知识库导入(knowledge base import)、收藏整理(favorites organizer)、微信公众号收藏、公众号文章整理


为什么用这个工具?

微信收藏夹积累了大量文章:随手打的标签越来越复杂,待读越积越多,从来没有真正整理过,也不记得读了哪些、学到了什么。这个工具可以:

  • 自动分类 — 96% 的文章自动归入 9 大类,无需手动整理
  • 细粒度标签 — 57 个二级标签,精准定位细分主题
  • 跨领域识别 — 自动标注"生物医药+投资"等复合主题
  • LLM 增强 — 低置信度条目用大模型智能重判
  • 知识库导入 — 一键导入 IMA,构建个人知识库

实测数据

基于 32,333 篇文章(2014-2025 收藏):

| 指标 | 数值 | |------|------| | 总收藏数 | 36,853 | | 文章数 | 32,333 | | 一级分类覆盖率 | 96.0% (31,088/32,333) | | LLM 重分类成功率 | 98.5% (8,789/8,912) | | 二级标签平均覆盖率 | 35.5% |

核心能力

| 能力 | 说明 | |------|------| | 收藏导出 | 从解析后的 favorite.db 导出全部收藏记录为 CSV | | 关键词分类 | 一级分类 9 类(生物医药/AI/投资等),关键词匹配自动识别 | | 标签增强 | 二级标签 57 个 + 跨领域标签 6 类,支持多标签组合 | | LLM 增强(可选) | 置信度 < 0.4 时自动调用 LLM 二次分类,需配置 API Key | | IMA导入(可选) | 批量导入到 IMA 知识库,需配置凭证 | | 报告生成 | 分类统计、各分类 CSV 导出 |

前置条件

1. 微信收藏数据库

本工具需要已解析的 favorite.db 文件。解析步骤请使用专门的微信数据库处理工具。

2. Python 环境

pip install pycryptodome zstandard

3. IMA 导入(可选)

如需导入 IMA 知识库:

  1. 创建 IMA 知识库,获取 kb_id
  2. 配置凭证:~/.config/ima/client_id~/.config/ima/api_key

4. IMA 导入配置(可选)

IMA 凭证支持多种配置方式(优先级从高到低):

| 方式 | 说明 | |------|------| | 命令行参数 | --client-id, --api-key, --kb-id | | 环境变量 | IMA_CLIENT_ID, IMA_API_KEY, IMA_KB_ID | | config.json | ima_kb_id 字段 | | 文件 | ~/.config/ima/client_id, ~/.config/ima/api_key |

# 方式 1: 命令行参数
python import_ima.py --kb-id YOUR_KB_ID --client-id XXX --api-key YYY

# 方式 2: 环境变量
IMA_CLIENT_ID=xxx IMA_API_KEY=yyy python import_ima.py

# 方式 3: 配置文件
# 在项目目录创建 config.json,填写 ima_kb_id
# 创建 ~/.config/ima/client_id 和 api_key 文件

安全说明

本工具涉及本地文件操作与可选网络调用。所有核心功能(导出 + 本地分类)可在离线环境完成,无需任何网络配置。

| 操作 | 行为 | 数据流向 | 说明 | |------|------|----------|------| | 收藏导出 | 读取已解析的 favorite.db,导出为 CSV | 本地只读 | 核心功能,完全离线 | | 智能分类 | 基于关键词本地分类 | 本地计算 | 核心功能,完全离线 | | LLM 分类 | 可选,将标题/摘要发送至外部 LLM API | 本地 → OpenRouter (可选,需配置) | 默认关闭,不调用外部 API | | IMA 导入 | 可选,将收藏 URL 列表发送至腾讯 IMA | 本地 → ima.qq.com (可选,需配置) | 默认关闭,不调用外部 API | | 凭证读取 | 读取本地 ~/.config/ima/ 凭证文件 | 本地读取 | 仅 IMA 功能需要,不上传凭证 |

可选功能说明:

  • LLM 分类:依赖 llm_classify.py,通过 OpenRouter API 调用大模型。默认关闭,需设置 LLM_API_URL 等环境变量才会发起网络请求
  • IMA 导入:依赖 import_ima.py,调用腾讯 IMA 知识库 API。默认关闭,需配置 client_id/api_key 才会发起网络请求
  • SAFE_MODE完全禁用网络功能,设置 SAFE_MODE=1 环境变量即可强制离线模式
  • 敏感数据:LLM 仅发送文章标题和摘要,不发送正文内容; IMA 仅发送收藏的 URL 列表,不包含微信聊天记录

离线使用方案:

  • 导出 + 本地分类:无需网络,无需配置任何 API
  • LLM 增强:可使用本地模型(修改 LLM_API_URL 指向本地 Ollama)
  • IMA 导入:可选功能,不导入不影响其他功能

建议: 在信任的网络环境或离线环境使用,网络功能均为可选,默认关闭。

快速开始

cd scripts

# 0. 验证环境
python quick_validate.py

# 1. 解析数据库(如未解析)
python decrypt_db.py  # 或使用其他工具

# 2. 导出收藏记录
python export_favorites.py

# 3. 智能分类(支持 LLM 增强)
python classify_favorites.py

# 4. 导入 IMA(可选)
python import_ima.py

目录结构

wechat-favorites/
├── SKILL.md                     # 本文件
├── LICENSE.txt                  # MIT License
├── CHANGELOG.md                 # 更新日志
├── requirements.txt             # 依赖声明
├── config.json                  # 用户配置(需创建)
├── scripts/
│   ├── quick_validate.py        # 环境验证
│   ├── decrypt_db.py            # 数据库解析
│   ├── export_favorites.py      # 收藏导出
│   ├── classify_favorites.py    # 智能分类(一级+二级+跨领域)
│   ├── llm_classify.py          # LLM 二次分类模块
│   ├── llm_incremental.py       # LLM 增量批处理
│   ├── merge_llm_results.py     # LLM 结果合并
│   ├── normalize_categories.py  # 标签标准化
│   ├── import_ima.py            # IMA 导入
│   ├── config.py                # 配置加载
│   └── key_utils.py             # 密钥工具
├── decrypted/                   # 解析输出
│   └── favorite/favorite.db
├── exported_favorites/          # 导出输出
│   ├── favorites_all.csv        # 全部收藏
│   ├── articles_final.csv       # 带分类标签
│   ├── cat_biomed.csv           # 生物医药分类
│   ├── cat_AI科技.csv           # AI 分类
│   └── ...
└── references/
    ├── classification.md        # 分类算法说明
    └── schema.md                # 数据库结构

数据流程

favorite.db (加密)
      │
      ▼ decrypt_db.py
favorite.db (解析后)
      │
      ▼ export_favorites.py
favorites_all.csv
      │
      ▼ classify_favorites.py [--llm]
articles_final.csv + cat_*.csv
      │
      ▼ import_ima.py
IMA 知识库

分类体系

一级分类(9类)

| 分类 | 关键词示例 | |------|-----------| | 生物医药 | 创新药、ADC、CAR-T、mRNA、临床试验、靶点、抗体 | | AI科技 | GPT、大模型、Agent、RAG、芯片、GPU、NVIDIA | | 投资金融 | IPO、融资、科创板、估值、基金、VC、PE | | 科学研究 | Nature、Science、论文、神经科学、突破 | | 商业财经 | 企业战略、行业分析、商业模式、宏观 | | 生活方式 | 健康、运动、旅行、读书、电影 | | 媒体资讯 | 新闻、热点、评论、舆论 | | 政治国际 | 国际关系、地缘政治、中美、外交 | | 其他 | 未命中以上分类 |

二级标签(57个)

每个一级分类下设细分标签,关键词匹配自动识别:

| 一级分类 | 二级标签示例 | |---------|-------------| | 生物医药 | ADC、CAR-T、mRNA、创新药、临床、神经科学、免疫治疗、基因编辑、疫苗、医疗器械... | | AI科技 | 大模型、AI应用、AI医疗、自动驾驶、机器人、GPU、芯片、深度学习、RAG、Agent... | | 投资金融 | VC/PE、二级市场、IPO、并购、估值、私募、公募、债券、量化... | | 科学研究 | 神经科学、物理、化学、生物、材料、天文学、量子计算... | | 商业财经 | 企业战略、行业分析、商业模式、宏观经济、消费、零售... | | 生活方式 | 健康、运动、旅行、读书、电影、美食、教育... |

完整标签列表见 references/classification.md

跨领域标签(6类)

识别跨领域主题,多标签组合:

| 跨领域标签 | 触发条件 | |-----------|---------| | 生物医药+投资 | 医药领域 + 融资/IPO/估值关键词 | | AI+医疗 | AI领域 + 医疗/医院/诊断关键词 | | AI+投资 | AI领域 + 融资/IPO/估值关键词 | | 生物医药+AI | 医药领域 + AI/大模型关键词 | | 商业+政治 | 商业领域 + 国际关系/政策关键词 | | 科学+政策 | 科学领域 + 政策/监管关键词 |

LLM 二次分类

关键词分类置信度不足时,可启用 LLM 二次分类进行智能重判:

# 置信度低于 0.4 时触发 LLM
python classify_favorites.py --llm

# 全量 LLM 分类(跳过关键词)
python classify_favorites.py --llm-only

# 自定义触发阈值
python classify_favorites.py --llm --llm-threshold 0.3

环境变量配置:

| 变量 | 默认值 | 说明 | |------|--------|------| | LLM_API_URL | http://localhost:4200/v1/chat/completions | API 地址 | | LLM_MODEL | auto | 模型名称 | | LLM_CONCURRENCY | 5 | 最大并发数 | | LLM_BATCH_SIZE | 10 | 每批处理数量 |

OpenRouter 配置示例:

export LLM_API_URL="https://openrouter.ai/api/v1/chat/completions"
export LLM_MODEL="deepseek/deepseek-chat"
export LLM_API_KEY="your-openrouter-api-key"

输出文件说明

| 文件 | 内容 | |------|------| | favorites_all.csv | 全部收藏记录 | | articles_final.csv | 带 categorysubcategorycross_domain 标签的文章 | | cat_*.csv | 各分类单独文件 | | llm_checkpoint.json | LLM 分类断点(增量处理) | | ima_import_state.json | IMA 导入进度(断点续传) | | ima_import.log | IMA 导入日志 |

CSV 字段说明:

| 字段 | 说明 | |------|------| | local_id | 原始记录 ID | | title | 文章标题 | | url | 文章链接 | | desc | 摘要 | | source | 来源公众号 | | create_time | 收藏时间 | | category | 一级分类 | | subcategory | 二级标签(多个用逗号分隔) | | cross_domain | 跨领域标签(多个用逗号分隔) | | confidence | 分类置信度 |

favorite.db 表结构

CREATE TABLE fav_db_item (
    local_id INTEGER PRIMARY KEY,
    fav_local_type INTEGER,  -- 类型:1=文章, 3=图片, 等
    status INTEGER,
    create_time INTEGER,     -- 收藏时间戳
    source_id TEXT,          -- 来源 wxid
    source_type INTEGER,
    content BLOB,            -- XML 内容
    WCDB_CT_content INTEGER  -- 压缩标记:4=zstd
);

content 字段解析:

  • <title> 标题
  • <url> 链接
  • <source> 来源公众号
  • <description> 摘要

常见问题

Q: 收藏数据不完整? A: 检查 favorite.db 最后修改时间,微信可能未同步最新数据。

Q: IMA 导入被限流? A: API 限流约 200 次/小时,脚本已内置 3 秒/批的限速。

Q: 如何新增分类? A: 编辑 classify_favorites.py 中的 CATEGORIES 字典。

Q: 解析失败? A: 确保密钥正确,检查 all_keys.json 是否包含 favorite.db 的密钥。

Q: LLM 分类中断了怎么办? A: 脚本自动保存断点到 llm_checkpoint.json,重新运行会从中断处继续。

技术细节

SQLCipher 4 参数

  • 加密:AES-256-CBC + HMAC-SHA512
  • KDF:PBKDF2-HMAC-SHA512,256,000 iterations
  • 页面:4096 bytes,reserve = 80

支持平台

| 平台 | 解析支持 | |------|---------| | Windows | ✅ | | Linux | ✅ | | macOS | ✅ |

相关链接

  • 本技能仓库:https://github.com/GeoSun/wechat-favorites-skill

参考资料

更新日志

v1.1 — 2026-04

  • 分类体系升级:新增三级分类体系——9大主类、57个二级标签、6个跨领域标签,分类更精细多元
  • 文档全面优化:完善 SKILL.md,补充分类逻辑说明、LLM 使用指南、实测数据、文件格式说明
  • 快速上手简化:精简配置示例、优化命令说明、增强引导提示、补充常用触发词,方便快速上手
  • LLM 智能增强(可选):新增 LLM 辅助分类脚本(llm_classify.py、llm_incremental.py、merge_llm_results.py、normalize_categories.py),低置信度或模糊条目可交由大模型重新分类
  • 安全说明强化:新增## 安全说明章节,强调本地化、隐私保护与数据安全
  • 版本升级:1.1.0 → 1.1,新显示名(微信收藏知识库)

License

MIT License

免责声明

本工具仅供个人备份和学习使用。请勿用于任何商业用途或违法行为。解析的数据仅限个人所有,不得传播或用于侵犯他人隐私。