柴田よし!n8nでサチコ(Googleサーチコンソール)のデータを取ってきて、記事データを解析、リライトの優先順位までつけた!
これで記事をリライトすれば検索順位爆上げだ!



じゃあ頑張ってリライト作業してくださいネ



…ちょっと待ちたまえ。どうリライトすればいいかなんて、皆目見当もつかないのだ。自分の記事に何が足りないのか、あと少し何を加えればいいのか…お願いだから一緒に考えてくださいませんか



結局そこも頼るんカーイ
このシリーズの第4回です。
前回はCodeノードでリライト優先度スコアリングを実装しました。今回はスコアが高い記事に対して、Claude APIを使って「どこをどう改善すべきか」を自動提案する実装を解説します。
ここが今回のワークフローで一番面白い部分です。
【この記事でわかること】
- n8nからClaude APIを呼び出す設定方法
- リライト提案を引き出すプロンプト設計
- GeminiではなくClaudeを選んだ理由とコスト試算
なぜGeminiではなくClaudeを使うのか
このブログのワークフローはもともとGemini APIを使っていました。ただSEO解析のような推論が必要な場面でGeminiの回答精度がイマイチだと感じることが多く、Claude APIに切り替えました。
実際に使い比べた印象もありますが、Gemini API(有料、無料)とClaude API(有料)をガチ比較しているので、そちらの記事もご覧ください。





Gemini APIでも十分なケースもあります(特に有料のProモデルの推論力はClaude APIと比較しても大差はない)。こちらの記事でGemini APIを発行する手順を紹介しました。Gemini APIならモデルによりますが、無料で使うことも可能です!
コストについては後述しますが、このワークフローで使う程度なら月数百円以内に収まります。
事前準備
必要なもの
- 前回までで作成した、スコアリング済みのデータを出力するn8nワークフロー
- Anthropic Consoleのアカウント(APIキーを発行し、少額のクレジットをチャージしておいてください)
前回のCodeノードの設定がまだの方は、先にこちらの記事を済ませておいてくださいね!


Step1:Anthropic APIキーを取得する
Anthropic(https://console.anthropic.com/)にアクセスしてアカウントを作成します。



ここで住所や支払い情報を入植しますが、特に住所の入力は注意です!「実際に詰まったこと」を先に読んでおいてください








「API Keys」→「Create Key」でAPIキーを発行します。






注意点⚠️ APIキーは発行時にしか表示されません。必ずコピーして安全な場所に保存してください。
Step2:n8nにHTTPリクエストノードを追加する
n8nにはClaude専用のノードがありません。HTTPリクエストノードを使ってAPIを直接呼び出します。


ノードの設定
| 項目 | 設定値 |
|---|---|
| Method | POST |
| URL | https://api.anthropic.com/v1/messages |
| Authentication | None |



AuthenticationはこのあとHeaderで設定するのでNoneでOKです
ヘッダーの設定
Send Headersをオンにして以下を追加します。
| Name | Value |
|---|---|
| x-api-key | 取得したAPIキー |
| anthropic-version | 2023-06-01 |
| content-type | application/json |


Step3:リクエストボディの設定
基本的なボディの構成
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1500,
"messages": [
{
"role": "user",
"content": "={{ $json.prompt }}"
}
]
}$json.promptは前のCodeノードで生成したプロンプトを受け取ります。



出力はここの”max_tokens”によります。場合によっては途中できられることもあるので、そのときはここを2000にするとかして調整してください
Step4:プロンプト設計
ここが一番重要です。何を渡してどう聞くかでアウトプットの質が大きく変わります。
前のCodeノードに以下のプロンプト生成コードを追加します。
// 各記事のプロンプトを生成して追加
results.push({
url: d.url,
topKeyword: d.keywords[0],
totalClicks: d.totalClicks,
totalImpressions: d.totalImpressions,
avgCtr: Math.round(avgCtr * 10000) / 100 + '%',
avgPosition: Math.round(avgPosition * 10) / 10,
score,
reasons: reasons.join(' / '),
keywordCount: d.keywords.length,
prompt: `あなたはSEOの専門家です。以下のブログ記事データを分析して、リライトの具体的な改善提案をしてください。
## 記事情報
- URL: ${d.url}
- 主要キーワード: ${d.keywords.slice(0, 5).join('、')}
- 平均順位: ${Math.round(avgPosition * 10) / 10}位
- 表示回数: ${d.totalImpressions}回
- CTR: ${Math.round(avgCtr * 10000) / 100}%
- スコアの理由: ${reasons.join(' / ')}
## 依頼内容
以下の3点について具体的に提案してください。
1. タイトルの改善案(現在のキーワードを活かした3案)
2. 検索意図に合わせた見出し構成の改善点
3. CTRを上げるためのメタディスクリプション改善案
回答は日本語で、箇条書きで簡潔にまとめてください。`
});


前回の記事で作ったCodeノードの最後のから数えて5〜15行あたりに同じようにresults.push(…するコードの塊があるので、それをまるっと差し替えてください!
で、この部分はプロンプトになるので「イマイチだなぁ…」と思ったら自分なりに調整してみてくださいね!
Step5:Claude APIのレスポンスを整形する
Claude APIから返ってくるデータはこういう形です。
{
"content": [
{
"type": "text",
"text": "リライト提案の内容..."
}
]
}HTTPリクエストノードの後にCodeノードを追加して、テキスト部分だけを取り出します。
const items = $input.all();
return items.map(item => {
const response = item.json;
// contentが存在しない、または空配列の場合のエラー処理
if (!response.content || !response.content[0] || !response.content[0].text) {
return {
json: {
url: item.json.url || 'unknown',
suggestion: '(リライト提案の取得に失敗しました)',
error: true
}
};
}
const suggestion = response.content[0].text;
return {
json: {
url: item.json.url,
suggestion: suggestion,
error: false
}
};
});コスト試算
Claude Sonnetの料金で計算します。
| 項目 | トークン数 | 料金 |
|---|---|---|
| 入力(1記事分のプロンプト) | 約450トークン | 約$0.00135 |
| 出力(1記事分の提案) | 約650トークン | 約$0.00975 |
| 10記事分の合計 | 約11,000トークン | 約$0.11(約15円) |
週1回実行で月4回として、月約60円です。
実際に動かしてみた結果





よっしゃ!これでこの出力にしたがって実際にリライトすればOKだ
実際に詰まったこと
今回一番詰まった部分はClaude APIを購入するときにクレジットカードが拒否された、というところです。実際やってみてクレカが拒否されたら



え…なんか悪いことしたかな?そんなクレカが拒否されることなんかしてないぞ…多分
と思うかもしれませんが、とりあえず心配しないでください。Anthropicに支払いをするときに、世界中のあちこちで同じ問題が報告されています。
ただ、原因と解決する方法は結構色々らしく、
- カード会社に登録してある住所と入力した住所の不一致
- 決済サービスStripe(Anthropicの支払いにはこれが使われている)の「Link」機能が古い情報を掴んでいる
- カード会社の「海外不正利用フィルター」に引っかかっている
- …
などなど。私の場合はとりあえずカード会社のアプリを通して登録してある住所(が古かったので書き換えたけど)を確認して、ビシッとそれと一致させて(数字の半角全角とかも完全に)申請したら払えました。



JCBですが払えました。あと、住所は日本語で入力しました。
カード会社などによっても原因は変わるかもしれないので、上記のポイントなどに注意しながら支払いするしかないですね…。



すでにClaude Proにアップデートしてる人は大丈夫だと思います
注意点:APIキーの管理
APIキーはn8nのCredentialsに登録して管理してください。コードの中に直接書くのはセキュリティ上NGです。
ただしHeader AuthのValueにAPIキーを直接入力する場合、n8nのCredentials機能が使えないので環境変数として設定するのがベストです。
VPS上のn8nで環境変数を設定する方法は別記事で解説予定です。
次のステップ
Claude APIの提案が出力されたら、次回はGoogle Sheetsに結果を自動出力する実装を解説します。


完成版ワークフローは公式ラインで配布します
今回全部を統合した完成版ワークフローを公式ラインで配布します。
公式LINEに登録して、「GSC自動解析」とメッセージをください。ワークフローのJSONファイルへのリンクを送信します!



完全無料配布です!このブログ記事を参考にセットアップしてみてください!








