๐ฌ Draft customer-facing changelogs from merged GitHub PRs with OpenAI and Gmail
โก 0 views ยท ๐ฌ Content Creation & Video
๐ก 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.
Description
Quick overview
Reads merged pull requests from your repositories, drops the bots and the changes nobody outside the team can see, asks a model which of the rest a customer would notice, and drafts the changelog as a Gmail draft. Nothing is sent.
How it works
- Runs every Friday on a schedule (or on demand) and loads configuration such as repositories, time window, and email recipient.
- Fetches recently closed GitHub issues for each repository and keeps only pull requests that were actually merged within the configured window.
- Removes bot-authored changes and PRs marked as internal via conventional-commit prefixes or skip labels.
- Checks the n8n Data Table to skip pull requests that have already been judged in previous runs and caps the remaining list to a maximum count.
- Sends the remaining PR titles and descriptions to an OpenAI-compatible chat model to decide which changes a customer would notice.
- Uses the model to write a customer-facing changelog grouped into Added, Fixed, and Changed, then creates a Gmail draft with the changelog, a short summary, and a full list of judged PRs.
- Upserts one record per judged pull request into the n8n Data Table so future runs do not re-evaluate the same changes.
Setup
- Add a GitHub credential with access to the target repositories and update the repository list in Settings (as comma-separated owner/name values).
- Create an n8n Data Table named
shipped_changeswith columnspr_key,repo,number,title,verdict, andmerged_on. - Add an OpenAI-compatible credential for the chat model node and choose a model that can handle the configured
max_changesprompt size. - Add a Gmail credential and set the recipient address in Settings (
email_to) for where the draft is addressed.
Requirements
- A GitHub credential that can read the repositories you list, a Gmail credential for the draft, and any OpenAI-compatible key.
Customization
- skip_prefixes and skip_labels in Settings decide what counts as invisible before a model ever sees it. max_changes caps how many go into one prompt - a longer list is an answer long enough to be cut off.
๐ Nodes Used
GitHub, Gmail, Schedule Trigger, Basic LLM Chain, OpenAI Chat Model, Data table
๐ฅ Import
Download workflow.json and import into n8n:
Workflow menu โ Import from File