Rss Feeds
Чтение лент RSS, Atom и JSON; поиск ленты, стоящей за обычной страницей.
Метаданные навыка
| Источник | Опциональный — устанавливается командой hermes skills install official/research/rss-feeds |
| Путь | optional-skills/research/rss-feeds |
| Версия | 1.0.0 |
| Автор | Teknium (teknium1), Hermes Agent |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | RSS, Atom, Feeds, Monitoring, Research, Blogs, Releases |
| Связанные навыки | reddit-reading, competitor-news-monitor, grounded-citations, youtube-content, blogwatcher |
Справочник: полный SKILL.md
Далее приведено полное определение навыка, которое Hermes загружает при его активации. Это те самые инструкции, которые агент видит, когда навык включён.
RSS Feeds Skill
Навык читает любой адрес ленты RSS 2.0, RSS 1.0/RDF, Atom или JSON Feed и превращает его в аккуратный список записей, отсортированный по дате. Умеет находить ленту за обычной страницей — по <link rel="alternate"> либо по привычным путям /feed, /rss.xml, /atom.xml. Работает на одной стандартной библиотеке, ставить ничего не нужно. Полные тексты статей навык не тянет: для этого передайте ссылку записи в web_extract.
Когда использовать
- «Что нового на <блоге/сайте>», «последние релизы <репозитория GitHub>», «свежие посты в <сабреддите>», «прочитай эту ленту», «есть ли у сайта RSS».
- Регулярный дайджест на
cronjob_manage: ленты дешевле и стабильнее, чем скрейпить HTML главной при каждом запуске. Если нужна постоянная база прочитанного и непрочитанного по множеству лент, поставьте опциональный навыкblogwatcher; этот же — чтение без установки чего-либо. - Любой случай, когда структурный список
заголовок / ссылка / дата / автор / краткое описаниеудобнее отрисованной страницы: подкасты, changelog, каналы YouTube, ньюсрумы, разделы форумов.
Предварительные требования
Никаких. Python 3.10+ и сетевой доступ к хосту ленты.
Как запускать
Через terminal, указывая путь к скрипту относительно навыка:
python3 scripts/feed.py read https://hnrss.org/frontpage --limit 10
python3 scripts/feed.py read https://simonwillison.net/ # адрес страницы → лента находится сама
python3 scripts/feed.py read URL --since 2026-09-01 --json # только свежие записи, машиночитаемо
python3 scripts/feed.py discover https://example.com/ # список кандидатов на ленту
Краткий справочник
| Источник | Шаблон адреса ленты |
|---|---|
| Релизы / коммиты / теги GitHub | https://github.com/OWNER/REPO/releases.atom, …/commits/BRANCH.atom, …/tags.atom |
| Сабреддит / поиск по Reddit | https://www.reddit.com/r/NAME/.rss, https://www.reddit.com/search.rss?q=… (анонимно 1 запрос в минуту, см. reddit-reading) |
| Канал YouTube | https://www.youtube.com/feeds/videos.xml?channel_id=UC… |
| Hacker News | https://hnrss.org/frontpage, https://hnrss.org/newest?q=TERM |
| Категория arXiv | https://rss.arxiv.org/rss/cs.CL |
| Substack / Medium / WordPress / Ghost | SITE/feed, medium.com/feed/@user, SITE/rss/ |
| Подкасты | адрес RSS шоу со страницы его хостинга (находится через discover) |
Поля вывода для каждой записи: title, link, published (UTC, ISO 8601), author, summary (HTML вырезан, не длиннее 2000 символов). Записи идут от свежих к старым.
Процедура
① Если на руках только адрес сайта, запускайте read прямо по нему: скрипт сам найдёт ленту и сообщит, каким адресом воспользовался (discovered_from). Команда discover нужна, когда лент несколько и надо выбрать — лента комментариев против ленты постов, ленты по категориям.
② Ограничьте запрос: --limit для «последних N», --since ГГГГ-ММ-ДД для «с прошлой проверки». Для cron-дайджеста сохраняйте последнее значение published и передавайте его в --since при следующем запуске.
③ За полным текстом отправляйте link записи в web_extract: краткие описания в лентах часто обрезаны или содержат один первый абзац.
④ Когда результат идёт в отчёт (grounded-citations), цитируйте link записи, а не адрес ленты.
Подводные камни
- Ответ 200 с HTML означает, что перед вами страница, а не лента. Скрипт в этом случае сам переходит к поиску, но сайт без
<link rel="alternate">и без привычных путей вернётno feed found— прежде чем решить, что ленты нет, загляните в подвал сайта и в/sitemap.xml. - Ленты Reddit подчиняются общему анонимному лимиту Reddit: примерно один запрос в минуту с адреса. Когда нужно больше одного обращения к Reddit, пускайте их через
reddit-reading— он выжидает окно. - Даты: в RSS
pubDateзаписан в формате RFC 822, в Atom — ISO 8601; скрипт приводит оба к UTC. Ленты без дат оказываются в конце списка и отбрасываются фильтром--since. - Часть лент закрыта Cloudflare и отвечает 403 всем небраузерным клиентам — этот класс случаев разбирает
blocked-page-recovery.
Проверка
Команда python3 scripts/feed.py read https://github.com/NousResearch/hermes-agent/releases.atom --limit 1 печатает одну запись со ссылкой вида releases/tag/ и пометкой формата [atom]; discover https://simonwillison.net/ печатает адрес /atom/.