Skip to main content

wechat-cli-local-data

Query local WeChat chat history, contacts, sessions, and favorites from the command line with AI-first JSON output

跳到安装

来源信息

仓库
reason-machines/devtools-skills
最近来源活动
2026年6月2日 11:35
检测到的 SKILL.md 语言
英语
星标
4
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
wechat-cli-local-data
description
Query local WeChat chat history, contacts, sessions, and favorites from the command line with AI-first JSON output
triggers
["check my wechat messages","search wechat chat history","export wechat conversation","get wechat unread messages","show wechat contacts","analyze wechat chat statistics","query my local wechat data","read wechat group messages"]
# WeChat CLI — Local Data Query Skill > Skill by [ara.so](https://ara.so) — Devtools Skills collection. A CLI tool to query your local WeChat data — chat history, contacts, sessions, favorites, and more. Designed for LLM integration with JSON output by default. All data stays on your machine; uses on-the-fly SQLCipher decryption. ## Installation ### npm (Recommended) ```bash npm install -g @canghe_ai/wechat-cli ``` Currently ships with macOS arm64 binary. For other platforms, use pip: ```bash pip install wechat-cli ``` Requires Python >= 3.10. ### From Source ```bash git clone https://github.com/freestylefly/wechat-cli.git cd wechat-cli pip install -e . ``` ## Initial Setup Before using any commands, you must initialize the tool to extract WeChat encryption keys: ```bash # macOS/Linux (requires sudo for memory scanning) sudo wechat-cli init # Windows (run in elevated terminal) wechat-cli init ``` **Prerequisites:** - WeChat must be running - On macOS: Terminal needs "Full Disk Access" (System Settings → Privacy & Security → Full Disk Access) This command: 1. Auto-detects WeChat data directory 2. Scans WeChat process memory for encryption keys 3. Saves config to `~/.wechat-cli/` ### macOS: Handling `task_for_pid failed` Error If `init` fails with `task_for_pid failed`, the tool will automatically re-sign WeChat with required entitlements: 1. Follow on-screen instructions 2. Quit WeChat completely 3. Reopen WeChat and log in 4. Run `sudo wechat-cli init` again Manual re-signing (if auto-signing fails): ```bash sudo codesign --force --sign - --entitlements /dev/stdin /Applications/WeChat.app <<'EOF' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.get-task-allow</key> <true/> </dict> </plist> EOF ``` ## Core Commands ### Sessions — List Recent Chats ```bash # Get last 20 sessions (default, JSON output) wechat-cli sessions # Get last 10 sessions wechat-cli sessions --limit 10 # Human-readable format wechat-cli sessions --format text ``` **JSON Output Structure:** ```json [ { "chat_name": "Alice", "last_message": "See you tomorrow!", "last_time": "2026-04-15 18:30:45", "unread_count": 2 } ] ``` ### History — Read Chat Messages ```bash # Last 50 messages with Alice (default) wechat-cli history "Alice" # Get 100 messages with pagination wechat-cli history "Alice" --limit 100 --offset 50 # Filter by date range wechat-cli history "Team Group" --start-time "2026-04-01" --end-time "2026-04-03" # Filter by message type (text, image, voice, video, file, link, etc.) wechat-cli history "Alice" --type link # Text format for reading wechat-cli history "Alice" --format text --limit 20 ``` **JSON Output Structure:** ```json [ { "msg_id": "123456", "type": "text", "content": "Hello!", "sender": "Alice", "timestamp": "2026-04-15 10:30:00", "is_sender": false } ] ``` ### Search — Find Messages ```bash # Global search across all chats wechat-cli search "deadline" # Search in specific chat wechat-cli search "meeting notes" --chat "Work Team" # Search in multiple chats wechat-cli search "report" --chat "TeamA" --chat "TeamB" # Search with type filter (only files) wechat-cli search "proposal" --type file # Date range search wechat-cli search "budget" --start-time "2026-04-01" --end-time "2026-04-30" ``` ### Contacts — Search & Details ```bash # Search contacts by name wechat-cli contacts --query "Li" # Get contact details by name wechat-cli contacts --detail "Alice" # Get contact details by WeChat ID wechat-cli contacts --detail "wxid_abc123xyz" ``` **JSON Output (Detail):** ```json { "nickname": "Alice", "remark": "Alice from Marketing", "wechat_id": "wxid_abc123xyz", "bio": "Always learning", "avatar_url": "https://...", "account_type": "personal" } ``` ### Members — Group Member List ```bash # Get all members in a group (JSON) wechat-cli members "AI Research Group" # Text format for reading wechat-cli members "AI Research Group" --format text ``` ### Stats — Chat Analytics ```bash # Get statistics for a chat wechat-cli stats "Team Group" # Stats for date range wechat-cli stats "Alice" --start-time "2026-04-01" --end-time "2026-04-03" # Text format with charts wechat-cli stats "Team Group" --format text ``` **Returns:** - Total message count - Message type breakdown (text, image, file, etc.) - Top 10 senders with message counts - 24-hour activity distribution ### Export — Save Conversations ```bash # Export to markdown (stdout) wechat-cli export "Alice" --format markdown # Export to file wechat-cli export "Alice" --format txt --output alice_chat.txt # Export with filters wechat-cli export "Team Group" --start-time "2026-04-01" --limit 1000 --format markdown --output team_april.md ``` **Supported formats:** `markdown`, `txt` ### Favorites — WeChat Bookmarks ```bash # Get all favorites (recent first) wechat-cli favorites # Filter by type wechat-cli favorites --type article # Search favorites wechat-cli favorites --query "machine learning" ``` **Types:** `text`, `image`, `article`, `card`, `video` ### Unread — Unread Sessions ```bash # Get all unread sessions wechat-cli unread # Limit results wechat-cli unread --limit 10 --format text ``` ### New Messages — Incremental Updates ```bash # First run: returns unread + saves state wechat-cli new-messages # Subsequent runs: only new messages since last check wechat-cli new-messages # Text format for monitoring wechat-cli new-messages --format text ``` State saved at `~/.wechat-cli/last_check.json`. Delete to reset. **Use Case:** Perfect for automation/cron jobs to monitor new messages. ## AI Agent Integration WeChat CLI is designed for AI agent tool calls. All commands output JSON by default. ### Claude Code Integration Add to your project's `CLAUDE.md`: ````markdown ## WeChat CLI You can use `wechat-cli` to query my local WeChat data. Common commands: - `wechat-cli sessions --limit 10` — list recent chats - `wechat-cli history "NAME" --limit 20 --format text` — read chat history - `wechat-cli search "KEYWORD" --chat "CHAT_NAME"` — search messages - `wechat-cli contacts --query "NAME"` — search contacts - `wechat-cli unread` — show unread sessions - `wechat-cli new-messages` — get messages since last check - `wechat-cli members "GROUP"` — list group members - `wechat-cli stats "CHAT" --format text` — chat statistics All commands output JSON by default. Add `--format text` for human-readable output. ```` ### Example Agent Workflows **Check unread messages:** ```bash # Agent executes: wechat-cli unread --format text # Then summarizes results for user ``` **Search for project updates:** ```bash # Agent executes: wechat-cli search "project status" --chat "Work Team" --start-time "2026-04-01" # Then extracts key information ``` **Analyze chat activity:** ```bash # Agent executes: wechat-cli stats "AI Discussion Group" --format text # Then presents insights: most active hours, top contributors, etc. ``` **Export important conversation:** ```bash # Agent executes: wechat-cli export "Client Meetings" --start-time "2026-04-01" --end-time "2026-04-07" --format markdown --output client_weekly.md # Then confirms export and location ``` ## Message Type Filters Use with `--type` option on `history` and `search` commands: | Type | Description | |------|-------------| | `text` | Text messages | | `image` | Images | | `voice` | Voice messages | | `video` | Videos | | `sticker` | Stickers/emojis | | `location` | Location shares | | `link` | Links and app messages | | `file` | File attachments | | `call` | Voice/video calls | | `system` | System messages | ## Common Patterns ### Monitor New Messages in Script ```bash #!/bin/bash # Check for new messages every 5 minutes while true; do NEW_MSGS=$(wechat-cli new-messages --format text) if [ -n "$NEW_MSGS" ]; then echo "New messages detected:" echo "$NEW_MSGS" # Send notification, etc. fi sleep 300 done ``` ### Search Across Multiple Groups ```bash # Find deadline mentions in all project groups wechat-cli search "deadline" \ --chat "Project Alpha" \ --chat "Project Beta" \ --chat "Project Gamma" \ --format text ``` ### Export Weekly Summaries ```bash # Export last week's messages from key chats START_DATE=$(date -d "7 days ago" +%Y-%m-%d) END_DATE=$(date +%Y-%m-%d) wechat-cli export "Team Sync" \ --start-time "$START_DATE" \ --end-time "$END_DATE" \ --format markdown \ --output "team_sync_weekly.md" ``` ### Get Contact Details Before Messaging ```bash # Check if contact exists and get details CONTACT_INFO=$(wechat-cli contacts --detail "New Client") if [ $? -eq 0 ]; then echo "Contact found:" echo "$CONTACT_INFO" | jq '.nickname, .wechat_id' else echo "Contact not found" fi ``` ## Configuration Configuration stored at `~/.wechat-cli/`: ``` ~/.wechat-cli/ ├── config.json # WeChat data path, account info ├── keys.json # Encryption keys (auto-extracted) └── last_check.json # State for new-messages command ``` **config.json structure:** ```json { "data_dir": "/Users/username/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/abc123", "account_id": "wxid_abc123xyz" } ``` **To reset:** Delete `~/.wechat-cli/` and run `init` again. **To switch accounts:** Run `init` again and select different account. ## Troubleshooting ### "WeChat data directory not found" **Solution:** - Ensure WeChat is running - On macOS: Grant "Full Disk Access" to your terminal app - Run `init` with `sudo` on macOS/Linux ### "Failed to extract encryption key" **Solution:** - On macOS: Re-sign WeChat (tool will auto-attempt this) - Ensure WeChat is logged in and active - Try restarting WeChat and running `init` again ### "Database decryption failed" **Solution:** - WeChat version changed — run `init` again to refresh keys - Database corruption — check WeChat data directory permissions ### Empty Results for Valid Chat Name **Solution:** - Use exact chat name (case-sensitive) - For groups, use full group name as shown in WeChat - Use `sessions` command to see exact chat names - Try searching with partial name using `contacts --query` ### `new-messages` Returns Everything **Solution:** - Delete `~/.wechat-cli/last_check.json` to reset state - First run after reset will return all unread messages - Subsequent runs will only show new messages ### Permission Denied Errors **macOS/Linux:** ```bash # Use sudo for init sudo wechat-cli init # Regular commands don't need sudo wechat-cli sessions ``` **Windows:** - Run terminal as Administrator for `init` - Regular commands can run without elevation ## System Requirements - **macOS** ≥ 10.15 (Catalina) - **WeChat for Mac** ≤ 4.1.8.100
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看