A bot that feeds me information!
Find a file
2026-02-17 20:33:28 +01:00
src Add /sync_x command with X bookmarks import flow 2026-02-17 20:33:28 +01:00
vendor/extract-x-bookmarks Add /sync_x command with X bookmarks import flow 2026-02-17 20:33:28 +01:00
.gitignore Add /sync_x command with X bookmarks import flow 2026-02-17 20:33:28 +01:00
AGENTS.md Add regression tests and update guidelines 2026-02-03 23:15:24 +01:00
Cargo.lock Add /sync git push command 2026-02-04 12:41:55 +01:00
Cargo.toml Add /sync git push command 2026-02-04 12:41:55 +01:00
flake.lock fix openssl error 2026-02-02 10:22:55 +01:00
flake.nix flake: add Garnix public key to nixConfig 2026-02-17 17:10:04 +01:00
README.md Add /sync_x command with X bookmarks import flow 2026-02-17 20:33:28 +01:00
SPEC.md add resources flow and secure config 2026-02-03 09:05:29 +01:00

Read Later Bot

Configuration

The bot reads a TOML config passed via --config. Most values are standard TOML types. The user_id field accepts multiple forms so it can be sourced from secrets managers.

user_id

You can provide the Telegram user ID as:

  • A number
  • A numeric string
  • A file path containing the numeric ID (useful for age/sops)
  • An explicit file object

Examples:

user_id = 123456789
user_id = "123456789"
user_id = "/run/agenix/readlater-user-id"
user_id = { file = "/run/agenix/readlater-user-id" }

sync_x

/sync_x imports X/Twitter bookmarks into Read Later.

  • The bot prompts for the Cloudflare cookie header string (auth_token + ct0).
  • It runs isolate_cookies.py, then main.py --mode a.
  • Extracted URLs are prepended to Read Later.
  • Temporary creds.txt / bookmarks.txt files are removed after import.

Config example:

[sync_x]
source_project_path = "/Users/thegeneralist/personal/bookkeeper/vendor/extract-x-bookmarks"
work_dir = "/var/lib/readlater-bot/sync-x"
python_bin = "/Users/thegeneralist/personal/extract-x-bookmarks/.venv/bin/python"