← Back to blog

Jak połączyć kanały RSS z agentami AI

Dlaczego RSS i agenty AI dobrze współpracują

Większość agentów AI, które muszą czytać zasoby z sieci, zaczyna od scrapowania stron. Oznacza to konieczność obsługi parsowania HTML, renderowania JavaScript, ograniczeń liczby żądań, CAPTCHAs oraz układów, które zmieniają się przy każdym przeprojektowaniu witryny.

SereneReader wykonuje już tę żmudną pracę: pobiera kanały RSS, parsuje XML i przechowuje wszystko jako przejrzyste, uporządkowane dane. API udostępnia te dane agentowi w formacie JSON. Bez scrapowania, bez parsowania, bez kruchych selektorów stron.

Czysty JSON, nie surowe kanały. Agent nigdy nie dotyka RSS ani XML. SereneReader już przetworzyło kanały, zdekodowało encje HTML, naprawiło podwójnie zakodowane treści i znormalizowało wszelkie osobliwości kodowania, które sprawiają, że surowe dane z kanałów są nieporządne. Agent po prostu odpytuje API i otrzymuje czysty, ustrukturyzowany JSON.

Źródła dobrane przez człowieka. To Ty wybierasz kanały. To Ty decydujesz, do czego agent ma dostęp. Nie jest to ogólne przeszukiwanie sieci — to skupiony strumień informacji, który kontrolujesz.

Bez scrapowania, bez blokad. Agent komunikuje się z API SereneReader, a nie bezpośrednio z witrynami źródłowymi. Żadnych problemów z robots.txt, żadnych mechanizmów antybot, żadnych prawnych szarych stref.

Chronologicznie i bez duplikatów. Artykuły trafiają do agenta raz, w kolejności. Agent nie musi śledzić, co już widział, jeśli filtruje według daty publikacji.

Jak to działa z OpenClaw

OpenClaw to platforma agentów AI, która pozwala im wywoływać zewnętrzne API jako narzędzia. Aby połączyć ją z SereneReader:

  1. Wygeneruj klucz API w ustawieniach SereneReader.
  2. Zdefiniuj API SereneReader jako narzędzie w konfiguracji agenta OpenClaw. Dokumentacja endpointów dostępna na stronie ustawień dokładnie pokazuje agentowi, co wywoływać.
  3. Przydziel agentowi zadanie. Na przykład: „Sprawdzaj moje kanały RSS co rano, podsumowuj wszystko związane z bezpieczeństwem infrastruktury i zapisuj streszczenie do mojego skarbca Obsidian."

Agent zajmuje się harmonogramowaniem, filtrowaniem i podsumowywaniem. SereneReader obsługuje pobieranie kanałów i przechowywanie artykułów.

Przykładowy prompt dla agenta

Instrukcje dla agenta mogą wyglądać mniej więcej tak:

Masz dostęp do API SereneReader. Każdego dnia o 8:00 pobieraj artykuły opublikowane w ciągu ostatnich 24 godzin. Dla każdego artykułu ustal, czy dotyczy cyberbezpieczeństwa, infrastruktury lub DevOps. Jeśli tak, dodaj go do dziennego podsumowania. Zapisz podsumowanie jako nową notatkę w moim skarbcu Obsidian, w folderze Daily Digests.

Agent wywołuje API, przetwarza wyniki i podejmuje działania. Bez własnego kodu, bez cron jobów, bez skryptów spinających.

Przykładowe zastosowania

Agent monitorujący wiadomości

Zasubskrybuj 20–30 branżowych kanałów w SereneReader. Podłącz agenta, który skanuje w poszukiwaniu wzmianek o Twojej firmie, konkurencji lub konkretnych tematach. Otrzymuj codzienne podsumowanie zamiast ręcznie sprawdzać każdy kanał.

Digest z obszaru badań

Obserwuj kanały preprintów akademickich (arXiv, bioRxiv) i blogi techniczne. Pozwól agentowi kategoryzować nowe publikacje według tematu, oznaczać te istotne dla bieżących projektów i układać tygodniową listę lektur.

Potok treści

Zasubskrybuj kanały ze swojej niszy. Niech agent identyfikuje popularne tematy, wyodrębnia kluczowe punkty i przygotowuje szkice briefów contentowych. Treść nadal piszesz sam, ale etap badań jest obsługiwany automatycznie.

Wywiad konkurencyjny

Śledź blogi konkurentów, kanały changelogów i komunikaty prasowe. Agent może wykrywać premiery produktów, zmiany cenowe i ogłoszenia nowych funkcji, a następnie rejestrować je w ustrukturyzowanym formacie.

Działa z każdym narzędziem LLM

API SereneReader zwraca standardowy JSON przez HTTP. Każde narzędzie zdolne do wykonywania uwierzytelnionych żądań API może z niego korzystać:

  • OpenClaw do autonomicznych przepływów pracy agentów
  • LangChain / LlamaIndex do generowania wspomaganego wyszukiwaniem
  • Własne skrypty z dowolnym API LLM przez OpenRouter (przykład poniżej)
  • Zapier / Make do automatyzacji bez kodu z krokami AI
  • n8n do samoobsługowej automatyzacji przepływów pracy

Schemat jest zawsze taki sam: pobierz artykuły z SereneReader, przekaż je do LLM do przetworzenia, skieruj wynik tam, gdzie trzeba.

Przykład: skrypt codziennego digestu z OpenRouter

Skrypt Node.js, który pobiera artykuły z poprzedniego dnia z SereneReader, streszcza je za pomocą dowolnego LLM przez OpenRouter i zapisuje wynik do lokalnego pliku. Uruchom go poleceniem node digest.mjs lub zaplanuj za pomocą cron.

// digest.mjs
// Requires: SERENE_API_KEY, SERENE_API_URL, and OPENROUTER_API_KEY env vars.
// Your API settings page in SereneReader has the base URL and endpoint paths.

const SERENE_API_KEY = process.env.SERENE_API_KEY;
const SERENE_API_URL = process.env.SERENE_API_URL; // from your API settings page
const OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY;

import { writeFileSync } from "node:fs";

// 1. Fetch yesterday's articles from SereneReader
const yesterday = new Date(Date.now() - 86400000).toISOString();
const res = await fetch(`${SERENE_API_URL}?since=${yesterday}`, {
  headers: { Authorization: `Bearer ${SERENE_API_KEY}` },
});

if (!res.ok) {
  console.error(`SereneReader API error: ${res.status}`);
  process.exit(1);
}

const { articles } = await res.json();

if (articles.length === 0) {
  console.log("No new articles since yesterday.");
  process.exit(0);
}

// 2. Build a prompt from article titles and snippets
const articleList = articles
  .map((a) => `- ${a.title} (${a.feedName})\n  ${a.snippet}`)
  .join("\n\n");

const prompt = [
  `Here are ${articles.length} articles from my RSS feeds`,
  `published in the last 24 hours:\n\n${articleList}\n\n`,
  `Write a concise daily digest. Group related articles`,
  `by topic. For each topic, summarize the key points in`,
  `2-3 sentences. Include the article titles so I know`,
  `which ones to read in full.`,
].join(" ");

// 3. Send to any model via OpenRouter
const llmRes = await fetch("https://openrouter.ai/api/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${OPENROUTER_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "anthropic/claude-sonnet-4",
    messages: [{ role: "user", content: prompt }],
  }),
});

if (!llmRes.ok) {
  console.error(`OpenRouter API error: ${llmRes.status}`);
  process.exit(1);
}

const { choices } = await llmRes.json();
const summary = choices[0].message.content;

// 4. Write the digest to a local markdown file
const date = new Date().toISOString().split("T")[0];
const output = `# Daily Digest - ${date}\n\n${summary}\n`;
writeFileSync(`digest-${date}.md`, output);

console.log(`Digest written to digest-${date}.md (${articles.length} articles)`);

Żadnych zależności, żadnego kroku budowania. Dwa klucze API, jeden plik i masz codzienny digest badawczy. Zmień model, dostosuj prompt lub przekieruj wynik do Obsidian, Notion albo Slack.

Pierwsze kroki

Dostęp do API jest dostępny w planie Pro za 5 USD/mies. — nie jest ukryty za poziomem enterprise ani najdroższym planem, jak ma to miejsce u większości konkurencyjnych czytników.

  1. Zarejestruj się w SereneReader, jeśli jeszcze tego nie zrobiłeś.
  2. Zasubskrybuj kanały, do których agent ma mieć dostęp.
  3. Wygeneruj klucz API w ustawieniach.
  4. Skonfiguruj agenta tak, aby wywoływał API SereneReader.

Pełna dokumentacja endpointów znajduje się w ustawieniach konta. Aby dowiedzieć się więcej o samym API, przeczytaj Tworzenie automatyzacji z API SereneReader.