Automation Pipeline: Auto-Generate Release Notes Drafts from JIRA Sprints

Tools:n8n + JIRA API + Claude API
Time to build:1.5-2 hours
Difficulty:Intermediate-Advanced
Prerequisites:Comfortable using Claude for release notes generation — see Level 3 guide: "Building a Fast Release Notes Workflow with Claude"

What This Builds

Every time a sprint closes in JIRA, this automation fetches all completed tickets, sends them to Claude for release notes generation, and posts the draft to a Confluence page — all without you lifting a finger. Instead of spending 2 hours on release notes after every sprint, you spend 15 minutes reviewing and publishing a draft that's already 80% done.

Prerequisites

  • Comfortable using Claude for release notes generation (Level 3: Building a Fast Release Notes Workflow with Claude)
  • JIRA Cloud account (API access required — need an API token)
  • n8n account (free self-hosted OR n8n Cloud starting at $20/month)
  • Claude API access (Anthropic account with API key — pay-as-you-go, ~$0.02 per sprint run)
  • Confluence access (for posting the draft)
  • Cost: n8n Cloud $20/month + Claude API ~$0.50-2.00/month (depending on sprint size)

The Concept

This automation is like hiring a documentation assistant who monitors JIRA, does the release notes first draft the moment the sprint closes, and drops it on your desk ready to review. You set it up once; it runs automatically forever.

The workflow chain is: JIRA sprint closes → n8n detects the sprint status change → n8n fetches completed ticket data → sends to Claude API with your release notes prompt → Claude returns formatted draft → n8n posts draft to Confluence → you get a Slack notification that it's ready.


Build It Step by Step

Part 1: Set Up n8n

Option A: n8n Cloud (easier)

  1. Go to n8n.io → Sign up for cloud account
  2. You'll get a hosted n8n instance at yourname.n8n.cloud
  3. No server management required

Option B: Self-hosted n8n (free but requires a server)

  1. If you have a home server or VPS, run: npx n8n
  2. Access at localhost:5678

For this guide, we'll use n8n Cloud.

Part 2: Create API Credentials

JIRA API Token:

  1. Go to id.atlassian.com/manage-profile/security/api-tokens
  2. Click "Create API token" → name it "n8n automation"
  3. Copy the token — you won't see it again
  4. Your JIRA API base URL is https://yourcompany.atlassian.net/rest/api/3

Claude API Key:

  1. Go to console.anthropic.com
  2. Create account and add payment method (pay-as-you-go)
  3. Go to API Keys → Create Key → name it "release-notes-automation"
  4. Copy the key

Confluence API Token: Same as JIRA — they share the same Atlassian account API token.

Part 3: Build the n8n Workflow

  1. In n8n, click New Workflow
  2. Name it: "Release Notes Generator"
  3. Add nodes in this sequence:

Node 1: Schedule Trigger

  • Click the "+" button → add "Schedule Trigger"
  • Set to run every Friday at 5pm (adjust to match your sprint cadence)
  • This isn't ideal (you want it on sprint close), but it's the simplest starting point

Node 2: JIRA - Get Completed Tickets

  • Add "HTTP Request" node
  • Method: GET
  • URL: https://yourcompany.atlassian.net/rest/api/3/search
  • Authentication: Basic Auth (your email + JIRA API token)
  • Query Parameters:
    • jql: project = YOURPROJECT AND sprint in openSprints() AND status = Done AND updated >= -7d
    • fields: summary,description,issuetype,status
    • maxResults: 100

Node 3: Format Tickets

  • Add "Code" node
  • This transforms JIRA's JSON response into a clean ticket list:
Copy and paste this
const tickets = $input.first().json.issues;
const ticketList = tickets
  .map(t => `${t.key}: ${t.fields.summary}`)
  .join('\n');
return [{ json: { ticketList } }];

Node 4: Claude API - Generate Release Notes

  • Add "HTTP Request" node
  • Method: POST
  • URL: https://api.anthropic.com/v1/messages
  • Headers:
    • x-api-key: YOUR_CLAUDE_API_KEY
    • anthropic-version: 2023-06-01
    • Content-Type: application/json
  • Body (JSON):
Copy and paste this
{
  "model": "claude-3-haiku-20240307",
  "max_tokens": 2000,
  "messages": [{
    "role": "user",
    "content": "Convert these JIRA tickets into customer-facing release notes. Group by: New Features, Improvements, Bug Fixes. Plain language, no jargon. Skip internal infrastructure tickets. Start each item with 'You can now...' (features) or 'Fixed an issue where...' (bugs).\n\nTickets:\n{{ $json.ticketList }}"
  }]
}

Node 5: Create Confluence Page

  • Add "HTTP Request" node
  • Method: POST
  • URL: https://yourcompany.atlassian.net/wiki/rest/api/content
  • Authentication: Basic Auth (email + JIRA API token — same token works for Confluence)
  • Body (JSON):
Copy and paste this
{
  "type": "page",
  "title": "Release Notes Draft - {{ new Date().toISOString().split('T')[0] }}",
  "space": { "key": "YOURSPACE" },
  "body": {
    "storage": {
      "value": "<p>⚠️ DRAFT — Please review and edit before publishing</p><p>{{ $json.content[0].text }}</p>",
      "representation": "storage"
    }
  }
}

Node 6: Slack Notification (optional)

  • Add "Slack" node
  • Channel: your team channel
  • Message: "Release notes draft ready for review: [link to Confluence page]"
  1. Click Save and then Test Workflow to verify each step

Part 4: Test and Refine

  1. Click "Execute Workflow" to run manually
  2. Check the Confluence page it creates — is the draft useful?
  3. Common fixes:
    • If Claude includes internal tickets: add "Skip tickets that contain: INFRA, TECH, INTERNAL in their title" to the prompt
    • If sections are wrong: add "If a ticket doesn't clearly fit New Features, Improvements, or Bug Fixes, put it in Improvements"
    • If language is too casual: add "Professional tone, consistent with enterprise software documentation"

Real Example: Sprint 47 Release Notes

Setup: n8n workflow runs every Friday at 5pm. Your JIRA project is "ACME".

What happens:

  • n8n fetches 32 completed JIRA tickets from the sprint
  • Formats them as a clean list
  • Sends to Claude with your release notes prompt
  • Claude returns a 400-word draft with 18 customer-facing items

Input (JIRA tickets, abbreviated):

Copy and paste this
ACME-234: Fix null pointer on login when session > 24h
ACME-235: Add PDF export to reports screen
ACME-238: DB migration for user preferences table
ACME-241: Update error messages in auth flow

Output (Claude's draft):

Copy and paste this
## What's New
- You can now export reports as PDF directly from the Reports screen.

## Improvements
- Error messages during login now provide clearer guidance when authentication fails.

## Bug Fixes
- Fixed an issue where users were unexpectedly logged out after extended sessions lasting more than 24 hours.

Time saved: 1.5 hours per sprint → 15 minutes for review and editing.


What to Do When It Breaks

  • JIRA API returns no tickets → Check your JQL query. Test it in JIRA's issue search first. Make sure your sprint name or project key is correct.
  • Claude returns an error → Check your API key and that you have credits. Claude API errors include a message explaining the issue.
  • Confluence page creation fails → Verify the space key is correct (it's the short code in your Confluence URL, e.g., "DOCS" in /wiki/spaces/DOCS/).
  • Workflow doesn't trigger → Check n8n's execution log for errors. Free n8n Cloud accounts have execution limits.

Variations

Simpler version: Skip the Confluence posting — have Claude's output go to a Slack message instead. Much easier to set up; you copy-paste from Slack into your docs platform.

Extended version: Add a Google Sheets node between Claude and Confluence that logs each release's notes to a historical record. After 6 months, you have a searchable release history.

What to Do Next

  • This week: Build the workflow and run it manually on your last sprint's tickets
  • This month: Let it run for 2-3 sprints and refine the Claude prompt based on what you edit
  • Advanced: Add a webhook trigger in JIRA to fire when a sprint is marked complete, so the workflow runs immediately rather than on a schedule

Advanced guide for technical writer professionals. These techniques use more sophisticated AI features that may require paid subscriptions.