glebis avatar

browsing-history

Query browsing history from all synced devices (iPhone, Mac, iPad, desktop). Supports natural langua

by glebis|Open Source

Browsing History Skill

Query browsing history from all synced Chrome devices (iPhone, iPad, Mac, desktop) with natural language.

How It Differs from chrome-history

Featurechrome-historybrowsing-history
Data sourceLocal Chrome SQLiteSynced database (~/data/browsing.db)
DevicesDesktop onlyAll synced devices (iPhone, iPad, Mac, etc.)
TimestampsChrome visit timeActual visit time with fallback
CategorizationDomain-based clustersLLM-powered classification
Output formatsMarkdown onlyMarkdown + JSON
Save to fileNoYes

Prerequisites

1. Initialize Database

python3 ~/.claude/skills/browsing-history/scripts/init_db.py

2. Sync Chrome History

For local desktop history:

python3 ~/.claude/skills/browsing-history/scripts/sync_chrome_history.py

For synced devices (iPhone, iPad, etc.), you need a separate sync process that:

  1. Parses Chrome Sync LevelDB data
  2. Extracts URLs with device info and timestamps
  3. Inserts into ~/data/browsing.db

See AnyBrowserHistory for Chrome Sync parsing reference.

3. (Optional) LLM Categorization

Install llm CLI for smart categorization:

pip install llm llm-anthropic
llm keys set anthropic  # Enter your API key

Usage

Basic Queries

# Yesterday's history
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday"

# Last week from iPhone
python3 ~/.claude/skills/browsing-history/browsing_query.py "last week" --device iPhone

# Search for AI articles
python3 ~/.claude/skills/browsing-history/browsing_query.py "AI" --days 7

Grouping

# Group by domain
python3 ~/.claude/skills/browsing-history/browsing_query.py "today" --group-by domain

# Group by LLM-classified category
python3 ~/.claude/skills/browsing-history/browsing_query.py "today" --categorize --group-by category

Save to File

# Save as markdown to Obsidian vault
python3 ~/.claude/skills/browsing-history/browsing_query.py "yesterday" \
  --output ~/Research/vault/browsing-history.md

# Save as JSON
python3 ~/.claude/skills/browsing-history/browsing_query.py "last week" \
  --format json --output history.json

Options

OptionDescription
--deviceFilter: iPhone, iPad, Mac, desktop, mobile
--daysNumber of days back
--domainFilter by domain (partial match)
--limitMax results (default: 200)
--formatOutput: markdown (default) or json
--outputSave to file
--group-byGroup by: domain, category, or date
--categorizeUse LLM for smart categorization

Database Schema

CREATE TABLE browsing_history (
    id INTEGER PRIMARY KEY,
    url TEXT NOT NULL,
    title TEXT,
    device_type TEXT,        -- iPhone, iPad, Mac, desktop, etc.
    device_id TEXT,
    source_machine TEXT,
    first_seen TIMESTAMP,    -- When imported
    source TEXT,             -- chrome_sync or chrome_desktop
    domain TEXT,
    visit_time TIMESTAMP,    -- Actual visit time
    UNIQUE(url, device_id)
);

Example Queries

User RequestCommand
"Articles I read yesterday"browsing_query.py "yesterday"
"iPhone tabs from last week"browsing_query.py "last week" --device iPhone
"Find economics articles"browsing_query.py "economics" --days 7
"Group by category"browsing_query.py "today" --categorize --group-by category
"Save to Obsidian"browsing_query.py "yesterday" --output ~/vault/history.md