New to Kestra?
Use blueprints to kickstart your first workflows.
Automate a Friday Confluence recap page summarizing closed GitHub issues and Google Calendar meetings, with a Slack notification, orchestrated by Kestra.
Automate a weekly status update by collecting closed GitHub issues and pull requests, fetching the past week of Google Calendar meetings, then publishing the totals to a Confluence page and posting a Slack summary. This recap blueprint replaces the manual end-of-week ritual of scraping GitHub notifications, copying meeting counts from your calendar, and pasting them into a wiki page. It runs every Friday afternoon (skipping US public holidays) and keeps a versioned Confluence page so your team can scroll back through previous weeks without losing history.
Schedule trigger fires every Friday at 16:00, gated by a PublicHoliday condition (country: US) wrapped in Not so the flow skips US holidays.get_issues calls the GitHub REST API with io.kestra.plugin.core.http.Request, filtering issues assigned to the authenticated user, closed in the last 5 days.for_each_issue (io.kestra.plugin.core.flow.ForEach) walks the response, logs each issue URL with io.kestra.plugin.core.debug.Return, and uses io.kestra.plugin.core.kv.Set to store a running count in the issues_today KV key.get_calendar_events uses io.kestra.plugin.googleworkspace.calendar.ListEvents with a service account to pull meetings between 07:00 last Monday and 17:00 today (US Central).for_each iterates the calendar metadata, logging each htmlLink and updating the meetings_today KV counter the same way.send_to_confluence calls io.kestra.plugin.confluence.pages.Update to overwrite a fixed pageId titled "Weekly Recaps" with a markdown body containing the meeting and issue totals, bumping the page version from the version_number KV key.increment_version_number writes the next version back to KV so the Confluence API accepts the next update.check_for_events (io.kestra.plugin.core.flow.If) branches on whether any meetings happened, sending either a populated or a "no activity" message via io.kestra.plugin.slack.notifications.SlackIncomingWebhook.Confluence has no native scheduler that can read GitHub, query Google Calendar, branch on results, and write back to a page. Kestra wires those services together declaratively in YAML, with retries and event triggers, full execution logs and outputs for lineage, KV state to track page versions across runs, and one Schedule trigger that gates on public holidays without extra glue code. Each task output is captured, so you can audit exactly which issues and meetings landed on any given week.
repo scope for the target organization.CLASSIC_GITHUB: GitHub personal access token used in the Authorization: Bearer header.NEW_SA_GCAL: Google Workspace service account JSON for Calendar API access.CALENDARID: Google Calendar ID to read events from.CONFLUENCE_API: Confluence API token.CONFLUENCE_SERVER_URL: Base URL of your Confluence instance.EMAIL: Email address used as the Confluence username.PAGE_ID: ID of the Confluence page to update.SLACK_WEBHOOK: Slack incoming webhook URL.pageId, and seed a version_number KV entry equal to the current page version.namespace if company.team is not where you want the flow to live.weekly_wrapup if Friday 16:00 UTC is not your end-of-week.filter, repository, or label to scope to a team.io.kestra.plugin.notion.pages.Update to publish to Notion instead.Subflow task that emails the same recap with io.kestra.plugin.notifications.mail.MailSend.