⚙️ Auto-generate GitHub release notes and notify via Slack

300 views · ⚙️ DevOps & CI/CD

💡 Pro Tip — If you need GitHub data beyond what the REST API gives you, ScraperNode has a repository scraper that extracts metadata at scale without token rate limits.

View All Scrapers

Description

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

This n8n workflow automates the process of:

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:

How It Works

Node Summary:

Node NoNode NameDescription
1GitHub Release Input FormTakes user inputs (owner, repo, branch).
2ConfigExtracts input and defines PR label grouping config.
3Get Latest Git TagFetches latest Git tag (used as reference point).
4Get Commit Date of Latest TagGets the exact timestamp of the latest tag’s commit.
5Fetch All Merged PRs Since Last TagQueries GitHub for PRs merged after that timestamp.
6Group PRs & Generate Release NotesOrganizes PRs by label and generates markdown notes.
7GitHub Pre-releaseCreates a draft GitHub release with those notes.
8Send Message to SlackSends the final release summary to Slack.

How to Set Up

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

Requirements

RequirementDescription
n8n versionCloud or Self-Hosted
GitHub AccessA token with repo and write:repo_hook permissions
Slack AccessWebhook URL or Slack OAuth app
Git TagsSemantic versioning tags pushed to the repo
LabelsPRs should be labeled (e.g., feature, bug, other) for grouping

How to Customize

FeatureHow to Customize
Label GroupingModify the config map in the Config node (step 2).
PR FilteringAdjust the search query in node 5 to fit your repo’s conventions.
Markdown TemplateTweak markdown generation logic in node 6.
Slack Message FormatCustomize the Slack text in node 8.
Tag FormatSwitch from semantic versioning if needed in node 3 logic.
Release TypeChange draft: true to false in node 7 for immediate publishing.

Add‑ons

You can extend the flow by:

Use Case Examples

ScenarioDescription
OSS Team Weekly ReleasesAutomatically publish weekly release notes summarizing merged PRs.
Sprint Review ReportsUse it at the end of each sprint to generate change summaries.
CI/CD PipelinesIntegrate with GitHub Actions or Jenkins for automated tagging + release.

Common Troubleshooting

IssuePossible CauseSolution
No data found for item-index: "1"GitHub Search returned no PRsEnsure PRs were merged after the last tag and branch name is correct
Cannot access $node in codeWrong script execution contextEnsure JavaScript is selected and variables are accessed properly
draft must be booleanDraft field passed as stringUse true (not "true") in JSON input of HTTP node
PR labels not groupedPRs have no matching labelsUpdate your label config map or ensure labels exist on PRs
Empty Slack messageSlack node not receiving dataEnsure $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:

🔗 Nodes Used

HTTP Request, n8n Form Trigger

📥 Import

Download workflow.json and import into n8n: Workflow menu → Import from File

📖 Importing guide · 🔑 Credential setup