Twitter Bookmark Sync
Automatically ranks your Twitter bookmarks daily and delivers a curated reading list.
The problem: You bookmark tweets but never read them. They pile up and important content gets lost in the noise.
This tool: Self-learning bookmark curator that adapts to your interests, ranks by personal value, and delivers your best reads every morning.
β‘ What It Does
Your bookmarks get smarter over time.
The tool:
- Learns what you care about from your bookmarking patterns
- Adapts ranking weights based on what you actually save
- Decays old interests automatically (unless reinforced)
- Delivers personalized value statements every morning
The more you bookmark, the better it gets at knowing what matters to you.
Zero manual work needed.
π οΈ Getting Ready
Before installing this skill:
You'll need:
- macOS 10.15 (Catalina) or later
- Twitter account with bookmarks
- Homebrew for installing dependencies
Install through Homebrew:
# Install bird CLI
brew install steipete/tap/bird
# Install jq
brew install jq
Set up Twitter authentication:
-
Open browser β https://x.com (logged in)
-
DevTools (Cmd+Option+I) β Application β Cookies β https://x.com
-
Copy these values:
auth_tokenct0
-
Save to config:
mkdir -p ~/.config/bird
cat > ~/.config/bird/config.json5 << 'EOF'
{
authToken: "your_auth_token_here",
ct0: "your_ct0_here"
}
EOF
- Test:
bird whoami
π Installation
skills install twitter-bookmark-sync
cd ~/bot/skills/twitter-bookmark-sync
./install.sh
The installer will:
- Verify dependencies
- Create your config file
- Guide you through cron setup
- Run a test sync
π§ How It Works
Result: A self-learning curator that gets smarter with every bookmark.
The schedule:
Midnight (00:00) - Learning & Ranking:
- Fetches bookmarks from last 24 hours
- Categorizes each by topic and value type
- Updates ranking algorithm:
- Applies time decay (5% per day) to old interests
- Reinforces categories you're actively bookmarking
- Discovers new interest patterns automatically
- Normalizes weights to maintain balance
- Ranks new bookmarks using evolved criteria
- Saves to
~/Documents/twitter-reading-YYYY-MM-DD.md
Morning (08:00) - Notification:
- Analyzes why each bookmark matters to YOU specifically
- Sends value-focused statements (not content summaries)
- Links to full reading list
Self-Learning Algorithm:
Initial state (from USER.md):
- London transition: weight 100
- Crypto insights: weight 100
- Career growth: weight 95
- Investment strategy: weight 90
- ... (11 categories total)
After 30 days (example evolution):
- If you bookmark lots of crypto β crypto weight stays high (100)
- If you stop bookmarking relationships β weight decays (90 β 85 β 81...)
- If you bookmark AI tools daily β new category emerges ("discovered_ai_tools": 65)
Decay mechanics:
- 5% weight reduction per day for unused categories
- When you bookmark a category again β decay resets
- Floor: minimum weight of 10 (never disappears completely)
Configuration:
{
"fetch_time": "00:00", // When to learn & rank
"notification_time": "08:00", // When to notify
"lookback_hours": 24, // How far back to check
"notification_channel": "telegram" // Where to send
}
Ranking criteria stored in: ~/bot/twitter-bookmark-sync-criteria.json
(Evolves automatically β you don't edit this manually)
π Additional Information
Everything below is optional. The skill works out-of-the-box with defaults.
This section contains:
- Advanced configuration
- Notification channel setup
- Manual usage
- Troubleshooting
You don't need to read this for initial installation.
Advanced Configuration
Edit ~/bot/twitter-bookmark-sync-config.json:
Change timing:
{
"fetch_time": "23:00", // 11pm instead of midnight
"notification_time": "07:00" // 7am instead of 8am
}
Change lookback window:
{
"lookback_hours": 24 // Check last 24 hours instead of 16
}
Customize interests:
{
"keywords_high": [
"your", "specific", "interests"
],
"keywords_medium": [
"secondary", "topics"
]
}
Notification Channels
Telegram (default):
{
"notification_channel": "telegram"
}
Results sent to your Telegram chat.
Gmail (via gog skill):
{
"notification_channel": "gmail",
"gmail_to": "[email protected]"
}
Requires gog skill installed and configured.
Slack:
{
"notification_channel": "slack",
"slack_channel": "#bookmarks"
}
Results sent to specified Slack channel.
Manual Usage
Run sync immediately:
cd ~/bot/skills/twitter-bookmark-sync
./scripts/sync.sh
Send notification now:
./scripts/notify.sh
Check logs:
tail -f ~/bot/logs/twitter-bookmark-sync.log
Troubleshooting
"No bookmarks found"
Check bird authentication:
bird whoami
Verify you have bookmarks:
bird bookmarks -n 5
"Permission denied"
Make scripts executable:
chmod +x ~/bot/skills/twitter-bookmark-sync/scripts/*.sh
chmod +x ~/bot/skills/twitter-bookmark-sync/scripts/*.py
"Twitter cookies expired"
Re-extract cookies from browser and update ~/.config/bird/config.json5
"Notification not sent"
Check Bot status:
bot status
Verify notification channel in config.
License
MIT