Skip to content

heynag/x-bookmarks

v2026.8.10MIT

Fetch, search, and digest X/Twitter bookmarks using Bird or the optional X API v2 backend.

x-bookmarks

x-bookmarks is a local bookmark inspection package for agents. It fetches, searches, and digests saved X/Twitter posts, then turns them into useful next actions.

The skill format is portable; live fetching needs either the bird CLI with browser cookie access or X API v2 OAuth credentials.

This directory is an Agent Plugins v1 plugin root. A compatible client with Agent Skills support loads plugin.json here and discovers the skill from the standard fixed location:

skills/x-bookmarks

The plugin is independently versioned. Installation and update behavior is defined by the client loading this package.

Requirements

Preferred no-credit backend:

bird --version
bird check --plain

Optional official API backend with saved local OAuth state:

python3 skills/x-bookmarks/scripts/x_api_auth.py --status

The API fetch helper can instead use an existing OAuth user access token from X_API_ACCESS_TOKEN or X_API_BEARER_TOKEN. Do not print either variable. --include-write-scope is an option of x_api_auth.py, not a fetch-helper option, and is only for a separate workflow that changes X bookmarks.

Default local-only state lives outside this repo:

~/.config/x-bookmarks/config.json
~/.config/x-bookmarks/tokens.json
~/.local/state/x-bookmarks/state.json
~/.config/bird/

X_BOOKMARKS_CONFIG_DIR, X_BOOKMARKS_TOKEN_FILE, and X_BOOKMARKS_STATE_FILE override the x-bookmarks defaults. Keep every override outside the plugin and source checkout.

Do not commit credentials, tokens, bookmark exports, or search indexes.

Quickstart

Choose one configured backend. From the plugin root, use Bird:

skills/x-bookmarks/scripts/fetch_bookmarks_bird.sh --count 25

Or use X API v2:

python3 skills/x-bookmarks/scripts/x_api_auth.py --status
python3 skills/x-bookmarks/scripts/fetch_bookmarks_api.py --count 25 --pretty

From the skill folder, use Bird with:

cd skills/x-bookmarks
scripts/fetch_bookmarks_bird.sh --count 25

Or use X API v2 with:

cd skills/x-bookmarks
python3 scripts/x_api_auth.py --status
python3 scripts/fetch_bookmarks_api.py --count 25 --pretty

Common workflows:

scripts/fetch_bookmarks_bird.sh --count 25
python3 scripts/fetch_bookmarks_api.py --count 25 --pretty
python3 scripts/fetch_bookmarks_api.py --all --query "agents mcp" --pretty
python3 scripts/fetch_bookmarks_api.py --all --since-last --update-state --pretty
python3 scripts/fetch_bookmarks_api.py --folders --pretty

Portable package files

plugin.json                      Agent Plugins v1 manifest
LICENSE                          MIT license terms
README.md                        requirements and usage guidance
skills/x-bookmarks/SKILL.md      skill instructions
skills/x-bookmarks/references/   backend and API notes
skills/x-bookmarks/scripts/      local helper CLIs

Development

In a Charms source checkout, run the package tests from the repository root:

python3 -m unittest discover -s packages/x-bookmarks/tests -p 'test_*.py'