June 3, 2026 · 7 min
Drop URLs to your agent, get a private reading list
Read-later apps have a problem I’ve never solved with mine: I read the article once, save the highlights, and then never see them again. Six months later I half-remember something I read but can’t find it, and the index of saved articles is too big to skim.
I tried doing something about it on my Hermes box. The recipe ended up smaller than I expected. Two paste-able workflows, one Telegram bot, and a memory file. No third party service, no monthly fee, no quota.
The shape of it
Three behaviours:
- Send the agent a URL in Telegram. It fetches the page, writes a structured summary, files it under
reading-list/in memory, and replies with a confirmation and one-paragraph TL;DR. - Ask the agent something later (“what was that piece about Hetzner pricing I read last week?”) and it searches the reading list, finds the article, and answers from your own notes.
- On Sundays, a cron fires and the agent writes a one-page digest of what you actually read that week, sorted by theme. Drops it in Telegram.
The skill
Hermes skills are markdown files the agent reads before it decides what to do. Create one under ~/.hermes/skills/reading-list.md (you can do this from the SKILLS tab in the dashboard or by pasting into CHAT):
---
name: reading-list
description: |
Use when the user sends a URL in chat with no
other instructions, or asks to summarise a
link. Save reading-list entries to memory.
triggers:
- url-only message
- "save this", "summarise this"
---
# Reading list workflow
When the user sends a URL with no other context:
1. Fetch the page (web.read). If the page is paywalled
or JS-rendered, fall back to the archive.org snapshot.
2. Extract: title, author, source, publish date, main
thesis (one sentence), 3-5 key claims with brief
support, any quoted numbers worth remembering.
3. Write the result as memory entry under
reading-list/<yyyy-mm>-<slug>.md using the template
below. Slug = first 5 words of the title, lowercased,
hyphen-separated.
4. Reply in chat with:
- URL + title (linked)
- One-paragraph TL;DR
- Confirmation that it's saved.
5. Don't ask the user clarifying questions for this
workflow. Just do it.
## Memory template
\`\`\`md
---
url: <url>
title: <title>
source: <domain>
author: <author or 'unknown'>
published: <yyyy-mm-dd or 'unknown'>
saved: <yyyy-mm-dd>
tags: [tag1, tag2]
---
## TL;DR
<one paragraph>
## Key claims
- <claim with brief support>
- ...
## Numbers worth remembering
- <stat>: <value> (context)
\`\`\`
## Retrieval
When the user asks about something they "read about",
search memory under reading-list/ for matching tags
and key claims. Quote the URL so they can find the
source if they want it.
Save the skill. The agent picks it up on the next message; no restart needed.
The first test
Open Telegram, send your bot a URL. Anything; a blog post you actually wanted to read. The agent should reply within ten seconds with the TL;DR and a confirmation. Then ask it something like “what did I just save?” and it should quote back the entry it just made.
If it didn’t do that, two common causes: the URL requires JS rendering (the archive.org fallback in the skill handles most cases), or the page is image-heavy and your model context wasn’t big enough. The first is usually handled by adding --js to the web read, the second by bumping to a bigger model just for this skill.
The Sunday digest
One cron, same shape as the inbox or calendar briefs. Schedule: 0 10 * * 0 (Sundays at 10am). Prompt:
Read every memory entry under reading-list/ created
in the last 7 days. Group by theme (no more than 5
themes; if there's no clear theme, group by source).
For each theme, write two sentences max.
End with one paragraph: what's the most surprising
thing I read this week? Anchor it to a specific
claim from a specific entry.
Send to Telegram. Under 1500 chars.Why this is better than a read-later app
Three things, in increasing order of how much I care:
Retrieval works. Most read-later apps let you search the text of saved articles. None of them let you ask “what was that piece arguing Postgres beats DynamoDB for write-heavy workloads” and get back the specific article. Hermes does because the agent reads your notes the way you would.
The notes are yours. They’re markdown files in ~/.hermes/memories on your box. If you ever leave meraGPT, you take them. /backup zips the lot.
It composes. Once the reading list is in memory, every other Hermes workflow can use it. The inbox brief can quote relevant things you read. The calendar prep can pull up a piece you saved about the person you’re meeting. Read-later apps live in their own silo; this doesn’t.
What it costs
On deepseek-v4-flash, each save costs a fraction of a cent (the page extract is the long part, the structured output is short). The Sunday digest is maybe three cents depending on how much you read. The retrieval queries are negligible.
Related
- A morning calendar brief, before your inbox
- A morning Hacker News brief on a cron
- Add a Kanban board to your Hermes box in one paste — another single-paste skill recipe.