Media > AI活用ユースケース > カスタマーサポート > SaaS 企業のサポートが製品の更新の記録とヘルプセンターの記事を n8n のエージェントで突き合わせ、古くなった記事と食い違う箇所を見つけて直しの下書きを作る

SaaS 企業のサポートが製品の更新の記録とヘルプセンターの記事を n8n のエージェントで突き合わせ、古くなった記事と食い違う箇所を見つけて直しの下書きを作る

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

製品のリリースノートが公開されたら、n8n のエージェントが変更の項目ごとにヘルプセンターの記事を探し、変更と食い違う文を引用して直しの案を書きます。記事の担当は、探す作業から、候補の一覧を見て直すかを決める作業に移ります。

サマリー
生成AI
ChatGPT/Claude
連携・自動化
Make/n8n/Power Automate/Zapier
対象業界
IT・SaaS/人材/金融
対象部門
カスタマーサポート
対象業務
内容確認・チェック/書類作成
主な課題
情報が見つからない/書類作成に時間がかかる/期限・対応漏れが起きる
AIで行う処理
エージェント
主な効果
品質標準化/対応スピード向上/工数削減
導入難易度
★★★★☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
90h/月
AI導入後
30h/月
想定削減
67%
年間削減
720h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. ナレッジの担当が、リリースノートの公開の知らせを Slack で見る
  2. 変更の項目を1つずつ読み、影響しそうな画面の名前・設定の名前・ボタンの名前を書き出す
  3. ヘルプセンターの検索で、書き出した言葉で記事を探す
  4. 当たった記事を開き、変更と食い違う文があるかを読む
  5. 食い違う記事と文を一覧にする
  6. 直しの文を書き、記事を直して公開する
  7. 開発の担当に、変更の中身で分からないところを聞く
導入後(After)
  1. 自動リリースノートが GitHub で公開されると、n8n の GitHub Trigger が動く
  2. 自動下書きと先行公開のリリースを除き、本文を変更の項目ごとに分ける
  3. 自動変更の項目ごとに AI Agent が動き、探す言葉を決めてヘルプセンターを検索する
  4. 自動当たった記事の本文を、毎晩取っておいた記事の写しから読む
  5. 自動変更と食い違う文を原文のまま引用し、直しの案と、確かめが要る点を書く
  6. 自動Code ノードが、引用が記事の本文にそのままあるかを照らす
  7. 自動候補を記事の担当ごとの一覧に書き、Slack で知らせる
  8. 人担当が候補を見て、直すかを決め、Zendesk の画面で記事を直して公開する
  9. 人担当が、エージェントが探した言葉の一覧を見て、足りない言葉があれば探し直す
各工程の詳しい説明を読む
  1. ナレッジの担当が、リリースノートの公開の知らせを Slack で見る
  2. 変更の項目を1つずつ読み、影響しそうな画面の名前・設定の名前・ボタンの名前を書き出す
  3. ヘルプセンターの検索で、書き出した言葉で記事を探す
  4. 当たった記事を開き、変更と食い違う文があるかを読む
  5. 食い違う記事と文を一覧にする
  6. 直しの文を書き、記事を直して公開する
  7. 開発の担当に、変更の中身で分からないところを聞く

(a)探しきれない。 「休暇の設定」が「休暇のルール」に変わったとき、記事には「休暇の設定画面」「休暇設定」「[設定]>[休暇]」と、書いた人ごとに違う書き方で出てきます。 1つの言葉で探して当たらなかった記事は、そのまま古い記載が残ります。

(b)更新から直しまでが遅れる。 1回のリリースで10項目あると、1項目に90分かけて15時間です。月に5回のリリースがあれば、直しが次のリリースに追いつかれます。 その間に、お客様は古い記事を見て問い合わせてきます。

(c)担当によって探し方が違う。 ある担当は画面の名前で、別の担当はボタンの名前で探します。どの言葉で探したかが残らないので、漏れがあったときに、どこを探していなかったのかが分かりません。

(d)問い合わせで初めて気づく。 「記事のとおりに操作したらボタンが無い」というチケットが来て、古い記事が見つかります。見つかるのは、お客様が困った後です。

  1. 【自動】 リリースノートが GitHub で公開されると、n8n の GitHub Trigger が動く
  2. 【自動】 下書きと先行公開のリリースを除き、本文を変更の項目ごとに分ける
  3. 【自動】 変更の項目ごとに AI Agent が動き、探す言葉を決めてヘルプセンターを検索する
  4. 【自動】 当たった記事の本文を、毎晩取っておいた記事の写しから読む
  5. 【自動】 変更と食い違う文を原文のまま引用し、直しの案と、確かめが要る点を書く
  6. 【自動】 Code ノードが、引用が記事の本文にそのままあるかを照らす
  7. 【自動】 候補を記事の担当ごとの一覧に書き、Slack で知らせる
  8. 【人】 担当が候補を見て、直すかを決め、Zendesk の画面で記事を直して公開する
  9. 【人】 担当が、エージェントが探した言葉の一覧を見て、足りない言葉があれば探し直す

8番目と9番目が人の残る場所です。 担当は候補の一覧から始め、記事を探す時間がほとんど無くなります。

9番目は、漏れを見つけるための作業です。 エージェントが使った検索の言葉を一覧に残すので、担当は「この言葉では探していない」と気づけます。 探し方が人ごとに違うという問題が、言葉の一覧という形で見えるようになります。

02今回想定するシステム構成

構成図
GitHub(リリースノートを Releases に公開)
   ▼【トリガー】n8n GitHub Trigger(Release)
n8n のワークフロー
   ├──▶ IF … 下書き・先行公開を除く
   ├──▶ Code … 本文を変更の項目ごとに分ける
   ▼(変更の項目ごとに)
AI Agent(Tools Agent)
   │   チャットモデル:Anthropic Chat Model(Claude)
   │   ツール1:HTTP Request … Zendesk の記事の検索
   │   ツール2:Call n8n Workflow Tool … 記事の写しから本文を読む
   │   出力:Structured Output Parser(候補の一覧の JSON)
   ▼
Code ノード ── 引用が記事の本文にあるかを照らす
   ▼
候補の一覧(スプレッドシート)に書き、Slack で担当に知らせる
【担当が直すかを決め、Zendesk で記事を直す】

(別のワークフロー:毎晩、記事の更新分を取って記事の写しを更新する)
役割想定する製品代替候補
ワークフローn8n(GitHub Trigger、AI Agent、HTTP Request、Call n8n Workflow Tool、Code)Make、Zapier、Power Automate
生成AIClaude API(n8n の Anthropic Chat Model から呼ぶ)OpenAI API
ヘルプセンターZendesk(Help Center API で検索と記事の取得)Intercom
保管記事の写しと候補の一覧(スプレッドシート)PostgreSQL
通知Slackメール

新しく足すのは、2つのワークフローと、記事の写しと候補の一覧だけです。 n8n は別の業務で使っているものに足します。エージェントは Zendesk に書き込みません。 記事を直すのは担当で、Zendesk の画面から行います。

起点は n8n の GitHub Trigger です。 公式のページでは、対応するイベントに Release が含まれます。GitHub の公式のページでは、Release のイベントの created は下書きが保存されたとき、または下書きを経ずにリリースや先行公開が公開されたときに届くとされています。下書きの保存でも届くので、下書きと先行公開を IF で除きます。 GitHub の Releases の API の説明では、draft は下書き(未公開)か、prerelease は先行公開かを表す項目です。

エージェントは AI Agent です。 公式のページでは、エージェントの種類は Tools Agent に一本化されており、設定に Max Iterations(既定は10)、Return Intermediate Steps、Require Specific Output Format があります。出力の形を決めるときは、Structured Output Parser をつなぎます。

Zendesk の記事は、n8n の Zendesk ノードでは扱えません。 公式のページで、Zendesk ノードの対象はチケット・チケットの項目・ユーザー・組織で、ヘルプセンターの記事の操作はありません。 対応していない操作は、HTTP Request ノードに Zendesk の資格情報を使って API を直接呼ぶよう案内されています。そこで、検索は HTTP Request をエージェントのツールとしてつなぎ、記事の写しは別のワークフローで HTTP Request から取ります。

03どうやって実装するのか

Step1

処理の起点を決める

GitHub Trigger で、リリースノートのリポジトリの Release のイベントを受けます。 直後に IF ノードを置き、release.draft が false で、release.prerelease が false のときだけ先へ進めます。下書きの段階で記事を探し始めると、公開の前に変わった項目まで候補になります。

取りこぼしに備えて、週に1回の見直しも置きます。 Schedule Trigger で週に1回動かし、GitHub の Releases の API で直近7日のリリースを取って、候補の一覧に「処理済み」の記録が無いリリースだけを流し直します。 Webhook が届かなかった週があっても、ここで拾えます。

記事の写しは、別のワークフローで毎晩更新します。 Zendesk の Help Center API には、指定した時刻以降に更新された記事を返す incremental の記事の一覧があり、start_time に Unix の時刻を渡します。前の晩に取った時刻を覚えておき、その後に更新された記事だけを取り直します。

Step2

入力データを集める

データ中身取得元
リリースノートタグの名前、本文(Markdown)、公開の日時GitHub Trigger
変更の項目本文を箇条書きの行で分けた1項目ずつCode ノード
検索の結果記事のID・タイトル・URL・一致した部分の抜粋Zendesk の Search Articles(ツール1)
記事の本文記事のID・タイトル・セクション・本文(HTML を文字にしたもの)・最終更新の日時記事の写し(ツール2)
言い換えの一覧画面・設定の名前の新旧と、記事でよく使われる書き方スプレッドシート
記事の担当の一覧セクションごとの担当スプレッドシート

言い換えの一覧が、探しきれない問題への手当てです。 「休暇の設定」「休暇設定」「[設定]>[休暇]」を同じものとして並べた表で、エージェントのシステムメッセージに入れて、探す言葉を選ぶ手がかりにします。 一覧に足すのは担当で、エージェントが足すことはしません。

記事の写しを持つのは、本文を読むたびに Zendesk を呼ばないためです。 1つの変更で記事を10本読めば、1回のリリースで100回の呼び出しになります。写しから読めば、検索だけを Zendesk に向けられます。 写しは前の晩の状態なので、その日に直した記事は古い本文のまま読まれることを、担当の確かめの段階で考えに入れます。

Step3

データの取得方法を決める

検索は、Zendesk の Search Articles を HTTP Request のツールで呼びます。 公式のページでは、GET /api/v2/help_center/articles/search に query・category・section・label_names のどれか1つ以上が要り、既定で1ページに25本、最大で1,000件まで返るとされています。locale を渡さなければヘルプセンターの既定の言語で探します。この構成では locale=ja を固定で渡します。

検索の言葉は、エージェントに決めさせます。 n8n の $fromAI() を query の値に使うと、エージェントがその場で値を入れます。公式のページでは、$fromAI() は AI Agent につないだツールでだけ使えるとされ、キー・説明・型・既定の値を指定できます。

渡すもの値決めるのは
query{{ $fromAI('query', '探す言葉。画面・設定・ボタンの名前を1つ') }}エージェント
localeja固定
per_page25固定

検索の結果には、一致した部分の抜粋(snippet)が付きます。 抜粋だけで判断させず、記事の本文はツール2で読ませます。 抜粋は一致した言葉の前後だけで、手順の前後の流れが分からないからです。

本文は、Call n8n Workflow Tool で記事の写しを読むサブワークフローを呼びます。 公式のページでは、このツールは別のワークフローを動かして結果を受け取り、入力に $fromAI() を使えるとされています。記事のIDを入力にし、写しから本文を返します。本番でサブワークフローを公開していないと「Workflow is not active」の失敗が返り、その失敗がエージェントへの結果として返るため、長い出力の中で見落としやすいと書かれています。

Step4

AIへ渡す前に整形する

  1. リリースノートを項目に分ける … Code ノードで、本文の箇条書きの行(- や * で始まる行)を1項目ずつに分けます。見出し(「新機能」「改善」「不具合の修正」)は、項目の種類として行に添えます
  2. 影響の無い項目を外す … 「内部の処理の改善」「表示の速度の改善」のように、画面や操作に触れない項目は、種類と言葉で外します。外した項目も一覧に「対象外」として残します
  3. 記事の写しを文字にする … HTML のタグを外し、見出しと段落の区切りを改行で残します。画像は [画像:代替テキスト] に置き換え、画像があったことを本文に残します
  4. 言い換えの一覧を添える … 変更の項目に出てくる言葉が言い換えの一覧にあれば、その行をエージェントへの入力に添えます

3番目の画像の置き換えが、後で効きます。 手順の記事の多くは、画面の画像に「ここを押す」と描いてあります。文字の上では食い違いが無くても、画像が古い画面のままということがあります。 画像があった位置を残しておけば、エージェントが「この見出しの下に画像があり、確かめが要る」と書けます。

Step5

AIに処理させる

させるのは、1つの変更の項目について、影響する記事を探し、食い違う文を引用して、直しの案を書くことです。 探す言葉を変えながら何回探すかは、エージェントが決めます。

させること中身
探す言葉を決める変更の項目の画面・設定・ボタンの名前と、言い換えの一覧から
検索するツール1を、言葉を変えて複数回
本文を読む検索で当たった記事のうち、抜粋が変更に関係しそうなものをツール2で
食い違いを見つける変更の後の製品と合わない文を、原文のまま引用する
直しの案を書く引用した文を、変更に合わせて書き直した文
確かめが要る点を書く画像、変更の中身が曖昧な点、開発に聞くべき点
探した言葉を残す使った検索の言葉と、それぞれの当たった件数

探す言葉を残させるのが、人の確かめの土台です。 エージェントが「影響する記事は無し」と返したとき、どの言葉で探して無かったのかが分かれば、担当は足りない言葉だけを足して探し直せます。

させないこと理由
記事を直して公開する公開は担当が判断する。エージェントは書き込まない
記事が古いと結論する候補を挙げるまで。決めるのは担当
引用を言い換える照らせなくなる。原文のまま写す
変更の中身を補うリリースノートに無い仕様を推測で書かない
画像の中身を推測する画像は読まない。確かめが要ると書くだけ
Step6

指示内容を固定する

(システムメッセージ)
あなたは SaaS 企業のサポートのナレッジの担当を手伝う係です。
製品の変更の項目を1つ受け取り、その変更で古くなったヘルプセンターの記事を探し、
食い違う文を見つけて直しの案を書きます。

【使えるツール】
- search_articles:ヘルプセンターの記事を言葉で検索します。1回に1つの言葉で探してください。
- read_article:記事のIDを渡すと本文を返します。

【進め方】
1. 変更の項目から、画面・設定・ボタン・メニューの名前を書き出してください。
2. 【言い換えの一覧】に同じものの別の書き方があれば、それも探す言葉に加えてください。
3. 言葉を変えて search_articles を使ってください。新旧の両方の名前で探してください。
4. 抜粋が変更に関係しそうな記事だけ read_article で本文を読んでください。
5. 変更の後の製品と合わない文を見つけたら、記事の本文から一字一句そのまま引用してください。

【厳守事項】
- quote には記事の本文の文字列をそのまま写してください。言い換え・要約をしないでください。
- 変更の項目に書かれていない仕様を推測で書かないでください。
  分からない点は open_questions に書いてください。
- [画像:…]がある見出しの下で手順が変わる場合は、image_check を true にしてください。
  画像の中身を推測しないでください。
- 記事を直す・公開する操作はしないでください。
- 影響する記事が無いと判断した場合も、searched_terms に使った言葉と件数を必ず書いてください。

【言い換えの一覧】{alias_rows}

(ユーザーメッセージ)
リリース:{tag_name}({published_at})
変更の種類:{item_kind}
変更の項目:{item_text}

「新旧の両方の名前で探す」を書くのは、新しい名前だけで探すからです。 古い記事に書かれているのは古い名前で、変更の後の名前で探しても、直すべき記事は当たりません。 言い換えの一覧に新旧を並べておくと、この取りこぼしが減ります。

「影響が無い場合も言葉を書く」は、空の結果を確かめられるようにするためです。 何も返さないエージェントと、10の言葉で探して何も無かったエージェントは、出力が同じ「無し」でも意味が違います。

Step7

出力形式を固定する

Structured Output Parser に次の形の JSON の例を渡します。 公式のページでは、JSON の例から作るスキーマはすべての項目を必須として扱い、$ref を使った参照には対応していないとされています。入れ子は1段にとどめます。

{
  "release": "v5.12.0",
  "item_text": "有休の付与の設定を『休暇の設定』から『休暇のルール』に移動",
  "searched_terms": [
    { "term": "休暇の設定", "hits": 14 },
    { "term": "休暇設定", "hits": 6 }
  ],
  "candidates": [
    {
      "article_id": 0,
      "title": "",
      "quote": "",
      "reason": "",
      "suggested_text": "",
      "image_check": false
    }
  ],
  "open_questions": [""]
}

JSON で受けるのは、Code ノードで引用を照らし、候補を記事の担当ごとに分けるためです。 自由文で返されると、どの部分が引用でどの部分が直しの案かを機械で分けられません。

Code ノードの照らし方は単純です。 記事の写しの本文(タグを外したもの)に、quote の文字列がそのまま含まれるかを見ます。空白と改行の違いだけは揃えてから比べます。

照らした結果一覧での扱い
本文に含まれる照合済 として担当の一覧に載せる
含まれない引用不一致 として別の欄に載せる。直しの案は表示しない
記事の写しに無い(IDが不正)記事なし として外す

引用不一致の候補に直しの案を出さないのは、誤った前提の案だからです。 記事に無い文を「古い」と言っている案を担当が読むと、直す必要の無い記事を直しかねません。

Step8

システムへ連携する

つなぎ先方式内容
GitHubn8n GitHub Trigger(Release)リリースノートの公開で動く
GitHubHTTP Request(Releases の API)週1回の見直しで直近のリリースを取る
ZendeskHTTP Request(Search Articles)をツールとしてエージェントが記事を検索する
ZendeskHTTP Request(incremental の記事の一覧)毎晩、記事の写しを更新する
記事の写しCall n8n Workflow Tool → サブワークフローエージェントが本文を読む
Claude APIAnthropic Chat Modelエージェントのチャットモデル
候補の一覧スプレッドシートへの書き込み照らした候補を担当ごとに並べる
Slackメッセージの送信担当に候補の件数と一覧へのリンクを知らせる

Zendesk には読むだけでつなぎます。 資格情報は、ヘルプセンターの記事を読める権限のものを使います。記事を書き換えられる管理者の資格情報をエージェントのツールに渡さないでください。 エージェントがツールの使い方を誤っても、書き込みが起きない形にしておきます。

Max Iterations は、既定の10から変更の大きさで決めます。 1つの変更で、言葉を4つ探し、記事を6本読めば10回に達します。大きな変更で探し足りないまま終わるなら、15から20に上げ、それ以上は項目を分けます。 回数を増やすほど、1項目あたりの費用と時間が増えます。

Step9

人が確認する

記事の担当が、候補の一覧の 照合済 の行を見ます。

  1. 引用と直しの案を読む … 記事を Zendesk の画面で開き、引用の前後を読みます。本当に古いかは、変更の後の製品の画面で確かめます
  2. image_check の行は画像を見る … 画像が古い画面なら、撮り直します
  3. open_questions を開発に聞く … 変更の中身が曖昧な点は、リリースノートを書いた担当に聞きます
  4. 探した言葉を見る … 言い換えの一覧に無い書き方を思いついたら、一覧に足し、その言葉で探し直します
  5. 直して公開する … 直しの案は叩き台です。記事の文体に合わせて担当が書き、公開します

4番目を省かないでください。 エージェントが当てられなかった記事は、候補の一覧にそもそも出てきません。 出てきた候補を確かめるだけでは、漏れは減りません。

直したら、候補の一覧に「直した」「直さない(理由)」を残します。 直さない理由が「エージェントの誤り」なら、その種類も書きます。

Step10

例外に対処する

起きること対応
Webhook が届かない週1回の見直しで、処理済みの記録が無いリリースを流し直す
リリースノートが箇条書きでない項目に分けられず、本文全体を1項目として扱い、担当に知らせる
検索の結果が1,000件を超える言葉一般的すぎる言葉。エージェントに別の言葉を選ばせ、件数を searched_terms に残す
サブワークフローが未公開で本文が読めない「Workflow is not active」がエージェントに返る。候補が0件で本文を読んだ記録も0なら失敗として扱う
Max Iterations に達して終わる途中までの結果を一覧に載せ、「途中」の印を付ける
引用が本文に無い引用不一致。直しの案を出さない
記事の写しが古い(その日に直した記事)担当が Zendesk の画面で今の本文を見て判断する
画像だけで手順が書かれた記事image_check。文字からは判断できないと担当に伝える
変更の中身が曖昧open_questions に書かせ、開発に聞く

4行目を、機械で見分けられるようにしておきます。 サブワークフローが失敗すると、エージェントは「記事を読めませんでした」と書くか、何も書かずに「影響なし」と返すことがあります。Return Intermediate Steps を有効にし、本文を読むツールを1回も成功させずに「影響なし」と返した結果は、失敗として担当に回します。

Step11

記録を残す

  • リリースのタグ・公開の日時と、変更の項目ごとの処理の日時
  • エージェントの途中の手順(Return Intermediate Steps):使った検索の言葉、読んだ記事のID
  • 出力の JSON と、Code ノードの照らした結果
  • 担当の判断 … 直した・直さない(理由)、エージェントの誤りの種類
  • 言い換えの一覧に足した行と、足した日
  • 記事の写しを更新した時刻(incremental の start_time に使った値)

2つ目の途中の手順が、漏れを調べるときの材料です。 お客様の問い合わせで古い記事が見つかったとき、その記事がエージェントの検索に当たっていたのか、当たったのに読まれなかったのか、読まれたのに候補にならなかったのかを、ここで切り分けます。

04実装レベルの3段階

最小構成:手元のAIサービスに変更と記事を貼り、食い違う文を引用させる / 1つの変更と数本の記事の突き合わせ
半自動化:n8n でリリースの公開を受け、エージェントが検索と本文の読み取りをし、引用を照らして候補の一覧を作る / 探す・読む・引用する・直しの案まで
本格構成:上記+お客様のチケットで「記事のとおりにできない」と来たものを候補の一覧と突き合わせ、漏れた記事を言い換えの一覧に戻す / 漏れの発見と言い換えの一覧の育成まで

本記事の想定は半自動化です。 探す作業はエージェントに任せ、直すかの判断と公開は担当に残します。 本格構成で足すのは、漏れの側からの見直しです。 問い合わせで見つかった古い記事が、なぜ候補に出なかったのかを途中の手順で調べ、足りなかった言い換えを一覧に戻します。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
60 件
1件あたり現在時間
90 分
1件あたり導入後時間
30 分
現在  60件 × 90分 ÷ 60 = 90 時間/月
導入後 60件 × 30分 ÷ 60 = 30 時間/月
月間削減時間
60h
削減率
67%
年間削減時間
720h
年間金額換算(時間単価4,500円)
324万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 毎月何度も製品を更新し、リリースノートを GitHub の Releases などに書いている SaaS 企業で、Zendesk のヘルプセンターに数百本の記事を持ち、サポートのナレッジの担当が更新のたびに影響する記事を検索して直している場合。画面の名前や設定の場所が変わったのに記事が直っておらず、お客様から「記事のとおりにできない」という問い合わせが来ている場合。n8n をすでに使っているか、自社で運用できる場合。
向いていない
  1. ヘルプセンターの記事が数十本で、担当が全部の中身を覚えている場合。リリースノートを書いておらず、更新の中身が開発のチケットにしか無い場合。記事の大半が画面の画像と動画で、本文の文字がほとんど無い場合。なお、記事をどう直すか、いつ公開するかの判断と、公開の操作は記事の担当が行うもので、この構成は代替しません。

07最小構成で試す方法

  1. 過去3か月のリリースノートから、画面や設定の名前が変わった項目を10個選ぶ
  2. その10個について、当時直した記事を書き出しておく(問い合わせで後から見つかった記事も含める)
  3. 手元のAIサービスの画面に、1つの変更の項目と、当時の記事の本文を5本ほど貼り付ける
  4. 「この変更で古くなった文を、記事から一字一句そのまま引用し、直しの案を書いてください」と指示する
  5. 引用が本文にそのままあるか、当時直した箇所と合うかを見る

この段階では、探す作業は人がやります。 確かめたいのは、記事が渡されれば、食い違う文を原文のまま引用できるかです。

出てきた内容判断
当時直した箇所を引用できたエージェントに探させる段階に進む
引用を言い換えて返す指示を強め、Code ノードで照らす前提にする。構成は有効
変更に無い仕様を書く曖昧な点を open_questions に分けさせる
画像の中の古い画面に気づけない画像の置き換えの前処理を足す

08実装時につまずきやすいポイント

問題対策
下書きの保存でワークフローが動くcreated は下書きの保存でも届く。IF で draft と prerelease を除く
新しい名前だけで探して古い記事が当たらない新旧の両方で探すよう指示し、言い換えの一覧を渡す
引用を言い換えて返すCode ノードで照らし、不一致は直しの案を出さない
サブワークフローの失敗に気づかない本番では公開が要る。途中の手順で本文を読んだ記録を確かめる
Max Iterations の既定の10で探し足りない変更の大きさで上げる。大きな変更は項目を分ける
Structured Output Parser でスキーマが通らない$ref を使わない。入れ子を浅くする
一般的な言葉で検索の結果が多すぎる1,000件が上限。言葉を具体的にさせる
label_names で絞れないラベルでの検索は Professional と Enterprise のプランのみ
記事の写しが古い毎晩の更新の時刻を記録し、その日に直した記事は画面で見る
画像の中の古い画面を見落とす画像の位置を本文に残し、image_check で担当に回す

上の3行が、この構成が役に立つかどうかを分けます。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: リリースノート(公開前の情報を含みうる)、ヘルプセンターの記事(公開済みのもの。社内向けの限定公開の記事を含みうる)です。お客様の個人情報は扱いません。

  1. 公開前のリリースを流さない … 下書きの段階のリリースノートには、まだ発表していない機能が書かれていることがあります。IF で除き、外部のAIに公開前の情報を渡さないようにします
  2. 限定公開の記事の扱いを決める … 社内向けや特定のお客様向けに閲覧を絞った記事も、エージェントの検索の対象にするか決めます。候補の一覧の閲覧を、ナレッジの担当に限ります
  3. エージェントに書き込みの権限を渡さない … Zendesk の資格情報は読むだけのものにします。記事を直して公開する操作は、担当が画面から行います
  4. AIの提供元の扱いを確かめる … Claude API に渡すのは記事の本文とリリースノートです。データの扱いの条件は、契約しているプランの条件で確かめてください
  5. 直しの案をそのまま公開しない … 案はリリースノートの記載だけから書かれています。変更の後の製品の画面で確かめずに公開すると、新しい誤りを記事に入れることになります

誤りが起きた場合のリスクは、古い記事が残ることと、誤った直しが公開されることの2つです。 前者は探した言葉を残して人が見直すことで、後者は引用を照らし、直しの公開を人に残すことで防ぎます。

10まず何から始めるか

1週目:言い換えの一覧を作る

よく変わる画面・設定・ボタンの名前を30個選び、記事で使われている書き方をヘルプセンターの検索で集めて一覧にします。新旧の名前を並べる列を作ります。

2週目:10個の変更で引用を試す

過去のリリースノートから10個の変更を選び、手元のAIサービスに変更と記事を貼り付けて、食い違う文を引用させます。引用が原文のままか、当時直した箇所と合うかを見ます。

3週目:記事の写しと検索のツールを作る

毎晩、incremental の記事の一覧で記事の写しを更新するワークフローと、写しから本文を返すサブワークフローを作り、公開します。Search Articles を呼ぶ HTTP Request を用意します。

4週目:エージェントをつなぐ

AI Agent に2つのツールと Structured Output Parser をつなぎ、引用を照らす Code ノードまでを作ります。最初の2週間は、過去のリリースを手で流して、当時直した記事が候補に出るかを見ます。

2か月目以降: GitHub Trigger で本番のリリースから動かし、担当の判断と探した言葉を記録します。問い合わせで見つかった古い記事が候補に出ていたかを毎月確かめ、出ていなかった記事の言い換えを一覧に戻せるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-29/最終更新:2026-10-29
確認した内容情報源確認日
GitHub Trigger の対応するイベントに Release が含まれることn8n Docs: GitHub Trigger node2026-10-29
Release のイベントの created が、下書きの保存、または下書きを経ないリリース・先行公開の公開で届くことGitHub Docs: Webhook events and payloads2026-10-29
リリースの draft が下書き(未公開)か、prerelease が先行公開かを表すこと。本文が Markdown に対応すること。下書きのリリースの一覧は push の権限のある利用者にだけ返ることGitHub Docs: REST API endpoints for releases2026-10-29
AI Agent が Tools Agent として動き、Max Iterations(既定10)・Return Intermediate Steps・Require Specific Output Format の設定があることn8n Docs: Tools AI Agent node2026-10-29
$fromAI() が AI Agent につないだツールでだけ使え、キー・説明・型・既定の値を指定できることn8n Docs: Let AI specify tool parameters2026-10-29
Call n8n Workflow Tool が別のワークフローを動かして結果を受け取り、入力に $fromAI() を使えること。本番でサブワークフローが公開されていないと「Workflow is not active」の失敗がエージェントへの結果として返ることn8n Docs: Call n8n Workflow Tool node2026-10-29
Structured Output Parser が JSON の例または JSON Schema でスキーマを決め、例から作るとすべての項目を必須とし、$ref に対応しないことn8n Docs: Structured Output Parser node2026-10-29
Zendesk ノードの対象がチケット・チケットの項目・ユーザー・組織で、対応していない操作は HTTP Request で API を呼ぶよう案内されていることn8n Docs: Zendesk node2026-10-29
Search Articles(GET /api/v2/help_center/articles/search)に query・category・section・label_names のいずれかが要ること。既定25件・最大1,000件。結果に一致部分の抜粋が付くこと。locale の扱い。label_names が Professional と Enterprise のプランのみであることZendesk Developer Docs: Help Center Search2026-10-29
incremental の記事の一覧(GET /api/v2/help_center/incremental/articles)が start_time(Unix の時刻)以降に更新された記事を返すこと。記事の body・updated_at・draft などの項目Zendesk Developer Docs: Articles2026-10-29

リリースの頻度、記事の本数、言い換えの一覧の作り方は本記事の例です。 実際には自社のリリースノートの書き方とヘルプセンターの構成に合わせてください。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-2285)についてのご相談はこちらから。

AI活用について相談する
目次