Innei

chat-export-report

Use when user provides exported chat history (WeChat / Telegram / iMessage / QQ exports as .md / .txt / .json) and asks "我和 X 聊了啥"、"看完整个 md"、"细说 XX"、"是不是有 Y"、"what did I and X talk about", wants topical breakdown, requests detail on specific themes (relationships / work / health / events), or seeks honest interpretation of conversation dynamics. Triggers on large chat dumps (>1000 lines) where direct full read is impractical.

Innei 78 2 Updated 4mo ago
GitHub

Install

npx skillscat add innei/skill/chat-export-report

Install via the SkillsCat registry.

SKILL.md

chat-export-report

Analyze massive exported chat logs (thousands to hundreds of thousands of lines) and produce a layered, drill-downable report grounded in original quotes.

When to invoke

  • User provides path to exported chat (WeChat / Telegram / iMessage / QQ; .md / .txt / .json)
  • File far exceeds a single Read window (>2000 lines)
  • User asks "what did we talk about", "read the whole file", "tell me more about X", "was there Y between us"
  • User wants an honest read of relationship dynamics, emotional tone, or missed opportunities

Do not use for:

  • Single messages or short conversations
  • Looking up one specific fact (just grep)
  • Full line-by-line translation or re-export

Reading strategy

Step 1 — Measure size

wc -l <file>

Step 2 — Three-zone sampling

Never read the whole file at once. Establish baseline tone first:

Zone offset limit
Opening 1 200
Middle total/3 and total*2/3 120–150 each
Tail total-200 200

Four to five samples fix the time span, message density, opening / closing state, and any pause points.

Step 3 — Topical grep

Sweep for line numbers by topic family, then Read surrounding context as needed:

Topic Keyword family
Work 实习|入职|面试|mentor|论文|三方|加班|KPI|大厂|interview|onboard
Food 外卖|做饭|盒饭|吃饭|饿|食堂|takeout|cook
Housing 租|合租|中介|宿舍|房租|老家|rent|roommate
Romance 对象|男朋友|女朋友|喜欢|分手|相亲|介绍|追|date|crush
Health 抑郁|emo|失眠|噩梦|结节|医院|体检|depress|insomnia
Current events 封|核酸|疫情|户口|历史|lockdown|covid
Hobbies 游戏|番|二次元|新海诚|动漫|追剧|game|anime
Sexuality 性取向|gay|les|喜欢男|喜欢女

Per family, take 30–50 line numbers; then Read 60–150 lines of surrounding context to verify.

Output layering

Reply in four layers, deepest only on follow-up — never dump all four at once, leave room for the user to drill down:

L1 — Overview (500–800 words)
Time span, total message count, theme list (4–7 buckets), overall tone.

L2 — Theme breakdown (one section per bucket, three to five bullets, sparse direct quotes)
Use the topic families from Step 3 as section headings; 100–200 words each.

L3 — Single-theme deep dive (800–1500 words)
Triggered when user says "tell me more about X" / "细说 XX". Include sub-sections, original quotes, dates.

L4 — Subjective judgment (relationship / opportunity / missed chance)
Triggered by "was there a chance", "did I miss it", "我是不是错过". Three-part structure is mandatory:

  1. Evidence for "yes" (positive signals, usually fewer)
  2. Evidence for "no" (negative signals, usually more)
  3. Lean + reasoning (no emotion, just the objective read)

Quoting discipline

  • Every quoted line carries a date YYYY-MM-DD
  • Strictly identify the speaker: lines prefixed with **Innei**: are the user; unprefixed lines are the other party
  • Never fabricate quotes. Unsupported claims may be flagged as "impression" or "lean" — never disguised as evidence
  • Keep quotes short (1–2 lines); paraphrase longer passages with line-range citation

Honest interpretation

When the user asks a subjective question, do not pander to their hoped-for answer. Read by objective signals:

Signal Meaning
Other party repeatedly offers to "matchmake" / "introduce someone" They've placed themselves outside the candidate set
Explicit "I don't need a partner" Single-life declaration
Invitation (meet / dinner) declined without leaving an opening Hard boundary
Cold-shouldering emotion ("emo will make you ugly", "stop calling yourself depressed") Refusal to be drawn in deeply
Geographic / career divergence ("I'll head home in two years") Long-term incompatibility
Sexuality teasing from a "elder-sibling" register ("don't lock yourself into one gender") Joke, not test
User self-talks themselves out ("I never make the first move", "I'm doomed to be alone") Self-foreclosure

Reading by these signals yields a relatively objective lean, free of the user's memory-tinted lens.

Common mistakes

Wrong Right
Read the entire file in one go Sample + grep
Judge from opening alone Tail matters too — it has the latest state
Claims without quotes Always cite date + original line
Mirror the user's hopes Two-sided reading, objective lean
Confuse speakers Check prefix every time before quoting
Ignore time Note start–end dates per section
Trust user-supplied path blindly find / ls to verify first
cat a giant file Use Read or head/sed slicing
Dump L1+L2+L3+L4 in one reply Stop at L1/L2; wait for follow-up
Misattribute or invent quotes Strict honesty — omit rather than fake

Red flags

  • Writing "they probably talked about X" without a quote → STOP, go grep
  • Quote without a date → STOP, add it
  • Subjective judgment with only one side → STOP, add the counter-side
  • Answering "yes" or "no" to a "was there Y" question without listed evidence → STOP, list signals