← Back to blog

Создание автоматизаций с помощью API SereneReader

Зачем автоматизировать чтение?

RSS уже собирает контент из множества источников в одном месте. API SereneReader позволяет получать этот контент в скриптах, заданиях cron и других инструментах.

Для аутентификации нужен единственный API-ключ: создайте его, передавайте с каждым HTTP-запросом — и в ответ получите JSON. API работает только на чтение и не поддерживает вебхуки, поэтому скрипты опрашивают его по расписанию.

Начало работы

Доступ к API включён в тарифы Pro ($5 в месяц на сайте) и Team.

Создание API-ключа

В SereneReader откройте Настройки и перейдите на вкладку API. Создайте ключ, дайте ему понятное название и скопируйте в надёжное место — он отображается только один раз. Аккаунты Pro могут иметь до 5 ключей, аккаунты Team — до 10.

Аутентификация

Каждый запрос должен содержать ключ в виде токена Bearer в заголовке Authorization. Никаких идентификаторов клиента, токенов обновления или областей доступа не требуется. На вкладке API в Настройках указаны базовый URL, доступные эндпоинты и примеры запросов.

Ограничения по частоте запросов

API допускает 30 запросов в минуту на аккаунт, распределённых между всеми вашими ключами — этого более чем достаточно для скриптов, работающих по расписанию. Каждый ответ содержит заголовок X-RateLimit-Remaining. Если лимит превышен, API возвращает 429 с заголовком Retry-After — подождите указанное количество секунд перед следующей попыткой.

Что можно делать

API предоставляет доступ на чтение к вашим статьям и подпискам:

  • GET /api/v1/articles возвращает статьи из ваших лент, начиная с самых новых. Можно фильтровать по ленте, папке или дате публикации, а также постранично листать результаты (по умолчанию 50 на запрос, максимум 200). Каждая статья содержит заголовок, URL, название ленты, автора, дату публикации, фрагмент текста, а также информацию о том, прочитана ли она и добавлена ли в избранное.
  • GET /api/v1/feeds возвращает список ваших подписок с количеством непрочитанных и папками.
  • GET /api/v1/usage показывает, сколько запросов совершил текущий ключ за последний час, 8 часов и 24 часа.

На вкладке API в Настройках приведён полный список параметров и полей ответа.

Примеры использования

Ежедневный дайджест по электронной почте

Напишите скрипт, который запускается каждое утро в 7:00, получает статьи за предыдущий день и отправляет вам сводное письмо. Отфильтруйте по дате, пропустите JSON через jq, чтобы извлечь заголовки и URL, и отправьте результат любым удобным инструментом для рассылки или уведомлений.

Проверка «тихих» лент

Ленты ломаются: домены истекают, пути меняются, серверы падают. API не сообщает об ошибках при получении ленты или о том, когда она последний раз публиковала материалы, — но еженедельный скрипт всё равно поможет выявить замолчавшие ленты. Получите список лент, запросите свежие статьи для каждой с параметрами feedId и since и отметьте те, у которых ничего не публиковалось за последние несколько недель. Если лент много, распределите запросы во времени, чтобы не превысить лимит.

«Тихая» лента — не всегда сломанная, но такой список подскажет, какие блоги стоит проверить.

Экспорт в другие инструменты

Загружайте статьи в локальную базу данных, страницу Notion, хранилище Obsidian или таблицу. API возвращает структурированный JSON, поэтому преобразование обычно занимает несколько строк jq или короткий скрипт на Python.

Интеграция с AI-агентами

API работает с AI-инструментами, способными делать HTTP-запросы. Если вы используете ассистента, например OpenClaw, можно направить его на SereneReader для обработки ваших лент. Мы написали об этом отдельный пост: Как подключить RSS-ленты к AI-агентам.

Ещё идеи

Вот несколько вещей, которые можно реализовать буквально в несколько строк: задание cron, отправляющее вам статьи из одной папки за день; псевдоним в командной оболочке, суммирующий непрочитанные из /api/v1/feeds; скрипт опроса, публикующий новые статьи из одной ленты в канал Slack.

Для всего этого не нужен никакой фреймворк. curl и jq покрывают большинство случаев, а любой язык с HTTP-клиентом справится с остальным.

Создайте ключ в Настройках, на вкладке API.