| name | browsing-history |
| description | Query browsing history from all synced devices (iPhone, Mac, iPad, desktop). Supports natural language queries for filtering by date, device, domain, and keywords. Uses LLM classification for content categories. Can output to stdout or save as markdown/JSON to Obsidian vault. |
Browsing History Skill
Query browsing history from all synced devices with natural language.
When to Use
Use this skill when the user asks about:
- Articles/pages they read (yesterday, last week, etc.)
- Browsing history from specific devices (iPhone, iPad, desktop)
- Finding pages by topic, domain, or keyword
- Exporting browsing history to files
- Grouping history by category or domain
Database
Location: ~/data/browsing.db
Synced devices: iPhone, iPad, Mac, desktop, Android
Timestamps
- visit_time: Actual visit timestamp from Chrome (100% coverage for all devices)
- first_seen: Import timestamp (fallback when visit_time unavailable)
The skill uses COALESCE(visit_time, first_seen) for accurate time-based queries.
Usage
python3 ~/.claude/skills/browsing-history/browsing_query.py "<query>" [options]
Options
| Option | Description | Example |
|---|---|---|
--device |
Filter by device | --device iPhone |
--days |
Number of days back | --days 7 |
--domain |
Filter by domain | --domain medium.com |
--limit |
Max results | --limit 50 |
--format |
Output format | --format json |
--output |
Save to file | --output history.md |
--group-by |
Group results | --group-by domain or --group-by category |
--categorize |
Use LLM to categorize | --categorize |
Example Queries
Basic queries:
# Yesterday's browsing history
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday"
# Articles from iPhone yesterday
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday" --device iPhone
# Last week's history grouped by domain
python3 ~/.claude/skills/browsing-history/browsing_query.py "last week" --group-by domain
# Find articles about economics
python3 ~/.claude/skills/browsing-history/browsing_query.py "economics" --days 7
Save to Obsidian:
# Save yesterday's history as markdown
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday" \
--output ~/Research/vault/browsing-2025-11-27.md
# Save with LLM categorization
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday" \
--categorize --group-by category \
--output ~/Research/vault/browsing-categorized.md
# Save as JSON
python3 ~/.claude/skills/browsing-history/browsing_query.py "last week" \
--format json --output ~/Research/vault/history.json
Device-specific:
# iPhone tabs
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday" --device iPhone
# Desktop history
python3 ~/.claude/skills/browsing-history/browsing_query.py "today" --device desktop
# All mobile devices
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday" --device mobile
Search and filter:
# Sites starting with "joy"
python3 ~/.claude/skills/browsing-history/browsing_query.py "joy" --days 7
# Medium.com articles
python3 ~/.claude/skills/browsing-history/browsing_query.py "last month" --domain medium.com
Natural Language Patterns
The script recognizes:
| Pattern | Interpretation |
|---|---|
yesterday |
Previous day |
today |
Current day |
last week |
Past 7 days |
last month |
Past 30 days |
last N days |
Past N days |
Keywords are searched in URL and title.
Output Formats
Markdown (default)
# Browsing History: yesterday
*47 unique URLs from 2025-11-27*
## 2025-11-27
- [Article Title](https://example.com/article) - iPhone - 14:32
- [Another Page](https://another.com/page) - desktop - 16:45
Markdown with categories (--categorize --group-by category)
# Browsing History: yesterday
## News & Current Events
- [Breaking: Something Happened](https://news.com/...) - iPhone
## Technology & Programming
- [How to Build APIs](https://dev.to/...) - desktop
## Research & Learning
- [Academic Paper on AI](https://arxiv.org/...) - Mac
JSON (--format json)
{
"query": "yesterday",
"date_range": "2025-11-27",
"total": 47,
"results": [
{"url": "...", "title": "...", "device": "iPhone", "time": "14:32", "category": "News"}
]
}
Workflow Examples
User: "Show me articles I read yesterday on my phone"
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday" --device iPhone
User: "Save my browsing history from last week to Obsidian, grouped by category"
python3 ~/.claude/skills/browsing-history/browsing_query.py "last week" \
--categorize --group-by category \
--output ~/Research/vault/browsing-week.md
User: "Help me find that article about economics I read on my computer"
python3 ~/.claude/skills/browsing-history/browsing_query.py "economics" \
--device desktop --days 7
User: "Sites that start with 'joy' from last week"
python3 ~/.claude/skills/browsing-history/browsing_query.py "joy" --days 7
Notes
- URLs are deduplicated per day (same URL on same day = one entry)
- visit_time: Actual visit timestamps from Chrome history
- Desktop: 100% coverage (from Chrome SQLite
last_visit_time) - Mobile: 100% coverage (extracted from Chrome Sync LevelDB)
- Desktop: 100% coverage (from Chrome SQLite
- first_seen: Fallback import timestamp (~15min resolution)
- LLM categorization uses Claude 3.5 Haiku via
llmCLI