Releasedagen ska inte innebära en extra timme med ”skriv anteckningarna, formulera om anteckningarna, formatera anteckningarna”. Men på något sätt gör den alltid det, och resultatet blir ofta stressat, inkonsekvent eller saknar den enda ändringen som faktiskt spelar roll.
Produktmarknadsförare märker det när de förväntas kommunicera funktioner med halva sammanhanget. Tekniska ledare märker det när en release går ut med luddiga punktlistor. Och en byråägare som jonglerar flera kund-repon? Ärligt talat, det är då det blir rörigt. Den här automatiseringen för GitHub release notes förvandlar dina två senaste releaser till en korrekt formaterad ändringsloggspost som du kan klistra in direkt.
Nedan ser du exakt vad workflowet gör, vad du behöver för att köra det och hur du anpassar resultatet för dokumentation, GitHub eller interna uppdateringar.
Så här fungerar automatiseringen
Hela n8n-workflowet, från trigger till slutlig output:
n8n Workflow Template: GitHub + OpenRouter: release notes klara att klistra in
flowchart LR
subgraph sg0["Github Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/github.dark.svg' width='40' height='40' /></div><br/>Github Trigger"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Get the last two release tags"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Fetch the latest release body"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/github.dark.svg' width='40' height='40' /></div><br/>Get the last two releases"]
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model1", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Repo & Owner", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch release details from l.."]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Confirm diff"]
n9@{ icon: "mdi:robot", form: "rounded", label: "Summarize release differences", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Generate latest release notes", pos: "b", h: 48 }
n8 --> n9
n0 --> n2
n6 --> n3
n4 -.-> n9
n5 -.-> n10
n3 --> n1
n2 --> n6
n1 --> n7
n9 --> n10
n7 --> n8
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n9,n10 ai
class n4,n5 aiModel
class n7 api
class n1,n2,n8 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n7,n8 customIcon
Problemet: release notes blir alltid en sista-minuten-paniksatsning
Att skriva release notes ser enkelt ut tills du gör det under tidspress. Du måste hitta senaste releasen, förstå vad som ändrats sedan föregående version, skumma PR-titlar eller commit-meddelanden och sedan översätta det till något en människa faktiskt vill läsa. Under tiden har teamet redan gått vidare till nästa sprint. En missad breaking change eller en otydlig punkt kan skapa supportärenden, förvirrade kunder och interna ”vänta, vad skeppades?”-trådar som drar ut i flera dagar.
Det eskalerar snabbt. Här är var det oftast faller isär.
- Att jämföra de två senaste GitHub-releaserna manuellt blir snabbt till flik-hoppande och gissningar.
- Formateringen varierar beroende på vem som skriver, vilket gör att din changelog aldrig känns konsekvent.
- Viktig kontext faller bort eftersom ingen vill läsa om hela diffen under ett deploy-fönster.
- Teamet skjuter på publiceringen av anteckningar, så releasen och kommunikationen glider isär.
Lösningen: AI-genererade release notes från dina två senaste releaser
Det här n8n-workflowet lyssnar efter en nypublicerad GitHub Release och gör de irriterande delarna åt dig. Det hämtar detaljer från den senaste releasen (tagg, brödtext, repo-metadata), hämtar föregående release och förbereder en jämförelse så att workflowet sammanfattar faktiska ändringar, inte magkänsla. Sedan kör det ändringsmängden genom chattmodeller via OpenRouter och AI-agentnoder för att producera två saker: en kort sammanfattning av vad som ändrats och en polerad, klistra-in-klar release note som formateras likadant varje gång. Slutresultatet läser som att någon har lagt omsorg på redigering, men du behövde inte göra jobbet.
Workflowet startar när GitHub publicerar en release. Därifrån hämtar det den senaste och föregående versionen, bygger en diff via en HTTP-förfrågan och validerar att det finns en verklig ändringsmängd att sammanfatta. Till sist genererar OpenRouter en strukturerad sammanfattning och en publicerbar release note som du kan lägga in i GitHub, dokumentation eller en changelog.
Det här får du: automatisering vs. resultat
| Vad det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du skeppar en release i veckan över 3 repositories. Manuellt tar en snabb cykel med ”jämför versioner, skumma ändringar, skriv, formatera, korrekturläs” ofta runt 45 minuter per repo, så du lägger ungefär 2 timmar varje vecka bara på release notes. Med det här workflowet triggas det när releasen publiceras, lägger ett par minuter på att generera sammanfattningen och de formaterade anteckningarna, och du behöver oftast bara granska och klistra in. Det ger ungefär 90 minuter tillbaka de flesta veckor, utan att sänka kvaliteten.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- GitHub för att läsa releaser och taggar
- OpenRouter för att generera AI-sammanfattningarna
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard)
Kunskapsnivå: Nybörjare. Du kopplar in autentiseringsuppgifter, importerar workflowet och justerar en prompt om du vill ha en annan ton.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En GitHub Release publiceras. GitHub-triggern bevakar ditt repo och triggar i samma ögonblick som en ny release går live, så du slipper att det hänger på att någon kommer ihåg att köra en checklista.
Workflowet hämtar den senaste och föregående versionen. Det extraherar detaljer från den senaste releasen, hämtar en lista över nyliga releaser och tar sedan fram ”föregående tagg” så att du alltid jämför rätt två versioner.
En diff tas fram och kontrolleras. En HTTP-förfrågan jämför de två release-versionerna, och ett valideringssteg bekräftar att det finns en användbar ändringsmängd. Om releasen är tom eller märkligt formaterad förhindrar detta att AI:n producerar självsäkert nonsens.
OpenRouter skapar sammanfattningen och den slutliga texten. Workflowet kör först en AI-sammanfattning och komponerar sedan en formaterad release note som du kan klistra in i GitHub Releases, dokumentation eller en uppdatering av CHANGELOG.md.
Du kan enkelt ändra skrivstilen så att den matchar er produktton, eller justera formateringen så att den följer din changelog-mall. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera GitHub-triggern
Konfigurera GitHub-webhook-triggern så att den körs varje gång en ny release publiceras.
- Lägg till och öppna GitHub Release Watcher.
- Ställ in Authentication på
oAuth2. - Välj mål-Owner och Repository för release-händelser.
- Säkerställ att listan Events innehåller
release.
Inloggningsuppgifter krävs: Anslut era githubOAuth2Api-inloggningsuppgifter i GitHub Release Watcher.
Steg 2: Anslut hämtning av GitHub release-data
Extrahera repo-detaljer från webhook-payloaden och hämta de senaste releaserna för att fastställa tidigare taggar.
- Öppna Extract Latest Release Data och bekräfta att JavaScript läser från
$input.first().json.bodyoch returnerarowner,repoochcurrentTag. - Öppna Assign Repo and Owner och låt Include Other Fields vara aktiverat.
- I Assign Repo and Owner ställer ni in tilldelningarna:
name till=ownermed value={{ $json.owner }}
name till=repomed value={{ $json.repo }} - Öppna Retrieve Recent Releases och ställ in Resource på
releaseoch Operation pågetAll. - Ställ in Limit på
2och sätt Owner till={{ $json.owner }}och Repository till={{ $json.repo }}.
Inloggningsuppgifter krävs: Anslut era githubOAuth2Api-inloggningsuppgifter i Retrieve Recent Releases.
Steg 3: Konfigurera tagg-derivering och versionsjämförelse
Beräkna taggen för föregående release och jämför versioner med GitHubs compare-API.
- Öppna Derive Previous Tags och behåll den befintliga JavaScript-koden som väljer publicerade releaser och returnerar
currentTagochpreviousTag. - Öppna Compare Release Versions och ställ in URL på
=https://api.github.com/repos/{{ $json.owner }}/{{ $json.repo }}/compare/{{ $json.previousTag }}...{{ $json.currentTag }}. - Aktivera Send Headers och sätt headern Accept till
application/vnd.github+json. - Ställ in Authentication på
predefinedCredentialTypeoch Credential Type pågithubOAuth2Api. - Öppna Validate Change Set och behåll JavaScript-koden som förenklar commits och filer, samtidigt som den hämtar taggar från Derive Previous Tags.
Inloggningsuppgifter krävs: Anslut era githubOAuth2Api-inloggningsuppgifter i Compare Release Versions.
Steg 4: Konfigurera AI-sammanfattning och skapande av release notes
Använd två AI-agenter för att sammanfatta ändringar och generera välformaterade release notes.
- Öppna Summarize Release Changes och behåll Prompt Type inställt på
definemed den befintliga prompttexten. - Bekräfta att prompten i Summarize Release Changes refererar till
{{ $json.previousTag }},{{ $json.currentTag }}och{{ JSON.stringify($json) }}. - Öppna Compose Release Notes och behåll Prompt Type inställt på
definemed de befintliga formateringsreglerna. - Bekräfta att prompten i Compose Release Notes använder
{{ JSON.stringify($json) }}och refererar till{{ $('Derive Previous Tags').item.json.currentTag }}för titeln. - Verifiera att Primary Chat Model är ansluten som språkmodell för Summarize Release Changes, och att Secondary Chat Model är ansluten som språkmodell för Compose Release Notes.
Inloggningsuppgifter krävs: Anslut era openRouterApi-inloggningsuppgifter i Secondary Chat Model.
Steg 5: Dokumentera workflow-kontexten
Se till att dokumentation och workflow-kontext är lättillgänglig för förvaltare.
- Granska Flowpast Branding och behåll innehållet som en referensbanner för workflowet.
Steg 6: Testa och aktivera ert workflow
Kör ett komplett test för att säkerställa att release-detektering, jämförelse och AI-utdata fungerar hela vägen.
- I n8n klickar ni på Execute Workflow för att testa med en payload från en nylig GitHub release-händelse.
- Verifiera att Compare Release Versions returnerar commit- och fildata, och att Validate Change Set ger ut
hasChangesoch förenklade listor. - Bekräfta att Summarize Release Changes ger ut Markdown-sektioner och att Compose Release Notes returnerar slutligt formaterade release notes.
- När testet lyckas växlar ni workflowet till Active för att aktivera användning i produktion.
Vanliga fallgropar
- GitHub OAuth-autentiseringsuppgifter kan löpa ut eller sakna repo-åtkomst. Om noder börjar fallera, kontrollera GitHub-uppgiften i n8n och bekräfta att token har behörighet att läsa releaser.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er varumärkeston tidigt, annars kommer du att redigera output i all evighet.
Vanliga frågor
Cirka 20 minuter om dina GitHub- och OpenRouter-uppgifter är klara.
Nej. Du väljer främst autentiseringsuppgifter och justerar ett par fält. Workflowets kodnoder är redan förkonfigurerade i mallen.
Ja. n8n har ett gratis alternativ för self-hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med OpenRouter API-användning, som beror på vilken modell du väljer.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är det bästa stället att lägga fem minuter. Uppdatera instruktionerna i AI-agentnoderna ”Summarize Release Changes” och ”Compose Release Notes” så att de matchar dina rubriker (Added/Changed/Fixed/Breaking), längd och ton. Du kan också justera formateringen i steget ”Edit Fields (Set)” så att slutresultatet inkluderar versionsnummer, releasedatum eller länkar. Vill du ha djupare analys kan du ändra jämförelselogiken så att PR-titlar eller labels ingår i prompt-konteksten.
Oftast beror det på en utgången eller återkallad GitHub OAuth-token i n8n. Återanslut GitHub-uppgiften och bekräfta sedan att workflowet pekar på rätt owner/repo i steget ”Assign Repo and Owner”. Om repot ligger i en organisation kan saknad org-åtkomst också blockera läsning av releaser. Rate limits är mer sällsynta här, men de kan dyka upp om du triggar många releaser över många repositories.
I praktiken kan den hantera så många som dina körgränser i n8n och GitHub API-gränser tillåter.
Ofta, ja, särskilt om du bryr dig om kontroll och konsekvens. Det här workflowet använder jämförelselogik, validering och AI-promptning i flera steg, vilket går att göra i Zapier/Make men blir snabbt klumpigt (och kan bli dyrt när du lägger till fler steg). n8n ger dig också möjligheten att köra self-hosted, vilket är praktiskt när releasevolymen spikar eller när du kör automationer över många repositories. Men om du bara behöver ”ny release → skicka meddelande” är Zapier eller Make enklare. Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på din volym och ditt team.
När det här väl rullar slutar release notes vara ett litet skrivprojekt och blir en snabb granskning. Sätt upp det en gång och skeppa med betydligt mer trygghet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.