Communitygithub.com

BlueSky0329/mama-message

妈妈的消息:把你和妈妈的聊天截图算成一份报告、两张卡、一句可以直接发给她的话。只吃截图,不联网,不碰数据库。Agent Skill + 提示词 + 浏览器版

¿Qué es mama-message?

mama-message is a Claude Code agent skill that 妈妈的消息:把你和妈妈的聊天截图算成一份报告、两张卡、一句可以直接发给她的话。只吃截图,不联网,不碰数据库。Agent Skill + 提示词 + 浏览器版.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add BlueSky0329/mama-message

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

妈妈的消息

一句话:把一段家人聊天记录变成一个数字、一个标签、一句可以发出去的话

用户不需要 AI 来告诉他妈妈爱他。他需要的是三样东西:① 他从来没数过的数字("你回了 38 次'嗯'");② 一个台阶("软件说我欠你一个电话"比"我想你了"容易发出去);③ 一张能晒的图(晒愧疚 = 晒良心)。报告的每个模块都在服务这三件事。它不是心理学分析,妈妈不需要依恋类型。

流程:拿到记录 → 确认两个人 → 转成 messages.jsonstats.py 算数 → 问三个问题 → 写文字 → render.py 出报告和卡片。练习模式和对照组是附加入口。

支持文件在这个目录下,按需读:

  • references/metrics.md — 每个数字怎么算(用户问"这个怎么算的"看这里)
  • references/types.md — 10 个她的类型 + 6 个你的类型 + 五档评级
  • references/dictionary.md — 黑话翻译表的基础词典和生成规则
  • references/writing-rules.md — 文字部分的规矩、反 AI 黑名单、什么时候要收着
  • references/report-template.md — 报告模板和 narrative.json 字段
  • references/practice.md — 练习模式
  • references/export-guide.md — 分平台的导出 / 截图指南(用户问"怎么导出"看这里,先推荐截图)
  • scripts/parse_export.py validate.py stats.py render.py compare.py redact.py,只用标准库,不联网
  • assets/ — 报告和两张卡片的 HTML 模板

隐私(先于一切)

  • 只读用户给的截图 / 文件。不解密微信数据库,不联网,不把记录存到任何用户没要求的地方。 脚本产物(messages.json / stats.json / reports/)都在当前目录,告诉用户在哪、可以随时删。
  • 报告不复述整段原文,只引用短句。转账只记次数不记金额
  • 用户没打码:提醒一次"名字和敏感内容可以先用 scripts/redact.py 打掉",不重复。
  • 用户问"会不会泄露":如实回答——你在哪个工具里跑,记录就发给了谁;脚本本身不发任何东西。

第一步:拿到记录

先问有没有电脑版微信。 导出文件比截图好太多——半年的记录一次拿全,时间戳完整,不用一屏一屏截、也不用 AI 逐张转录(几十张截图只能覆盖几百条,还容易转错)。

优先级:

  1. 导出文件(首选):用 WeFlow(微信 4.0+)或留痕 / WeChatMsg / PyWxDump(微信 3.x)把和这一个人的记录导成 JSON / CSV / TXT,scripts/parse_export.py 认得。具体分平台的步骤在 references/export-guide.md,按用户的情况答对应的一段,不要一次念完。
  2. 截图(兜底):只有手机、用 Mac、或者不想在电脑上装东西时用。微信 / QQ / 短信都行,安卓可以用长截图。
  3. 直接粘贴的文本

用户什么都没给,只说"想分析我和我妈的聊天",先问一句:

你电脑上装微信了吗?装了的话我教你把和她的记录导出来,一次能拿全半年的,比截图准得多。只有手机也行,那就截图——从最近往上翻,每一屏截一张。

走截图路径时再补:相邻两张有一两条重叠最好;十几张能出报告,三四十张数字才稳;名字和敏感内容可以先打码。

第二步:确认两个人

  • 哪边是用户,哪边是家人。 微信截图右侧绿色气泡是用户,左侧白色是对方。导出文件看发送者字段。分不清就问一次。
  • 对方是谁、怎么称呼、用"她"还是"他"。 用户说"我妈"用"妈妈/她",说"我爸"用"爸爸/他",说"外婆"用"外婆/她"。报告标题、类型名、节日(母亲节/父亲节)全部跟着换。skill 叫"妈妈的消息",但一半用户会拿来分析爸爸。
  • 生日(可选):她的和用户的(MM-DD),进节日记分牌和倒计时。

第三步:转成工作表

目标是 messages.json

{"me": "我", "her": "妈妈", "her_pronoun": "她", "source": "screenshots",
 "messages": [
   {"ts": "2026-05-12T21:03:14", "sender": "her", "type": "text", "content": "吃饭了吗", "dur": null},
   {"ts": null, "sender": "me", "type": "text", "content": "吃了", "dur": null},
   {"ts": "2026-05-12T21:05:00", "sender": "her", "type": "voice", "content": "", "dur": 23}
 ]}

type ∈ text / voice / image / video / sticker / transfer / link / call_voice / call_video / recall / location / file。语音和通话把秒数写进 durlinkcontent 放标题。转账 content 只写"转账",不写金额

截图路径:逐张转录。规则——

  • 相邻截图重叠的消息只记一次,按内容和位置对齐,不靠猜。
  • 微信只在间隔较久时显示时间戳。有时间戳的填 ts;没有的填 null(脚本会计数但不参与时间计算)。不要给没时间戳的消息编时间。
  • 语音记秒数,表情包记 sticker(内置表情如 [玫瑰] 放 content),转账记次数。
  • 截图太糊或中间明显缺一段:转能看清的,在数据说明里写。不为了报告好看补数据。
  • 转录完跑一遍 python scripts/validate.py messages.json:它会检查格式、时间顺序、疑似重复(相邻截图重叠没去掉)、转账有没有写金额,并打印条数和时间范围。把这份摘要给用户确认,再算。

导出路径(首选):

python scripts/parse_export.py 导出文件 --her 记录里的名字 --call 妈妈 --out messages.json
# 不知道对方在记录里叫什么:先不加 --her 跑一次,脚本会列出名字
# 记录跨了好几年:加 --since 2026-01-01(或 --last-days 180)只取最近一段,报告更有针对性

WeFlow 的导出格式选 JSON(自带 isSend 发送方标记,不用填 --her;TXT 和 weclone CSV 也认,但信息少一些)。WeFlow / 留痕这类工具导出的是全量记录,可能有几万条。跨度太长的话报告会被稀释("她最常问"变成三年的平均),默认建议取最近 6–12 个月。注意:WeFlow 不导出语音秒数,"最长语音"这项会缺,正常。

第四步:算数

python scripts/stats.py messages.json --out stats.json --today 2026-08-30 --her-birthday 10-20 --my-birthday 06-03

终端会打一份摘要,stats.json 里是全部数字。报告里的每个数字都从这里来,不自己心算。定义在 references/metrics.mdstats.json 里的 warnings 要照抄进报告末尾的数据说明。

没法跑脚本(比如在只有对话的环境里):按 metrics.md 的定义手算最核心的几项——谁先开口、回复中位、短回复、没回、最常问、时段——其余标"需要导出记录才能算"。

第五步:问三个问题

算完先给用户看三个指数和鉴定结果(这是最有意思的部分,先给),然后问:

写最后一段之前问你三件事,都可以跳过:① 多久没回家了?② 她最近有没有什么事——身体、家里?③ 你们上次打电话聊了什么?

第六步:写文字

references/writing-rules.md。要写的:

  • 三个指数各一句扎心话(数字 + 一个细节)
  • 她的类型和你的类型各一句(引原话 + 数字)
  • 黑话翻译表 6–10 条(她真说过的话,见 dictionary.md
  • 她转给你的:一句洞察(转了什么、和用户说过的什么有关)
  • 她其实想说的是:120–220 字
  • 今晚就做的三件事
  • 帮你回:3 条
  • 三句打电话的开场白
  • 可以直接发给她的一条:60–100 字,带具体时间

先在对话里按 report-template.md 的 Markdown 模板给出完整报告,同时把文字写进 narrative.json

第七步:出报告和卡片

python scripts/render.py stats.json narrative.json --out reports/

三个文件:完整报告、亲情账单卡(用户自己发)、发给她的卡。告诉用户用浏览器打开、截图,卡片是竖版的。发给她的卡是这个产品真正的出口——如果只推荐一个,推荐它。


附加入口

练习模式(用户说"练习""陪我练""扮演我妈")→ 读 references/practice.md。AI 用她的说话方式跟用户聊 10 回合,用户回"嗯"当场标出,最后打分。需要 ≥ 40 条记录。

对照组(用户说"和朋友比比""我回谁更快")→ 让用户再给一组和朋友的截图,走同样流程出 friend-stats.json,然后:

python scripts/compare.py stats.json friend-stats.json --labels 你妈 朋友 --mode friend

结论只有一行:"你回朋友要 3 分钟,回你妈要 4 小时 12 分,差了 84 倍。"

偏心报告(用户给了爸妈两组)→ --labels 妈 爸 --mode papa

只要卡片(用户说"做张卡片""给我张图")→ 如果已经有 stats 和 narrative 直接 render;没有就走完整流程,卡片是流程的产物。

帮你回(用户说"帮我回她")→ 只写"没回"清单的回复和三句开场白,不出整份报告。


什么时候要收着

从记录和用户语气里看,不用他明说。细则在 writing-rules.md 末尾,要点:

  • 记录 < 20 条:只出数字,不写解读。
  • 记录里有冲突、辱骂、控制、持续催婚要钱:中性描述两边的模式,不预设谁对,去掉"今晚三件事"和"发给她的那条"。
  • 用户在难受、家里闹僵、或提到妈妈已经不在:先回应人,再问要不要继续;继续就去掉评级。
  • 替别人分析:改第三人称。

任何情况下不给用户贴标签。"短回复"不是"敷衍","没回"不是"不孝",评级是章不是判决。


出报告前自检

  • 每个数字能在 stats.json 里找到
  • "她其实想说的是"每句判断能指到一条原话或一个数字
  • 类型那句引了原话
  • 发给她的那条有具体时间
  • 全文没有黑名单短语,没有"敷衍""不孝""应该",没有感叹号
  • 称呼和她/他没串,节日按人选
  • 没写任何转账金额
  • 数据说明写了截图断层和无时间戳条数

Skills relacionados