Extracts and analyzes Google Takeout exports of Gemini Apps activity, performing topic categorization, user profiling, and PII detection.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gemini-history-analyzer:gemini-history-analyzer [takeout-zip-path][takeout-zip-path]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Extract, categorize, and analyze Google Takeout ZIP exports of Gemini Apps activity. The skill handles:
Extract, categorize, and analyze Google Takeout ZIP exports of Gemini Apps activity. The skill handles:
Before full analysis, sample 3-5 files to determine the conversation type:
| Signal | Meeting Transcript | Prompt-Response |
|---|---|---|
| Speaker labels | "张三:"、"李四:"、"Speaker 1:" | "User:"、"Assistant:"、"You:" |
| Content pattern | Discussion flow, turn-taking, small talk | Q&A, instruction→output |
| Length distribution | Variable, lots of short turns | Longer assistant responses |
| File naming | Often Chinese, meeting-style titles | English, topic-based titles |
The analysis approach differs:
Google Takeout files contain Chinese/Unicode filenames. macOS unzip corrupts these — always use unar.
# Install unar if missing
brew install unar 2>/dev/null || true
# Extract to a target directory
unar -o <output-dir> -q "<takeout-zip-path>"
The standard structure:
Takeout/
└── My Activity/
└── Gemini Apps/
├── *.txt # Conversation transcripts
├── *.html # Web-format backups (rare)
├── *.png/jpg # Images from conversations
├── *.mp3/mp4/wav # Audio/video attachments
├── *.pdf # Uploaded/shared documents
├── *.xlsx/docx # Office documents
└── *.zip # Nested archives (animation frames, etc.)
Run a full inventory before reading any single file:
# Count by extension
find <extract-dir> -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
# List all txt files (these are the primary content)
find <extract-dir> -name "*.txt" -type f | sort
# Get total size per type
find <extract-dir> -type f -exec du -sh {} \; | sort -rh | head -30
Build a table of:
Read 3-5 txt files spread across the file list (not just the first few — timestamps/file sizes may cluster by type). For each:
Use this sample to decide the analysis strategy for the remaining files.
For each txt file, read and extract:
Assign primary + secondary topics. Default categories (adjust based on actual content):
For each file, capture:
When looking for content in a specific domain (finance, legal, etc.):
stock OR investment OR fund OR portfolio OR 股票 OR 投资 OR 基金, but also domain-specific terms like EPS, P/E, dividend, arbitrageNever stop at grep output — context verification is mandatory.
# Gemini History Analysis Report
**Source**: <zip filename>
**Date analyzed**: <today>
**Extraction size**: <N files, N MB>
## 1. Content Overview
- Total conversations: N
- Conversation type: [Meeting Transcripts | Prompt-Response | Mixed]
- Language distribution: X% Chinese, Y% English, Z% Mixed
- Date range: <earliest> to <latest>
- Media attachments: N images, N audio, N video
## 2. Topic Distribution
| Category | Count | % | Notes |
|----------|-------|---|-------|
| ... | | | |
## 3. Key Findings
(Bulleted, organized by significance)
## 4. Domain-Specific Analysis
(If user requested finance/legal/etc. keyword search)
- Matches found: N
- Confirmed relevant: N
- False positives: N (with examples of what caused them)
## 5. Notable Documents
Non-txt files worth attention: PDFs, spreadsheets, etc.
## 6. Valuable Quotes
Verbatim quotes that capture key insights
## 7. PII / Sensitive Content
(Flag if detected — do NOT include the actual PII in the report)
- File: <name>, Type: <resume/background-check/etc.>, Risk: <high/medium/low>
If the user wants to persist findings as project memory (like .claude/projects/<path>/memory/):
memory/MEMORY.md)user-profile.md) — if conversations reveal user's role, preferences, personalityfeedback-*.md) — if conversations reveal proven workflows, dos/don'tsproject-*.md) — if conversations reveal ongoing projects, decisions, constraintsoriginSessionId or source tag pointing back to the analysisMEMORY.md index with new entries# Remove extracted files after analysis complete (user confirms)
rm -rf <extract-dir>
unarmacOS unzip silently corrupts Chinese filenames — files become garbled paths, many fail to extract. brew install unar + unar -o <dir> <zip> handles everything correctly.
Keyword matching on "stock", "investment", "fund", "option", "portfolio", "trading" produced matches in 80%+ of files in a real analysis — every single one was a false positive. These words appear in software development contexts constantly. Always read surrounding context for every match.
Gemini Takeout txt files are NOT the original Gemini prompt-response pairs. They can be:
Resumes, background check forms, contact lists — these routinely appear in conversation history. Flag them, do NOT include their contents in reports. If creating memory files or wiki pages, ensure PII is summarized, not copied.
A 63KB transcript is a 2-hour meeting. Don't read the whole thing unless it's flagged as highly relevant. Read the first 10% + last 10% for gist; read fully only if keyword hits or topic relevance warrant it.
For 100+ files, spawn parallel sub-agents to read and summarize in batches (10-15 files each). Merge results. One agent reading all files sequentially will exhaust context.
npx claudepluginhub daymade/claude-code-skills --plugin gemini-history-analyzerParses Claude Code JSONL conversation transcripts to extract signal from user/assistant messages, filter noise entries, link subagent files, detect session boundaries, and understand storage format.
Reports on all archived conversations — projects, decisions, patterns, activity timeline — and triggers backfill for unanalyzed sessions.
Analyzes meeting transcripts to uncover communication patterns, conflict avoidance, filler words, and leadership behaviors with actionable feedback.