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/               # список кандидатов на ленту

Краткий справочник

ИсточникШаблон адреса ленты
Релизы / коммиты / теги GitHubhttps://github.com/OWNER/REPO/releases.atom, …/commits/BRANCH.atom, …/tags.atom
Сабреддит / поиск по Reddithttps://www.reddit.com/r/NAME/.rss, https://www.reddit.com/search.rss?q=… (анонимно 1 запрос в минуту, см. reddit-reading)
Канал YouTubehttps://www.youtube.com/feeds/videos.xml?channel_id=UC…
Hacker Newshttps://hnrss.org/frontpage, https://hnrss.org/newest?q=TERM
Категория arXivhttps://rss.arxiv.org/rss/cs.CL
Substack / Medium / WordPress / GhostSITE/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/.

перевод и редактура:

обновлено

⌕ ESC