Skip to main content

Bowerbird

Like its namesake bowerbird, it collects — then, unlike you, it curates. Bowerbird audits, cleans, categorises and helps you rediscover your browser bookmarks, entirely on your own machine.

pip install bowerbird-bookmarks
bowerbird ingest  # read your browsers' bookmarks (read-only)
bowerbird check   # validate every link
bowerbird serve   # dashboard at http://127.0.0.1:8420

What it does

  • Multi-browser ingest — Chrome, Brave, Edge, Vivaldi (one Chromium parser), Firefox (places.sqlite) and Safari (read-only). Sources are facets, not silos: the same link saved in two browsers is one URL, tracked once.
  • Link validation that doesn't lie: only 404/410 (or a confirmed soft-404) counts as dead; a bot-wall 403 is blocked, not dead; reaching a login page counts as alive; YouTube videos are checked via oEmbed because deleted videos still return 200.
  • Canonicalisation and duplicate detection (tracking params stripped, youtu.be unified, per-source dupe groups with a keeper heuristic).
  • LLM thematic analysis (Claude, two-pass): a taxonomy is derived from your collection first, then bookmarks are assigned 1–3 categories with confidence. Categories are tags — one bookmark can live in many.
  • Full-text search (SQLite FTS5) over titles, URLs, topics, and the visible text of every reachable page.
  • Ask your bookmarks — ask a question, get links from your own collection grouped by theme with a line on why each is relevant. Never answers from the open web.
  • Graveyard & Wayback — dead links get Internet Archive snapshot lookup, per-row or bulk replace, and bulk retire for the unrecoverable.
  • Domain triage — review a whole domain in one decision.
  • Obsidian export — topic notes plus per-bookmark stubs with frontmatter and wikilinks; drop the folder into your vault.
  • Topic map — a force-directed graph of your collection's themes.
  • Safe write-back — regenerate the browser's bookmarks file: duplicates collapsed, dead links moved to a _Graveyard folder (never silently deleted), Wayback replacements applied. Dry-run by default, timestamped backup always, refuses to run while the browser is open.

Requirements

  • macOS (browser profile discovery is macOS-path based for now)
  • Python 3.12+
  • An Anthropic API key (ANTHROPIC_API_KEY) for the categorisation and Ask features — everything else works without one.

Data location

Everything lives in $BOWERBIRD_HOME (default ~/.bowerbird): the SQLite database, write-back backups, reports and exports. A bowerbird.db in the current directory is respected. Your browsers' own files are only ever written by the explicit bowerbird writeback --apply, and backed up first.

Commands

Command What it does
bowerbird sources detect and register installed browsers
bowerbird ingest import bookmarks + history (read-only, reconciling)
bowerbird check validate links (--recheck to re-probe)
bowerbird enrich fetch page titles/descriptions/text for search
bowerbird categorize --taxonomy / --assign two-pass LLM categorisation
bowerbird index rebuild the full-text search index
bowerbird wayback look up Internet Archive snapshots for dead links
bowerbird report write a Markdown audit report
bowerbird obsidian export an Obsidian-ready folder
bowerbird writeback --source-id N [--apply] write the cleaned tree back
bowerbird serve the dashboard (Library, Ask, Graveyard, Duplicates, Domains, Topic map)

Notes

The CLI is also installed under the short alias bower, and the Python module is import bowerbird.

Status

Beta. Built and used in anger on a 9,600-bookmark collection; APIs and schema may still change. Issues and ideas welcome.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bowerbird_bookmarks-0.6.0.tar.gz (39.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bowerbird_bookmarks-0.6.0-py3-none-any.whl (48.6 kB view details)

Uploaded Python 3

File details

Details for the file bowerbird_bookmarks-0.6.0.tar.gz.

File metadata

  • Download URL: bowerbird_bookmarks-0.6.0.tar.gz
  • Upload date:
  • Size: 39.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for bowerbird_bookmarks-0.6.0.tar.gz
Algorithm Hash digest
SHA256 443299a353357b3f8b7a08fab955ebbd8426bae789b20bc2f6237da36c2d04d7
MD5 e6b94d4d854da3c1d6d530829d8fc397
BLAKE2b-256 15dbd1a72f2fa80e8f88f7162a9ee4c1b0ab0418891bc32aee252c1bbfea4849

See more details on using hashes here.

File details

Details for the file bowerbird_bookmarks-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bowerbird_bookmarks-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8bd994244fab425dbe358828a4cc45a506e490568e1cb600c14c0f9d3830d480
MD5 7106822870f28ddc2d7049c415a8915c
BLAKE2b-256 38c636615d0a6adcc58c48c33f9d0566cfd8d9adaa3e7bc74f6a7eb632686577

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page