リリースノートジェネレーター

中級

これはDevOps, AI Summarization分野の自動化ワークフローで、10個のノードを含みます。主にCode, Jira, Merge, EmailSend, GithubTriggerなどのノードを使用。 GitHub、JIRA、Google Geminiを使って専門のなリリースノートを生成し、メールで送信

前提条件
  • GitHub Personal Access Token
  • Google Gemini API Key

カテゴリー

ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "Your_ID",
  "meta": {
    "instanceId": "Your_ID",
    "templateCredsSetupCompleted": true
  },
  "name": "Release-note-generator",
  "tags": [],
  "nodes": [
    {
      "id": "Your_ID",
      "name": "Github Trigger",
      "type": "n8n-nodes-base.githubTrigger",
      "position": [
        -440,
        -80
      ],
      "webhookId": "Your_ID",
      "parameters": {
        "owner": {
          "__rl": true,
          "mode": "name"
        },
        "events": [
          "push"
        ],
        "options": {
          "insecureSSL": false
        },
        "repository": {
          "__rl": true,
          "mode": "list",
          "cachedResultUrl": "Your_Github_URL",
          "cachedResultName": "Your_Repository_Name"
        }
      },
      "credentials": {
        "githubApi": {
          "id": "Your_ID",
          "name": "GitHub account"
        }
      },
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "Your_ID",
      "name": "コード",
      "type": "n8n-nodes-base.code",
      "position": [
        -220,
        -80
      ],
      "parameters": {
        "jsCode": "const inputData = $input.all();\nconst commits = inputData[0].json.body.commits;\n\nreturn commits.map(commit => {\n  const message = commit.message;\n  const timestamp = commit.timestamp;\n\n  // Match something like \"ABC-123\", case-insensitive, from the beginning\n  const match = message.match(/([A-Z]+-\\d+)/i);\n\n  const jiraId = match ? match[0].toUpperCase() : null;\n\n  return {\n    json: {\n      message,\n      timestamp,\n      jira_id: jiraId\n    }\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "Your_ID",
      "name": "Basic LLM チェーン",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        480,
        -160
      ],
      "parameters": {
        "text": "=",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "type": "HumanMessagePromptTemplate",
              "message": "=You are a professional technical release manager generating production release notes for CxOs and clients.\n\nGenerate a complete release note in **HTML format**, not plain text. The content is based on the following JIRA items, each having `jira_id`, `jira_summary`, `jira_description`, and `message`.\n\nOutput structure (as HTML):\n\n1. Title and Metadata\n   - H2 tag: \"Production Deployment – [Release Date]\"\n   - Bold lines: Version, Environment, Deployment Date\n\n2. Overview\n   - Short paragraph explaining the goal of this deployment\n\n3. Key Changes\n   - Bullet list (<ul>) with one <li> per JIRA item\n   - For each bullet: Summarize `jira_description` + `message` into a business-friendly sentence\n\nRules:\n- Output as clean HTML only\n- Do not wrap in a JSON object or Markdown\n- Use simple inline styles for readability\n\nHere is the input data:\n{{ JSON.stringify($json.items, null, 2) }}\n"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "Your_ID",
      "name": "Google Gemini チャットモデル",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        480,
        40
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.5-pro"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "Your_ID",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "Your_ID",
      "name": "Send email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        860,
        -160
      ],
      "webhookId": "Your_ID",
      "parameters": {
        "html": "={{ $json.output.releasenote }}",
        "options": {},
        "subject": "Your_company_name | Location, Country \nYou’re receiving this email because you are subscribed to release notifications.",
        "toEmail": "Your_receiver_email",
        "fromEmail": "Your_sender_email"
      },
      "credentials": {
        "smtp": {
          "id": "Your_ID",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1,
      "alwaysOutputData": false
    },
    {
      "id": "Your_ID",
      "name": "Get an issue",
      "type": "n8n-nodes-base.jira",
      "position": [
        -20,
        -320
      ],
      "parameters": {
        "issueKey": "={{ $json.jira_id }}",
        "operation": "get",
        "additionalFields": {}
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "Your_ID",
          "name": "Jira SW Cloud account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "Your_ID",
      "name": "コード2",
      "type": "n8n-nodes-base.code",
      "position": [
        140,
        -320
      ],
      "parameters": {
        "jsCode": "// Get all incoming items from the JIRA node.\nconst allItems = $input.all();\n\n// Use .map() to loop through each item and transform it.\nreturn allItems.map(item => {\n  // The full JIRA issue data for the current item in the loop\n  const issue = item.json;\n\n  // Extract the specific fields you need for this issue.\n  // Use optional chaining (?.) to prevent errors if a field is missing.\n  const jiraId = issue.key; // The JIRA ID (e.g., \"MS-6\")\n  const summary = issue.fields?.summary;\n  const description = issue.fields?.description;\n\n  // Return a new, clean object for this specific issue.\n  return {\n    json: {\n      jira_id: jiraId, // Added as requested\n      jira_summary: summary,\n      jira_description: description\n    }\n  };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "Your_ID",
      "name": "マージ",
      "type": "n8n-nodes-base.merge",
      "position": [
        60,
        20
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "Your_ID",
      "name": "コード3",
      "type": "n8n-nodes-base.code",
      "position": [
        260,
        20
      ],
      "parameters": {
        "jsCode": "// This will take all input items from previous loop and combine into one array\nreturn [{\n  json: {\n    items: items.map(i => i.json)\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "Your_ID",
      "name": "構造化出力パーサー1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        640,
        40
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"releasenote\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": "Your_ID",
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "saveExecutionProgress": true,
    "timeSavedPerExecution": 1,
    "saveDataErrorExecution": "all",
    "saveDataSuccessExecution": "all"
  },
  "versionId": "Your_ID",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Your_ID",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Code2": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code3": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Code3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Your_ID": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Your_ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

中級 - DevOps, AI要約

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

リアルタイム - GeminiとCreatomateを使ってウイルスのAI動画制作と投稿を自動化
AI動画制作とマルチプラットフォーム公開にはGeminiとCreatomateを活用しましょう
Set
Code
Wait
+
Set
Code
Wait
47 ノードIntuz
コンテンツ作成
Apify、Apollo.io、Google Geminiを使ったLinkedIn求人情報のAI駆動リード生成の自動化
LinkedIn求人検索からの自動化リード生成:Apify、Apollo.io、Google Gemini
If
Code
Limit
+
If
Code
Limit
47 ノードIntuz
リード獲得
サイバーセキュリティインテリジェンス:Gemini AIを使って毎日のサマリーとトレンド生成
サイバーセキュリティ インテリジェンス:Gemini AI を活用して日次サマリーとウイルスの話題を作成
Set
Code
Merge
+
Set
Code
Merge
39 ノードTom
AI要約
LinkedIn求人ボランティア、Apify、Apollo.io、そしてGoogle Geminiを使用したセールス拡張の自動化
LinkedInの求人シグナルを使い、ApifyとGoogle Geminiでパーソナライズされたセールス拡大を作成
If
Code
Limit
+
If
Code
Limit
47 ノードIntuz
ワークフロー19
Gitコミットコマンドを使ったGitHub PRとJIRAの更新を自動化
If
Code
Jira
+
If
Code
Jira
21 ノードIntuz
DevOps
01 AIメディアバイヤーでFacebook広告のパフォーマンスを分析し、インサイトをGoogle Sheetsへ送信
Gemini AIを使用してFacebook広告を分析し、インサイトをGoogle Sheetsに送信
If
Set
Code
+
If
Set
Code
34 ノードJJ Tham
市場調査
ワークフロー情報
難易度
中級
ノード数10
カテゴリー2
ノードタイプ8
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

作成者
Intuz

Intuz

@intuz

A boutique tech consulting company, helping businesses with custom AI/ML, Workflow Automations, and software development.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34