Daily Telegram digest of arXiv papers with working code
Every weekday morning, get the freshest arXiv papers in your categories that ship with a GitHub repo you can actually clone today, sent straight to Telegram.
Every weekday morning at 9am Eastern, send me a Telegram digest of the freshest arXiv papers that ship with working code I can actually clone and run.
Build this as an agent workflow. Trigger is cron, weekdays at 9am ET, and I should be able to change the schedule later.
Configurable inputs I want exposed when I save the workflow:
- watched_categories: arXiv subject categories to scan. Default cs.LG, cs.AI, cs.CL.
- focus_statement: a sentence or two describing what I care about reading. Default: "agent frameworks, retrieval, post-training, and evals". The agent uses this to rank papers.
- telegram_chat: where to post the digest. Default is my Saved Messages (peer "me").
- min_stars: minimum GitHub stars for the linked repo to count as alive. Default 5.
- recent_push_days: maximum days since the linked repo's last push to count as alive. Default 90.
- digest_size: how many papers to include. Default 3 to 5.
On each run, the agent should:
1. For each watched category, call arXiv's List Recent Papers in a Category to grab the last 24 to 48 hours of new submissions and updates. If I have optional keyword filters set, use arXiv's Search Papers with the keyword plus the category instead.
2. For every candidate paper, try to find an associated code repository. First scan the abstract text and the comment field for any github.com URL and parse owner/repo out of it. If at least one URL is present, prefer the one mentioned alongside words like "code", "implementation", "official", or "released", then call GitHub's Get a Repository on it. If no URL is in the metadata, fall back to GitHub's Search Repositories with the paper title (and optionally the first author's surname) as the query, take the top plausible match (good title overlap and recent activity), and call Get a Repository on that. If nothing turns up, drop the paper silently.
3. From the Get a Repository response, capture stars, last push date, and primary language. Mark the repo as alive only if stars are at least min_stars AND the last push is within recent_push_days.
4. Rank the surviving papers by: (a) fit to focus_statement, weighted highest, (b) repo liveness, (c) arXiv recency. Pick the top digest_size.
5. Post a single Telegram message to telegram_chat using Send Message. Format the body as one block per paper, separated by a blank line, with: a bold title, a one or two sentence "what's new" summary written from the abstract in plain English, a link to the arXiv abstract page, a link to the GitHub repo, and a small footer line like "⭐ {stars} · last push {humanized date} · {primary_language}".
Rules and edge cases:
- Papers without a discoverable code release are dropped silently. The whole point is "things I can clone today". Don't pad the digest with paper-only entries.
- Don't repeat papers. Remember which arXiv IDs were posted in the last 14 days and skip them on re-runs.
- Be polite to arXiv. Honor the 3 second between-requests pacing and back off on 429s.
- Keep the message under Telegram's 4096 character limit. If the formatted digest would overflow, drop the lowest-ranked paper rather than truncating mid-block.
- If zero papers survive the filters, still post a short "no runnable papers today" message so I know the workflow ran. Don't go silent on me.
This replaces my morning ritual of scrolling arXiv-sanity and Papers-With-Code looking for ML work that actually ships with code.
Additional information
What does this prompt do?
- Scans the latest arXiv submissions in the categories you care about (defaults to cs.LG, cs.AI, cs.CL) every weekday morning.
- For every promising paper, tries to find the matching GitHub repo, first from links in the abstract and then by searching GitHub by title.
- Drops papers that have no code, then ranks the survivors against your focus statement and whether the repo actually looks alive.
- Posts the top three to five picks to your Telegram as a single tidy message with title, two sentence summary, paper link, repo link, and a stars and last-updated line.
What do I need to use this?
- A Telegram account, logged in once so the digest can post to any chat you have access to (Saved Messages, a private channel, a group, anywhere).
- A GitHub login so the workflow can search repositories and read stars and last push dates without hitting public rate limits.
- A short focus statement describing what you actually care about reading (for example, agent frameworks, retrieval, post-training, evals). The agent uses it to rank papers.
How can I customize it?
- Change the schedule and timezone. Weekday at 9am is a default, not a rule. Weekends, evenings, twice a day, all fine.
- Edit the watched categories and the focus statement. cs.LG, cs.AI, cs.CL covers most ML readers, but swap in stat.ML, cs.CV, cs.CL, or anything else from the arXiv taxonomy.
- Tighten or loosen the repo liveness filter. The defaults are at least 5 stars and a push within the last 90 days. Bump both up if your feed is too noisy, drop them if you want experimental work too.
- Change where the digest lands. Point it at your Telegram Saved Messages, a private research channel, or a group you share with a coauthor.
Frequently asked questions
What happens to papers that do not have a code release?
Can I change which arXiv categories it watches?
Where does the message land in Telegram?
Will I see the same paper twice if it stays popular for a few days?
Does this need a separate AI account, like Gemini or OpenAI?
Stop scrolling arXiv for papers you can actually run.
Connect arXiv, GitHub, and Telegram once, and Geni sends you a runnable research digest every weekday morning.