Schedule icon
Request icon
Script icon
ForEach icon
ChatCompletion icon
Write icon
If icon
SlackIncomingWebhook icon

Daily GitHub Issues AI Digest

Schedule a reusable GitHub issue digest that filters issues, triages each with OpenAI, saves Markdown, and optionally posts to Slack.

Categories
AI

Diagram unavailable

We could not build the topology for this blueprint. The flow itself is valid, use the YAML on the left to run it.

Turn a noisy issue tracker into a focused daily briefing. This reusable flow fetches recently updated GitHub issues, filters them by lookback window and optional labels, analyzes each issue in parallel with OpenAI, composes a Markdown digest, stores it in Kestra internal storage, and optionally posts the same report to Slack.

How it works

  1. every_morning starts the flow at 08:00 every day. You can disable the trigger and execute the flow manually while testing.
  2. fetch_issues uses the GitHub REST API with a token from Kestra secrets.
  3. prepare_issues removes pull requests, filters by window_hours and labels, and caps the batch at max_issues.
  4. summarize_each_issue is a ForEach flow task. Each issue is analyzed independently by OpenAI, with up to four analyses running concurrently.
  5. compose_digest combines the per-issue results into a readable Markdown report. write_digest saves it to internal storage.
  6. notify_if_enabled is an If flow task. When notify_slack is true, send_to_slack posts the report using the Slack webhook secret.

Prerequisites

  • A Kestra instance with the HTTP, Python script, OpenAI, Slack, and core flow/storage plugins available.
  • A GitHub token with read access to the target repository.
  • An OpenAI API key with access to the selected chat model.
  • A Slack incoming webhook only when notify_slack is enabled.

Secrets

  • GITHUB_TOKEN: read issues from GitHub.
  • OPENAI_API_KEY: analyze issues and compose the digest.
  • SLACK_WEBHOOK_URL: optional Slack incoming webhook used only when notify_slack is true.

Inputs

  • github_owner and github_repository: target repository.
  • labels: optional comma-separated labels such as bug,security; blank includes all labels.
  • window_hours: how far back an issue may have been updated.
  • max_issues: maximum issues sent to OpenAI in one run.
  • ai_model: OpenAI model name, defaulting to gpt-4o-mini.
  • notify_slack: controls the optional Slack delivery branch.

Quick start

  1. Add the required secrets to your Kestra namespace.
  2. Import this flow and set the repository inputs.
  3. Run it manually with notify_slack set to false.
  4. Inspect outputs.report for the Markdown artifact and outputs.issue_count for the number of analyzed issues.
  5. Set notify_slack to true after adding SLACK_WEBHOOK_URL.

Example output

# GitHub Issues Digest
**Repository:** kestra-io/kestra | **Issues analyzed:** 2

## #123: Retry policy is ignored for HTTP tasks
- **Priority:** P1
- **Category:** Reliability
- **Summary:** ...
- **Next step:** Reproduce with the smallest flow and add a regression test.

Customization

  • Change every_morning.cron to match your team's timezone and cadence.
  • Set labels to focus on an operational queue such as bug,incident.
  • Increase max_issues carefully to control token usage and execution time.
  • Replace send_to_slack with an email or storage plugin for another delivery destination.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.