ForEach icon
Request icon
Script icon
ChatCompletion icon
SlackIncomingWebhook icon
MailSend icon
Schedule icon

Generate and Deliver an AI-Powered Daily News Digest from RSS Feeds via Slack and Email

Automate a daily news briefing with Kestra and OpenAI. Fetch RSS feeds in parallel, filter recent articles, and deliver an AI-curated digest to Slack and email.

Categories
AIBusiness

Automate a daily news briefing that pulls articles from any set of RSS feeds, filters them to the most recent 48 hours, and uses OpenAI GPT-4o-mini to write a focused, multi-language digest delivered to Slack and email every morning. This blueprint replaces manual news browsing and scattered newsletters with a single, AI-curated summary, solving the problem of information overload for engineering teams, founders, and analysts who need to stay current without reading dozens of sources by hand.

How it works

  1. A morning_digest trigger (io.kestra.plugin.core.trigger.Schedule) fires daily at 07:00 UTC via the cron expression 0 7 * * *.
  2. The fetch_feeds task (io.kestra.plugin.core.flow.ForEach) iterates over the rss_feeds input with a concurrencyLimit of 4, fetching each feed in parallel with io.kestra.plugin.core.http.Request over GET.
  3. The parse_and_summarize task (io.kestra.plugin.scripts.python.Script) installs the feedparser dependency, parses the raw feed bodies, keeps up to max_articles per feed, drops anything older than 48 hours, caps the result at 20 articles, and emits them via Kestra.outputs.
  4. The generate_digest task (io.kestra.plugin.openai.ChatCompletion) sends the normalized articles to gpt-4o-mini with a system prompt driven by the digest_language and digest_topic_focus inputs, producing a structured digest with key themes, top stories, and trends to watch.
  5. The send_to_slack task (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) posts the digest to a Slack channel, and send_email_digest (io.kestra.plugin.email.MailSend) delivers a formatted HTML email over SMTP on port 465.

What you get

  • A daily, AI-written news digest delivered automatically to Slack and email.
  • Parallel feed fetching with a recency filter so stale articles never reach the summary.
  • Configurable language and topic focus for a tailored briefing.
  • A reusable pattern for turning unstructured web content into structured intelligence.

Who it's for

  • Engineering teams tracking trends in their technical domain.
  • Founders and product managers monitoring competitor and industry news.
  • Newsletter authors who want an automated first draft.
  • Analysts and researchers who need a curated signal from many sources.

Why orchestrate this with Kestra

OpenAI has no scheduler, no retry logic, and no way to fan out HTTP fetches or chain a Python parse step into a model call and multi-channel delivery. Kestra wraps the whole pipeline in declarative YAML: an event-driven Schedule trigger runs it every morning, ForEach parallelizes feed retrieval, retries and execution history give you reliability and full lineage across every task, and inputs make language, topic, and feed list configurable without editing code. The model call becomes one observable step in an auditable, end-to-end workflow rather than an isolated API request.

Prerequisites

  • A Kestra instance (open source or Enterprise).
  • An OpenAI API key with access to gpt-4o-mini.
  • A Slack incoming webhook URL.
  • An SMTP server and a sender/recipient email address for the digest.

Secrets

  • OPENAI_API_KEY: OpenAI API key for the ChatCompletion task.
  • SLACK_WEBHOOK_URL: Slack incoming webhook URL for digest delivery.
  • DIGEST_EMAIL_FROM: sender address for the HTML email.
  • DIGEST_EMAIL_TO: recipient address for the HTML email.
  • SMTP_HOST: SMTP server host.
  • SMTP_USERNAME: SMTP authentication username.
  • SMTP_PASSWORD: SMTP authentication password.

Quick start

  1. Add the blueprint to your Kestra instance.
  2. Configure the seven secrets listed above.
  3. Adjust the rss_feeds, max_articles, digest_language, and digest_topic_focus inputs to taste.
  4. Run the flow manually to verify Slack and email delivery, then let the daily schedule take over.

How to extend

  • Add keyword filtering in the Python step so only articles matching specific topics are kept.
  • Archive each digest to a database, Notion, or object storage for a searchable history.
  • Run multiple topic-specific digests into separate Slack channels.
  • Add a Telegram, Discord, or Microsoft Teams delivery channel alongside Slack and email.
  • Swap gpt-4o-mini for a larger model when you need richer analysis.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.