AI Automation

An automated AI morning digest: gather RSS, GitHub, Jira and summarize into one message

TL;DR

7am schedule → fetch data (tech RSS, GitHub releases of repos you track, Jira tickets changed yesterday) → dedupe in code → Claude summarizes in 3 tiers (act today / good to know / further reading) → send one message. Build it in n8n or with claude -p + cron.

Every morning a Technical PM typically opens 6–8 tabs — Jira, GitHub, Sentry, Slack, a few tech blogs — just to learn “what needs handling today”. An automated AI digest gathers it all into a single message at 7 am, already sorted by urgency — saving 20–30 minutes a day and reducing the chance of missing something. This article covers source design, the prompt, two implementations (n8n and the command line) and how to improve it over time.

Architecture

Schedule 7:00 Mon–Fri
  → Collect in parallel: RSS · GitHub releases · Jira · Sentry
  → Code: deduplicate, filter to last 24h, trim content
  → LLM: summarise + classify 🔴🟡🔵, with links
  → Send to Telegram / Slack / email
  → Save the digest to a Sheet/Notion for reference

Suggested sources

SourceFetched withFilter
Blogs / tech newsRSS Read nodePosts in the last 24h, keywords relevant to your stack
Releases of repos you useGitHub API or RSS /releases.atomNew versions, flag “breaking”
Tickets that changed statusJira API (JQL updated >= -1d)Blocked, overdue, new P1s
Production errorsSentry / log APINew errors or spikes
Pull requestsGitHub APIPRs awaiting review > 2 days

Summary prompt

You are a Technical PM's assistant. From the data below, write a digest of at most 15 lines:
🔴 Handle today (blocked tickets, production errors, breaking changes)
🟡 Good to know (new releases, notable changes, long-waiting PRs)
🔵 Further reading (at most the 3 best links)
Rules:
- Every line has a source link.
- Add no information beyond the data provided.
- If a section is empty, write "None".

{{collected_json}}

The key is a length limit and a fixed structure. A digest longer than one phone screen will soon be ignored.

Option 1: n8n

  1. Schedule Trigger at 7:00, Mon–Fri.
  2. Parallel branches: RSS Read, HTTP Request (GitHub, Jira, Sentry).
  3. Code node: merge, deduplicate, trim each item to title + 200 characters + link.
  4. An LLM node (Anthropic) with the prompt above.
  5. A Telegram/Slack node to send; a Google Sheets node to archive.

Option 2: command line + cron

# crontab: 7 am Mon–Fri
0 7 * * 1-5  /opt/digest/collect.sh \
  | claude -p "$(cat /opt/digest/prompt.txt)" \
  | /opt/digest/send-telegram.sh

collect.sh calls the APIs with curl + jq and outputs compact JSON; claude -p runs Claude Code non-interactively; the last script sends the result via the Telegram Bot API. Advantages: no workflow server needed, easy to keep in Git.

Principles for a useful digest

  • Filter with code before the model: cheaper, faster, and better summaries because there’s less noise.
  • Always include source links: readers verify in one tap; reduces the risk of misinterpretation.
  • Don’t let the AI invent: say “use only the data provided”; empty sections say “None”.
  • Keep history: look up “what happened last week” and assess quality over time.
  • Fail loudly: if a source errors, still send the digest with “Couldn’t fetch Sentry data” rather than staying silent.

Improve after two weeks

  • Ask recipients which lines are useless — drop that source or tighten its filter.
  • Was anything 🟡 that should have been 🔴? Add definitions or examples to the prompt.
  • Consider role-specific digests: devs get PRs/errors, PMs get tickets/risks, leadership gets a weekly overview.

How to apply it

  • Developers: Start with two sources (GitHub + Sentry) and add more. Make collect.sh runnable on its own for debugging.
  • Tech Leads: Use the digest as an “async standup” — shorter morning meetings.
  • PMs: The digests are great input for weekly reports: feed five daily digests to the AI and have it produce a progress report.

Sources & references

  1. RSS Read node — n8n Docs
  2. Run Claude Code programmatically — Claude Code Docs