SuperAPI AI Directory

wechat-daily

Data & analytics

View repository

Updated 10-16 00:22

About this skill

WeChat Digital Asset Skill

Overview

This Skill extracts chat records, Moments, and Favorites content from WeChat Mac 4.x's local encrypted database, and accumulates them into personal digital assets that can be reviewed, searched, and acted upon. By default, it first supports WeChat group chat daily reports, and can also guide users to configure Moments supervision, Favorites organization, customer follow-up, big-shot conversation review, and other use cases.

Applicable conditions:

  • macOS system
  • WeChat Mac 4.x is installed
  • Python 3.9+

Execution flow

Phase 1: Environment detection (every execution)

Check whether ~/.config/wechat-daily.json exists and contains wxid or db_base_path:

  • Does not exist or is incomplete → enter Phase 2 (first-time configuration)
  • Exists and is complete → enter Phase 3 (generate daily report)

Phase 2: First-time configuration (new user guidance)

The Skill cannot automatically pop up a window "at the moment of installation"; when the user triggers this Skill for the first time (for example, saying "daily report", "Moments daily report", "Favorites organization"), first show the three major categories and nine use cases, then proceed to key and monitoring target configuration.

Step 2a: Install Python dependencies

pip3 install pycryptodome zstandard

Step 2b: Extract database key

Run the key extraction script:

python3 {{SKILL_DIR}}/scripts/extract_keys.py

The script will automatically:

  1. Check whether WeChat is installed
  2. Copy WeChat to ~/Desktop/WeChat.app and codesign to remove Hardened Runtime
  3. Check/install frida
  4. frida spawn launches the signed copy → hook CCKeyDerivationPBKDF
  5. Based on this machine's sns.db / favorite.db / message_0.db and other database salts, capture and match the key
  6. Automatically detect wxid and database path
  7. Merge and save to ~/.config/wechat-keys.json, and update ~/.config/wechat-daily.json

Important: WeChat Mac 4.1.x uses independent keys per database.favorite.db and sns.db are often not loaded at startup; during script execution, you must manually open "Favorites" and "Moments" in the popped-up signed copy of WeChat, and it is best to scroll Moments once.

If there is already a message_0 / contact / session key, only supplement Moments and Favorites:

python3 {{SKILL_DIR}}/scripts/extract_keys.py --targets sns,favorite --duration 120

If the signed copy is already logged in and running, use attach mode to recapture without restarting:

python3 {{SKILL_DIR}}/scripts/extract_keys.py --mode attach --targets sns,favorite --duration 120 --skip-prepare --reuse-log

Only view this machine's database salts and paths, without launching WeChat:

python3 {{SKILL_DIR}}/scripts/extract_keys.py --list-dbs

Step 2c: Use case selection and information collection

During first-time guidance, first tell the user in natural language that this Skill supports three major categories of use cases: chat records, Moments, and Favorites. Then show the nine sub-use cases below, and ask the user which ones to prioritize enabling currently. If the user is unsure, the default recommendation is to first enable: WeChat group chat daily report accumulation, Moments daily report, and Favorites big cleanup to knowledge base.

Do not modify the structure of ~/.config/wechat-daily.json ; the information collected in this step is first used as context for this round, and only the original daily report configuration needs to be written to monitor_groups、monitor_contacts、report_dir。

Chat records category

  1. WeChat group chat daily report accumulation
    • Purpose: accumulate each day's high-value WeChat group chats to Obsidian or Feishu, suitable for reading only the most essential parts each day.
    • Need to ask: which group chats to follow, the daily report time range, whether to output to Obsidian or Feishu, and the daily report directory or knowledge base location.
    • Output suggestions: daily highlight summary, key links, topics to review. For a lightweight daily report, consider using Flash.
  2. Review of Conversations with Key People
    • Purpose: organize conversations with a key person and analyze how to better demonstrate strength and value, and pursue collaboration, advice, or opportunities.
    • Need to ask: which friend to analyze, the analysis time range, and which of collaboration/advice/deal closing/long-term relationship maintenance is the goal.
    • Output suggestions: conversation profile, the other party's points of interest, the user's current expression issues, and suggestions for the next round of chat. For in-depth review, consider using the 1T model.
  3. Follow-up and Reminders for Key Matters
    • Purpose: continuously follow group chats and contacts related to key matters being advanced recently, and organize to-dos or calendar events.
    • Need to ask: the names of recently advanced projects, related group chats/contacts, and which to-dos/meetings/deadlines need to be identified.
    • Output suggestions: to-do list, draft calendar events, reminder suggestions. This time only generate drafts; do not execute Feishu CLI.
  4. Customer Management Accumulation
    • Purpose: accumulate key customer chat content, follow-up status, and next actions as customer management material to improve conversion rates.
    • Need to ask: key customers or customer groups, customer stage definitions, and status fields to track.
    • Output suggestions: customer status summary, next actions, and field suggestions that can be written into Feishu Bitable. This time do not actually write into Feishu Bitable.

Moments Category

  1. Competitor Monitoring and Customer Demand Capture
    • Purpose: monitor peers' and customers' Moments, discover signals such as new products, demands, prices, activities, and hiring, and form a Moments daily report.
    • Need to ask: which contacts are competitors, which are customers, and which signals to follow.
    • Output suggestions: Moments daily report, risk/opportunity reminders, and suggested response actions. For real-time patrol, only provide solution suggestions; this time do not create automated patrol.
  2. Personal IP Diagnosis
    • Purpose: analyze the themes of your own Moments content, interaction performance, and the impression labels others may form.
    • Need to ask: the time range for analyzing your own Moments, the target persona, and the direction you want to optimize.
    • Output suggestions: theme distribution, posting rhythm, interaction performance, external impression labels, and optimization suggestions. For full in-depth analysis, consider using the 1T model.
  3. High-Value Content Extraction
    • Purpose: extract tools, resources, opportunities, and insights shared by experts from the noise in Moments.
    • Need to ask: which people or tags to follow, and what content counts as high value, such as tools, insights, resources, and opportunities.
    • Output suggestions: high-value content list, summaries, and convertible topic ideas.

Favorites Category

  1. Favorites Cleanup to Knowledge Base
    • Purpose: solve "saved means forgotten" by organizing favorites into a searchable knowledge base or topic library.
    • Need to ask: classification preferences, output location, and whether to generate tags and summaries.
    • Output suggestions: classification system, item-by-item summaries, tags, and topic/material library suggestions. This time do not actually write into Feishu.
  2. Favorites Revival Reminder
    • Purpose: Weekly re-surface forgotten high-value saves so the collection is truly used again.
    • Need to ask: forgetting threshold of N days, weekly push frequency, number of items per push, preferred topics.
    • Suggested output: revival list, recommended reading order, reminder draft. No automation is created this time.

If the user only wants to use the original group chat daily report, go directly to the next step "Select monitoring targets" and keep the old process unchanged.

Step 2d: Select monitoring targets

Run the list script to display all group chats and contacts:

python3 {{SKILL_DIR}}/scripts/list_contacts.py

Then ask the user (using the AskUserQuestion tool):

Question 1: "Which group chats do you want to monitor? Please select from the list above and enter the group chat names (separate multiple with commas)."

Question 2: "Which specific individuals do you want to monitor? Please enter the contact remark names or nicknames (separate multiple with commas); you can skip if none."

After the user answers, save the selections to ~/.config/wechat-daily.json in the monitor_groups and monitor_contacts fields.

If the user chose the Moments playbook, also continue asking: which Moments contacts to follow, which contacts are competitors/customers/experts, whether to analyze your own Moments, and what keywords or signals to watch for.

If the user chose the favorites playbook, also continue asking: how the saved content should be categorized, where to output it, whether summaries and tags are needed, and whether to generate a revival reminder draft.

Step 2e: Configure output path

Ask the user:

Question 3: "Which directory should the daily report be saved to?" (default ~/Documents/wechat-daily)

Save to the report_dir field in the configuration file.

Step 2f: Generate the first daily report

After configuration is complete, automatically execute Phase 3.

Phase 3: Generate daily report

Step 3a: Run the extraction script

By default, takeyesterday 08:00 to today 08:00 complete data:

python3 {{SKILL_DIR}}/scripts/wechat_daily.py

If the user specifies a specific date (such as "April 16 daily report", "2026-04-16"), use date mode:

python3 {{SKILL_DIR}}/scripts/wechat_daily.py YYYY-MM-DD

If the user has a custom configuration file path:

python3 {{SKILL_DIR}}/scripts/wechat_daily.py --config /path/to/config.json

Step 3b: Read the raw report

Read the raw report file generated in Step 3a. Get the report path from the script output, or look under the configured report_dir for YYYY-MM-DD.md。

Step 3c: Generate the highlights summary

You are a group chat highlights extraction expert. Based on the raw messages, rewrite the report in the following format:

Format requirements:

  • Opening: 1-2 paragraphs of natural language summarizing the most core content of the day (do not use markdown formatting)
  • Body: categorized by group, extracting valuable discussion points from each group
  • Do not use markdown bold or heading syntax; use emoji + lists
  • Keep links as-is
  • Keep key names
  • End with the fixed format "This briefing is automatically generated by AI"

Category reference (choose flexibly based on actual content):

  • 🛠 Tool tips/practical experience
  • 💰 Resource recommendations
  • 📡 Industry news
  • 💡 Clash of views
  • 🎭 Group member anecdotes
  • 🐟 Group chat daily life
  • 📈 Investment/crypto
  • 💬 Topic discussion

Content guidelines:

  • Highlight the key points and filter out unimportant chit-chat
  • Use plain language and preserve group members' vivid expressions and memorable quotes
  • Non-text messages such as images, voice messages, and emojis are not included in the summary
  • System messages (recalls, group joins, etc.) are not included in the summary
  • Do not write names; summarize only the essential content (unless it is a public figure or specifically specified by the user)
  • Do not write private chat summaries (unless the user has configured monitor_contacts)
  • Do not write "Other Group Chats at a Glance"
  • The number of messages for each group is noted after the group name, e.g. 群名(123条)
  • Use --- to separate groups

Step 3d: Write to file

Overwrite the file with the highlight summary:{report_dir}/YYYY-MM-DD.md

Then tell the user that the daily report has been generated and briefly summarize the 1-2 most important things today.


Configuration file format

~/.config/wechat-daily.json:

{
  "wxid": "<wxid>",
  "db_base_path": "~/Library/Containers/.../db_storage",
  "monitor_groups": ["群名1", "群名2"],
  "monitor_contacts": [],
  "report_dir": "~/Documents/wechat-daily",
  "time_mode": "8am_to_8am"
}

~/.config/wechat-keys.json(auto-generated, do not edit manually):

{
  "message_0": "hex_key",
  "contact": "hex_key",
  "session": "hex_key",
  "sns": "hex_key",
  "favorite": "hex_key"
}

Dependencies

  • Python 3.9+
  • pycryptodome
  • zstandard
  • frida + frida-tools (required only for the first key extraction)