はじめに
本記事では、n8n + Pinecone + jira を組み合わせて、Jiraのタスクを自動で解析できる仕組みを紹介します。Jira以外のプロジェクト管理ツールにも対応しているため、気になる方は以下から対応しているか検索してみてください。(Gitlab / Notion / Asana等にも対応しています。)
全体フロー
処理の全体フローは以下の通りです。
- 特定ユーザーに割り当てられたJiraチケット一覧を読み込む
- Jiraチケットのコメント読み込み
- 生成AI処理
- Jiraチケットを更新する(コメント、担当者)
各要素の解説
1. 特定ユーザーに割り当てられたJiraチケット一覧を読み込む
特定ユーザーに割り当てられたチケット一覧(処理対象のチケット一覧)をJQLを利用して取得しています。

上記画像では「assignee = currentUser()」を設定しています。JQLの動作を確認したい方はJiraの検索機能を活用してください。
2. Jiraチケットのコメント読み込み
各チケットのコメントデータを読み込みます。

読み込んだコメントは扱いづらいためCode2ノードで整形します。また、担当者を変更するため最後にコメントしたユーザーID(アカウントID)を取得します。
let comments = '';
let accountId = '';
for (const item of $input.all()) {
comments += '## ' + item.json.updated
comments += '\n'
comments += item.json.body.content[0].content[0].text
comments += '\n'
comments += '\n'
accountId = item.json.updateAuthor.accountId
}
return {
'comments': comments,
'accountId': accountId
};
3. 生成AI処理
いよいよ生成AIでの処理です。以下がAI Agentノードの設定となります。(プロンプトはサンプルです。)

ナレッジベースのPinecone Vector Storeの設定は以下です。ナレッジベースにはJiraの過去の完了済みチケット情報が含まれています。

Pinecone Vector StoreノードにはEmbeddings OpenAIノードが接続されます。こちらのノードに設定する次元数ですが、PineconeのIndex作成時の設定と合わせる必要があります。今回のPineconeのIndex設定は以下です。
この場合Embeddings OpenAIノードは以下のように設定します。
ナレッジベースに利用しているPineconeは外部サービスとなります。オンプレミスで対応したい場合はDifyに置き換えるアプローチを検討してください。
4. Jiraチケットを更新する(コメント、担当者)
ここではAI Agentから出てきたメッセージをJiraに反映し担当者を変えます。こうすることで次回ワークフローが実行されても担当者が変わっているため処理対象になりません。
以下がコメントの更新です。AI Agentノードから出力された内容をCommentに設定しています。
最後に担当者を変更します。最終コメントしたユーザーに設定します。こちらについてはCode2ノードでコメント解析する時に、ユーザーIDを取得しているデータを利用します。
動作
Jiraでタスクが割り当てられた状態にします。
この状態でワークフローを実行すると、過去の知見を使って解析した後に担当者を変更します。
今後
今回はJira+生成AI+Pineconeを組み合わせることで、過去のチケット知見を持った回答を生み出すことができました。この発展系として、Claude Code + Gitの組み合わせることで最新のコードではどのようになっているか?の回答も可能となるかもしれません。
また、このようなツールは精度の高い回答が出せるかも重要ですが、それと同様にどこまで簡単に使えるか?どこまで手順を変えずに使えるか?も重要になります。今回は担当者をトリガーに動かしていますが、担当者に関係なくコメントしてくれるというアプローチもいいかもしれません。