urlschemer is a planned CLI and Python library for working with macOS/iOS URL scheme APIs (including x-callback-url apps) in a consistent way.
Many apps expose automation through custom URL schemes, but support is fragmented and app-specific. This project aims to provide:
- One Python interface for constructing and calling scheme actions.
- One CLI for quick use and scripting.
- Optional callback handling so "get data out" is as easy as "send command in."
- Python package with provider adapters (for example Bear, CleanShot, Shortcuts, Things, Drafts).
- Shared URL encoding and callback runtime.
- CLI surface such as:
urlschemer bear create ...urlschemer detect --format jsonurlschemer call "cleanshot://capture-fullscreen?action=copy"
Current recommended order (favoring value + implementation ease + reusable x-callback patterns):
- Bear
- Drafts
- Things
- Shortcuts
- CleanShot
- Obsidian
- OmniFocus
- Ulysses
Auto-discovery is a planned feature. The detection process is documented in:
URL_SCHEME_DETECTION.md
It covers:
- Launch Services active handler scan (
lsregister -dump URLSchemeBinding) - Installed app bundle scan (
CFBundleURLTypesinInfo.plist) - System app scan for Apple-shipping schemes
- Merge/dedupe and confidence model for discovered schemes
Confirmed installed and relevant:
- Bear (
bear://) - CleanShot X (
cleanshot://) - Obsidian (
obsidian://) - Apple Shortcuts (
shortcuts://,workflow://)
Not currently installed (from target list):
- Drafts
- Things
- OmniFocus
- Ulysses
- CleanShot URL API: https://cleanshot.com/docs-api
- Bear x-callback docs: https://bear.app/faq/x-callback-url-scheme-documentation/
- Bear URL builder: https://bear.app/xurl/
- x-callback directory/spec: https://x-callback-url.com/apps/ and https://x-callback-url.com/specification/
- Repo initialized.
- Detection process document committed.
- Next practical step: implement a minimal scanner module and
detectCLI command.