Auto-Generate GitHub Release Notes and Notify via Slack

Auto-Generate GitHub Release Notes and Notify via Slack (n8n Workflow)

This n8n workflow automates the process of: Generating structured GitHub release notes from merged pull requests since the last tag. Creating a draft GitHub release using the latest tag and PR info. Sending a formatted summary to a Slack channel.

All of this is triggered manually via a form, where the user inputs the repository, owner and target branch.

Who's It For

This flow is perfect for: Open-source maintainers** looking to automate changelog management. DevOps engineers** handling release cycles. Engineering teams** maintaining structured, consistent GitHub releases. Technical writers** who prepare release notes.

How It Works

Node Summary:

| Node No | Node Name | Description | |---------|------------------------------------|---------------------------------------------------------------| | 1 | GitHub Release Input Form | Takes user inputs (owner, repo, branch). | | 2 | Config | Extracts input and defines PR label grouping config. | | 3 | Get Latest Git Tag | Fetches latest Git tag (used as reference point). | | 4 | Get Commit Date of Latest Tag | Gets the exact timestamp of the latest tag's commit. | | 5 | Fetch All Merged PRs Since Last Tag | Queries GitHub for PRs merged after that timestamp. | | 6 | Group PRs & Generate Release Notes | Organizes PRs by label and generates markdown notes. | | 7 | GitHub Pre-release | Creates a draft GitHub release with those notes. | | 8 | Send Message to Slack | Sends the final release summary to Slack. |

How to Set Up

Clone or import this workflow into your n8n instance. Configure the following credentials: GitHub OAuth or PAT (Personal Access Token) Slack Webhook URL or OAuth credentials Open the form node and fill in: owner: GitHub username/org repo: GitHub repository name branch: Base branch (e.g., main) Run the workflow manually and observe the release note being: Created as a draft on GitHub Sent to Slack

Requirements

| Requirement | Description | |-----------------|-----------------------------------------------------| | n8n version | Cloud or Self-Hosted | | GitHub Access | A token with repo and write:repo_hook permissions | | Slack Access | Webhook URL or Slack OAuth app | | Git Tags | Semantic versioning tags pushed to the repo | | Labels | PRs should be labeled (e.g., feature, bug, other) for grouping |

How to Customize

| Feature | How to Customize | |---------------------|---------------------------------------------------------------| | Label Grouping | Modify the config map in the Config node (step 2). | | PR Filtering | Adjust the search query in node 5 to fit your repo's conventions. | | Markdown Template | Tweak markdown generation logic in node 6. | | Slack Message Format| Customize the Slack text in node 8. | | Tag Format | Switch from semantic versioning if needed in node 3 logic. | | Release Type | Change draft: true to false in node 7 for immediate publishing. |

Add‑ons

You can extend the flow by: Adding a cron scheduler for periodic releases. Sending release notes via email (use the Email node). Publishing directly to Jira or Confluence. Posting GitHub release links to Discord.

Use Case Examples

| Scenario | Description | |---------------------------|---------------------------------------------------------------| | OSS Team Weekly Releases | Automatically publish weekly release notes summarizing merged PRs. | | Sprint Review Reports | Use it at the end of each sprint to generate change summaries. | | CI/CD Pipelines | Integrate with GitHub Actions or Jenkins for automated tagging + release. |

Common Troubleshooting

| Issue | Possible Cause | Solution | |----------------------------------------|-------------------------------------------|----------------------------------------------------------------------| | No data found for item-index: "1" | GitHub Search returned no PRs | Ensure PRs were merged after the last tag and branch name is correct | | Cannot access $node in code | Wrong script execution context | Ensure JavaScript is selected and variables are accessed properly | | draft must be boolean | Draft field passed as string | Use true (not "true") in JSON input of HTTP node | | PR labels not grouped | PRs have no matching labels | Update your label config map or ensure labels exist on PRs | | Empty Slack message | Slack node not receiving data | Ensure $json.release_notes is being passed correctly |

Need Help?

Need help setting this up for your team or extending it for more features (e.g., JIRA, auto-tagging, changelog export)? We're here to help you customize, debug and scale this flow.

Feel free to reach out WeblineIndia if you need: One-on-one setup assistance. Custom n8n nodes or scripts. Advanced GitHub/Slack integrations.

0
Downloads
1
Views
7.03
Quality Score
beginner
Complexity
Author:WeblineIndia(View Original →)
Created:8/13/2025
Updated:11/17/2025

🔒 Please log in to import templates to n8n and favorite templates

Workflow Visualization

Loading...

Preparing workflow renderer

Comments (0)

Login to post comments