mcpField
B
browser-history

browser-history

github.com/samhvw8Productivity1548 installsUpdated today
Repository

About browser-history

A skill for searching browser history and analyzing visits in Firefox or Chromium. It uses SQLite queries to find pages, browsing dates, frequent sites, and available time-spent data.

Key features

  1. 01Detect recently used browsers
  2. 02Search history by keyword or date
  3. 03Analyze visits and time spent
  4. 04Summarize frequent sites

Use cases

  1. 01Find a page visited earlier
  2. 02Review browsing activity for a date range
  3. 03Check time spent on a site
  4. 04Identify frequently visited domains

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/samhvw8/dotfiles --skill browser-history

After installing, type/browser-historyin Claude Code to confirm it loaded.

Bundled filesexecutable_find-browser.sh

Details

From the project README

Browser History Search

Search the user's browser history to find visited pages, analyze browsing patterns, and retrieve forgotten information.

When to use

  • User asks about pages they visited ("what github repos did I look at last week?")
  • User wants to find a forgotten page ("find that article about LLMs I read")
  • User asks about browsing habits ("how much time did I spend on Twitter?")
  • User wants browsing statistics ("show my most visited sites")

Requirements

  • sqlite3 CLI

Setup

First, detect available browsers by running:

./find-browser.sh
  • Output: PATH,TYPE,BROWSER,LAST_MODIFIED
  • TYPE: firefox or chromium (determines SQL syntax)
  • Use the first result (most recently used browser) by default
  • If multiple browsers were used recently (within last 24h), ask the user which one to search

Querying the database

Use ?immutable=1 in the SQLite URI to read the database even when the browser is open:

sqlite3 "file:///path/to/history.db?immutable=1" "SELECT ..."
Firefox databases (places.sqlite)

Search by keyword:

SELECT
    title,
    url,
    datetime(last_visit_date/1000000, 'unixepoch', 'localtime') as visit_date
FROM moz_places
WHERE url LIKE '%keyword%' OR title LIKE '%keyword%'
ORDER BY last_visit_date DESC
LIMIT 50;

Search by date range:

SELECT url, title, datetime(last_visit_date/1000000, 'unixepoch', 'localtime') as visit_date
FROM moz_places
WHERE last_visit_date > strftime('%s', '2025-01-01') * 1000000
  AND last_visit_date < strftime('%s', '2025-01-31') * 1000000
ORDER BY last_visit_date DESC;

Time spent analysis (uses moz_places_metadata):

SELECT
    SUM(m.total_view_time) / 1000 / 60 as minutes,
    COUNT(*) as sessions
FROM moz_places_metadata m
JOIN moz_places p ON m.place_id = p.id
WHERE p.url LIKE '%example.com%'
  AND m.created_at > strftime('%s', '2025-01-01') * 1000;

Note: created_at is in milliseconds, last_visit_date is in microseconds.

Most visited sites:

SELECT
    SUBSTR(url, INSTR(url, '://') + 3,
           INSTR(SUBSTR(url, INSTR(url, '://') + 3), '/') - 1) as domain,
    SUM(visit_count) as visits
FROM moz_places
WHERE url LIKE 'http%'
GROUP BY domain
ORDER BY visits DESC
LIMIT 20;
Chromium databases (History)

Important: Chromium timestamps are microseconds since January 1, 1601 (Windows epoch).

Conversion: (timestamp/1000000) - 11644473600 gives Unix epoch.

Search by keyword:

SELECT
    title,
    url,
    datetime((last_visit_time/1000000)-11644473600, 'unixepoch', 'localtime') as visit_date
FROM urls
WHERE url LIKE '%keyword%' OR title LIKE '%keyword%'
ORDER BY last_visit_time DESC
LIMIT 50;

Search by date range:

SELECT url, title, datetime((last_visit_time/1000000)-11644473600, 'unixepoch', 'localtime') as visit_date
FROM urls
WHERE last_visit_time > (strftime('%s', '2025-01-01') + 11644473600) * 1000000
  AND last_visit_time < (strftime('%s', '2025-01-31') + 11644473600) * 1000000
ORDER BY last_visit_time DESC;

Database schema

Firefox (moz_places)
ColumnDescription
urlFull URL
titlePage title
last_visit_dateMicroseconds since Unix epoch
visit_countNumber of visits
frecencyFrequency + recency score
Firefox (moz_places_metadata)
ColumnDescription
place_idForeign key to moz_places
total_view_timeMilliseconds spent on page
created_atMilliseconds since Unix epoch
scrolling_timeTime spent scrolling
key_pressesNumber of key presses
Chromium (urls)
ColumnDescription
urlFull URL
titlePage title
last_visit_timeMicroseconds since 1601-01-01
visit_countNumber of visits

Output guidelines

  • Present results in a readable format, grouped by domain when relevant
  • For time analysis, show hours/minutes, not raw milliseconds
  • When showing history, include the date and a clickable link
  • If results are numerous, summarize by domain or time period
  • You might include a small ASCII/Unicode chart (daily breakdown, histogram) if relevant

See @README.md for output examples.

Comments

Markdown supported