Communitygithub.com

BlueSky0329/mama-message

媽媽的消息:把你和媽媽的聊天截圖算成一份報告、兩張卡、一句可以直接發給她的话。只吃截圖,不聯網,不碰資料庫。Agent Skill + 提示詞 + 瀏覽器版

mama-message 是什麼?

這個 AI Agent Skill(名為「媽媽的消息」)專為分析家人(尤其是母親)的聊天記錄而設計,支援 Claude Code、Cursor、Codex 等平台。它將聊天截圖或匯出的訊息檔案轉換為一份包含三項核心元素的報告:一個從未數過的數字(如回覆次數)、一個能當作台階的標籤(如「軟體說我欠你一個電話」)、以及一句可直接發給對方的話。此外,還會產出兩張卡片——一張給用戶自己看的親情帳單卡,和一張可直接發給家人的卡片。流程包括:取得記錄 → 確認對話雙方身分 → 轉換為標準 JSON 格式 → 計算統計資料 → 詢問三個關鍵問題 → 生成文字內容 → 渲染報告與卡片。支援的資料來源包括匯出檔案(如 WeFlow JSON)和截圖(微信、QQ、簡訊)。技能強調隱私優先:不聯網、不碰資料庫、不解密微信資料庫、不儲存任何未經使用者要求的資料,所有檔案處理都在本地目錄進行。對於少於 20 條記錄的對話,只輸出數字,不進行解讀;遇到衝突、辱罵或敏感情況,則調整報告內容以避免貼標籤或造成二次傷害。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add BlueSky0329/mama-message

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

媽媽的消息

一句話:把一段家人聊天記錄變成一個數字、一個標籤、一句可以發出去的話。

使用者不需要 AI 來告訴他媽媽愛他。他需要的是三樣東西:① 他從來沒數過的數字(「你回了 38 次『嗯』」);② 一個台階(「軟體說我欠你一個電話」比「我想你了」容易發出去);③ 一張能曬的圖(曬愧疚 = 曬良心)。報告的每個模組都在服務這三件事。它不是心理學分析,媽媽不需要依戀類型。

流程:拿到記錄 → 確認兩個人 → 轉成 messages.json → stats.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。語音和通話把秒數寫進 dur。link 的 content 放標題。轉帳 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.md。stats.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 裡找到
  • 「她其實想說的是」每句判斷能指到一條原話或一個數字
  • 類型那句引了原話
  • 發給她的那條有具體時間
  • 全文沒有黑名單短語,沒有「敷衍」「不孝」「應該」,沒有驚嘆號
  • 稱呼和她/他沒串,節日按人選
  • 沒寫任何轉帳金額
  • 資料說明了截圖斷層和無時間戳條數

相關技能