Skip to content

acegao9527/wecom2notes

Repository files navigation

wecom2notes

企业微信消息同步到笔记软件的开源服务。

wecom2notes 从企业微信会话内容存档拉取消息,统一落到 SQLite,再按路由规则投递到 Craft、Obsidian/Markdown、Logseq、Notion、WebDAV、Git 管理的笔记库或 HTTP 接口。

支持矩阵

类型 状态 说明
企业微信会话内容存档 已支持 通过官方 SDK 拉取和解密归档消息
Craft 已支持 支持兼容旧绑定和 target adapter
Obsidian / Markdown 已支持 写入本地 Markdown 目录或 vault
Logseq 已支持 复用 Markdown 写入并输出 block 风格
Notion 已支持 支持 page append 或 database page
WebDAV 已支持 通过 GET/PUT 追加远程 Markdown 文件
Git 笔记库 已支持 写入 Markdown 后可选自动提交
HTTP 接口 已支持 通过 POST/PUT/PATCH/GET 把统一消息投递到 webhook
个人微信自动抓取 不属于首期稳定能力 可通过导入器处理导出的聊天文件

架构

Source Connector
  WeCom Archive / Importer

Message Normalizer
  UnifiedMessage / AttachmentInfo

Storage + Queue
  SQLite / source_cursors / deliveries

Router
  legacy Craft binding migration / DB routes / config/routes.json / env targets

Target Adapter
  Craft / Obsidian / Markdown / Logseq / Notion / WebDAV / Git / HTTP

快速开始

cp .env.example .env
./docker-deploy.sh
curl http://localhost:8001/
curl http://localhost:8001/openapi.json

查看日志:

docker logs -f wecom2notes

Mac 本地测试完成后关闭容器:

docker compose down

配置

企业微信最小配置:

WECOM_TOKEN=your_wecom_token
WECOM_CORP_ID=your_corp_id
WECOM_ENCODING_AES_KEY=your_encoding_aes_key
WECOM_APP_SECRET=your_archive_secret
WECOM_PRIVATE_KEY_PATH=private_key.pem

Obsidian/Markdown 最小配置:

OBSIDIAN_VAULT_PATH=/notes
OBSIDIAN_BASE_DIR=WeCom
OBSIDIAN_MODE=daily

Docker 默认将 HOST_NOTES_DIR 挂载到容器 /notes

管理接口

  • GET /admin:跳转到内置管理台。
  • GET /admin/ui/:管理台静态前端。
  • GET /:健康检查。
  • GET /openapi.json:OpenAPI。
  • GET /metrics:Prometheus 文本 metrics。
  • GET /admin/overview:管理台总览数据。
  • GET /admin/target-types:查看支持的 target 类型。
  • GET /admin/destinations:查看投递目标。
  • POST /admin/destinations:创建或更新投递目标。
  • PUT /admin/destinations/{destination_id}:更新投递目标。
  • PATCH /admin/destinations/{destination_id}/enabled:启用或停用投递目标。
  • DELETE /admin/destinations/{destination_id}:删除投递目标及关联路由。
  • POST /admin/destinations/{destination_id}/verify:验证目标配置。
  • GET /admin/routes:查看路由规则。
  • POST /admin/routes:创建路由规则。
  • PUT /admin/routes/{route_id}:更新路由规则。
  • PATCH /admin/routes/{route_id}/enabled:启用或停用路由规则。
  • DELETE /admin/routes/{route_id}:删除路由规则。
  • POST /admin/routes/test:测试一条模拟消息会命中哪些目标。
  • GET /admin/deliveries:查看投递状态。
  • GET /admin/messages:筛选和查看统一消息。
  • GET /admin/messages/{source}/{msg_id}:查看消息详情、附件和投递记录。
  • POST /admin/replay:按 source + msg_id 手动重放。

管理接口默认不启用鉴权。生产环境建议配置 ADMIN_TOKEN,配置后管理台会要求输入 token,并通过 X-Admin-Token 调用 API。

兼容 Craft 绑定

旧版 Craft 绑定 API 仍可用:

curl -X POST http://localhost:8001/bindings \
  -H "Content-Type: application/json" \
  -d '{
    "wecom_openid": "用户OpenID",
    "craft_link_id": "Craft链接ID",
    "craft_document_id": "Craft文档ID",
    "craft_token": "pdk_xxx",
    "display_name": "显示名称"
  }'

批量导入

支持 CSV、Markdown、HTML 和文本文件导入:

python scripts/import_messages.py path/to/export.csv --source import

导入后的消息会进入同一套路由和投递链路。

文档

安全边界

  • 不要把 .env、私钥、数据库和真实笔记库内容提交到仓库。
  • Docker 镜像不再复制 .envprivate_key.pem,敏感配置应通过环境变量、volume 或 secret 注入。
  • 日志中避免输出完整 token、secret 和原始消息内容。

许可证

MIT

About

Craft 微信转存工具

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors