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 sync one-shot incremental update: ingest → check → enrich → categorise → index
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.

Metadata

Release files for bowerbird-bookmarks 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bowerbird-bookmarks 0.6.1
File Size Uploaded
bowerbird_bookmarks-0.6.1.tar.gz 39.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bowerbird-bookmarks 0.6.1
File Interpreter ABI Platform
bowerbird_bookmarks-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 88.8 kB

Release files / bowerbird_bookmarks-0.6.1.tar.gz

Download URL bowerbird_bookmarks-0.6.1.tar.gz
Size 39.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7c5ba794542eae42264be5bdefe39dd8e9659f28978399310f91a35fcd14f406
BLAKE2b-256 checksum
How to use checksums
f998a720866f863a17ce1722b6e591d24ba7730c9489e222ad371065f9e7c31a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / bowerbird_bookmarks-0.6.1-py3-none-any.whl

Download URL bowerbird_bookmarks-0.6.1-py3-none-any.whl
Size 48.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f6b359184d4041654aa45030cf11fee15700e7f117c630cd1d7e2c044bd98efe
BLAKE2b-256 checksum
How to use checksums
c3aa5544b5511fb8d0b8b4f8ce217bab2d727326292ac5e31a28a37f9067059b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page