Saving links
To save a link, just send a URL to the bot — from the Telegram share sheet on your phone, or by pasting into the chat on desktop. You get a reply with the title, an AI-written summary, and tags — plus tap buttons (☆ Star · 🌐 Share · 📖 Reading · ✅ Read) so you can organize it on the spot without typing its id.
Adding a note
Section titled “Adding a note”Type anything before or after the URL and it’s stored as your personal note, separate from the auto-generated summary:
https://github.com/tokio-rs/tokio want to try for the async runtimeThe URL is extracted (trailing punctuation trimmed), and the rest becomes the note, shown under 📝 in the reply.
What enrichment does
Section titled “What enrichment does”The bot detects the link type and enriches accordingly:
| Link type | Source | What it pulls |
|-----------|--------|---------------|
| GitHub repo | GitHub API | Full name, description, language, topics, stars, license, README |
| YouTube | oEmbed API | Video title + channel (YouTube blocks page scraping from the server) |
| Anything else | OpenGraph / HTML scrape | og:title / <title>, og:description, and the article body |
The bot reads the link’s actual content — the article body (for web pages) and the README (for GitHub repos) — not just the page’s metadata. That content is handed to a Cloudflare-hosted Gemma model, which writes a 1–2 sentence summary, a few lowercase tags, a category (article/video/repo/tool/…), a few key points, and a longer details synopsis (what it contains and what you’d take away). If the model is unavailable, the bot falls back to the scraped description and (for GitHub) the repo topics — the link still saves.
The details synopsis shows in the dashboard and gives
/ask and semantic search richer material
to work with.
If a link’s enrichment ever comes out poor — or you’ve improved the enrichment since —
/refresh <id> re-fetches the content, re-summarizes, re-indexes, and re-embeds that link.
Some metadata is also captured automatically without the model: the domain, OpenGraph image / site name / author / published date for web pages, and stars / language / license for GitHub repos. Stars and language show on the result card; the rest is stored for filtering and a future web view.
Tags are stored space-delimited, and each tag is normalized to a single token —
internal spaces become hyphens (so api gateway is saved as #api-gateway,
not split into two broken chips). Tags feed search.
Duplicates
Section titled “Duplicates”URLs are unique. If you send a link you’ve already saved, the bot replies ⚠️ Already in your library and nothing is added — your original note and tags are kept untouched.
What’s stored
Section titled “What’s stored”Each saved link is one row: the URL, title, summary, tags, your note, the kind
(github or web), a timestamp, the captured metadata above, and workflow
fields you set later (see Organizing). See
Where your data lives for the full schema.