Analyze Google Takeout exports of Gemini conversation history. Use when the user mentions Gemini takeout, Gemini export, Gemini history, Gemini conversation analysis, Google Takeout zip analysis, or drags a takeout zip into the project. Also use when the user asks to "analyze my Gemini data", "what did I talk to Gemini about", or wants to extract insights from Gemini chat logs.
npx skills add https://github.com/daymade/claude-code-skills --skill gemini-history-analyzer
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:
Read the first ~100 lines of each file before assuming its nature.
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.
Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.
Prepare meeting materials with Notion context and Codex research; use when gathering context, drafting agendas/pre-reads, and tailoring materials to attendees.
Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.
Take daymade/gemini-history-analyzer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference brew.
Without those the skill loads but fails at the first command.