
Baoyu Wechat Summary
Summarize WeChat chats into normal or roast digests over configurable time windows with your identity mapped for readable archives.
Install
npx skills add https://github.com/jimliu/baoyu-skills --skill baoyu-wechat-summaryWhat is this skill?
- EXTEND.md preferences: self_wxid, self_display, default_version (normal | roast | both)
- Default time range forms: Nd, Nh, or fixed YYYY-MM-DD when user omits bounds
- Configurable data_root for shared digest archives outside the project
- Recognizes your messages as self_display instead of raw wxid in digest text
- wx contacts JSON lookup workflow to discover your wxid
Adoption & trust: 2.9k installs on skills.sh; 20.9k GitHub stars; 2/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
WeChat digests compound relationship and community context over time, so the primary shelf is Grow lifecycle even though you may run summaries during daily operations. Lifecycle fits recurring digest generation and default 24h/7d ranges that track ongoing conversations—not one-off landing or build tasks.
Common Questions / FAQ
Is Baoyu Wechat Summary safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Baoyu Wechat Summary
# baoyu-wechat-summary preferences # # Copy this file to one of: # .baoyu-skills/baoyu-wechat-summary/EXTEND.md (project-local, takes precedence) # $XDG_CONFIG_HOME/baoyu-skills/baoyu-wechat-summary/EXTEND.md (XDG, falls back to ~/.config) # ~/.baoyu-skills/baoyu-wechat-summary/EXTEND.md (per-user home) # # First match wins. Keys are case-insensitive. Use `key: value` or `key=value`. # Blank lines and lines starting with `#` are ignored. # REQUIRED — your own wxid. Used to recognize your own messages so they show up # as `self_display` (below) in digests instead of the raw wxid string. # Find via: wx contacts --query <你的昵称> --json (look for chat_type=private, your own row) self_wxid: wxid_xxxxxxxxxxxx # REQUIRED — the display name to substitute for your wxid in digest text. self_display: 宝玉 # OPTIONAL — which version(s) to generate when the user doesn't explicitly say. # Values: normal | roast | both # Default: normal default_version: normal # OPTIONAL — default time range when the user gives none and there's no prior # digest to incrementally extend from. Forms: `Nd` (days), `Nh` (hours), or a # fixed `YYYY-MM-DD` (treated as both --since and --until). # Default: 24h (i.e., today) # default_time_range: 7d # OPTIONAL — override the root directory where digest folders live. Default # resolves to `{project_root}/wechat`. Useful if you want a shared archive # outside the current project. # data_root: ~/Documents/wechat-digests # OPTIONAL — 触发「🤖 @bot 答疑」小节的名字(逗号分隔)。消息含 @<别名> 即视为 # 冲总结 bot 提的问题/请求,会在每版简报里专门答复。 # 请选用群里【不存在】的人物/机器人名,以免与真人 @ 混淆。 # Default: bot, 精华bot # bot_aliases: bot, 精华bot # Output formats — normal & roast digest This reference defines the two digest variants the skill produces: the **normal** version (default, sober summary) and the **roast** version (毒舌,sarcastic critique, opt-in). Load this file during Step 4 (skeleton) and keep it open through Step 6 (audit). Both versions share the same overall layout and writing rules; the differences are tone, the leaderboard annotations, the portraits, and the footer. Write the normal version first when both are requested — it's the anchor for incremental mode and the source of truth for the profile updates. --- ## 1. Normal version ### 1.1 Five-part structure ``` [Title line] [📊 Stats block + Top 10 leaderboard] [Opening summary — 1-2 paragraphs of prose] [群友画像 — one entry per active user (3+ msgs)] [Categorized body — 3-6 self-named sections per day] [Optional pain-point section] [Optional @bot Q&A section] [Fixed footer] ``` ### 1.2 Title line - Single line, no markdown heading. - Form: `{群名} 群聊精华 · {日期或日期区间}` - Date single day: `2026-03-12`. Date range: `2026-03-12 ~ 2026-03-15`. Example: ``` 相亲相爱一家人 群聊精华 · 2026-03-12 ``` ### 1.3 Statistics block - Starts with `📊 消息统计: 共 N 条消息`. - Followed by a leaderboard, top 10 senders by message count, one per line. - Form per line: `{排名}. {昵称}: {消息数} 条` - Counting rules: - Include images, emojis, links, voice transcripts — anything that occupies a chat row is one message. - Exclude system messages and revoked messages (`[系统]`, `revokemsg`). - For the `self_wxid` user, substitute `self_display` from EXTEND.md before counting/displaying. - Resolve ambiguous nicknames (per SKILL.md Step 3.6) before tallying so the same person isn't double-counted. Example: ``` 📊 消息统计: 共 387 条消息 1. 蛙总: 92 条 2. 老王: 58 条 3. 阿喵: 41 条 ... ``` ### 1.4 Opening summary - 1-2 paragraphs, plain prose, no headings, no bullets. - Hook the reader: lead with the most distinctive thread of the day (a heated debate, a surprising announcement, a market move someone reacted to). - Reference 2-4 of the day's category titles in the prose so the reader knows what's coming. - Mention 1-2 specific people only if their contribution is central; otherwise stay topic-focused. - No timestamps, no message counts (those live in the stats block). ### 1.5 群友画像 section - Heading line: `群友画像` - One entry per user with