safari-py

  • python
  • macos
  • cli

<github.com/nelsonlove/safari-py>

Safari keeps its bookmarks and reading list in a binary plist with no public API, which makes them invisible to scripts, backups, and any workflow that isn't clicking. safari-py opens that up: a Python library and a safari CLI that read, search, add, remove, and move bookmarks and reading-list items, manage folders, and export the reading list to org-mode, JSON, or plain text.

It's built for automation. Every command takes --json for structured output, every write operation supports --dry-run, and there's a one-shot backup before anything destructive. That combination makes it safe to hand to a script or an agent: I use it to let Claude Code triage my reading list, which is exactly the kind of small, well-fenced capability that makes agent workflows trustworthy.

Installable with pip install safari-py (or pipx), tested, and read-only unless you ask it not to be.