キーワードのクラスタリングをClaudeで進め、検索意図別の記事対応表にする
Semrush・Ubersuggest・Search ConsoleのCSVをClaudeに渡し、検索意図ごとに分けて1ページに束ねる語と分ける語を決めます。判断基準の渡し方と検算コードつきです。
キーワードCSVは「意図」と「ページ」の2列を足すと対応表になる
Semrush、Ubersuggest、Search Consoleから書き出したキーワードのCSVをClaudeに渡し、検索意図ごとに分類して、どの語を同じページで受けるかを決めた対応表に仕上げられます。Claudeはコードを書いて集計するので、ピボットテーブルや関数を組む手間は要りません。
任せられるのは分類と束ね方の下書きまでです。「この2語は同じページで答えられるか」の最終判断は、検索結果の上位ページを見て人が確かめます。この記事では、判断基準の渡し方、プロンプト、Claudeが返した表の検算までを順に扱います。
既存ページの改稿順を決めたいときは、Search ConsoleのCSVでリライト優先度を決める記事が受け持ちます。ここで扱うのは、これから書く記事にキーワードを割り振る作業です。
3つのCSVを1ファイルに揃える
ツールごとに列名も指標も違うため、そのまま3本を渡すと列の対応づけでClaudeが迷います。渡す前に、次の最小構成へ揃えます。
| 列 | 中身 | 備考 |
|---|---|---|
| keyword | 中身検索語 | 備考全角・半角の空白を統一 |
| source | 中身semrush / ubersuggest / gsc | 備考どのツール由来かを残す |
| volume | 中身月間検索ボリューム | 備考GSCにはないので空欄でよい |
| impressions | 中身表示回数 | 備考GSC由来の語だけ入る |
| position | 中身平均掲載順位 | 備考GSC由来の語だけ入る |
GSCの語は、すでに表示されている語です。自社サイトのどこかが拾っているので、新規記事に割り振る前に既存ページとの重複を疑う必要があります。この区別のためにsource列を残します。
ツール連携で外部のSEOデータを会話に引く方法は、Semrush連携とUbersuggest連携にあります。CSVで運用するなら、書き出しの段階で列を揃えるのが手早い方法です。
添付できるファイルと上限
CSVは、Claudeが読める文書形式に入っています。チャットへの添付は1ファイル500MBまで、1つのチャットに20ファイルまでです。プロジェクトのファイル欄に置く場合は1ファイル30MBまでで、テキストだけが取り込まれます。
ファイル作成機能の説明ページには「アップロードとダウンロードは1ファイル30MB」とあり、アップロードの説明ページ(チャット500MB・プロジェクト30MB)とは数字が一致しません。キーワードCSVは数MBに収まるので実害はありませんが、数十万語を渡す前に自分のアカウントで試すのが確実です。
Excel形式(XLSX)で渡すには、アカウントでコード実行とファイル作成を有効にしておく必要があります。CSVの注記にはこの条件がありません。コード実行はFree・Pro・Max・Team・Enterpriseの各プランで使えますが、TeamとEnterpriseでは組織の管理者が止めている場合があります。ファイルを作らせる処理は、通常のチャットより利用上限を多く消費します。
意図ラベルと「束ねる・分ける」の基準を先に決める
Claudeに「検索意図で分類して」とだけ頼むと、ラベルの粒度が回ごとにぶれます。ラベルの定義と、束ねる条件を先に文章で渡します。以下は作業用に決めた定義で、公式の分類ではありません。
| ラベル | 検索する人がしたいこと | 語の例 |
|---|---|---|
| 情報 | 検索する人がしたいこと仕組みや手順を知りたい | 語の例claude csv分析 やり方 |
| 比較 | 検索する人がしたいこと複数の選択肢を見比べたい | 語の例claude gemini比較 |
| 取引 | 検索する人がしたいこと申し込む・買う・導入する | 語の例claude pro申し込み |
| 指名 | 検索する人がしたいこと特定の製品名・サイトに行きたい | 語の例claudeログイン |
束ねるかどうかは、次の順で決めます。
1ページで受けるか、分けるか
- Q2語の意図ラベルは同じですか?答えが分けます。別ページにして、片方から他方へ内部リンクで送ります答えがはい
- Q読者が求める答えは同じ形(同じ手順・同じ表)ですか?答えが分けます。ラベルが同じでも、答えの形が違えば別ページです答えがはい
- Q自社に、すでにその語で表示されているページがありますか?答えが新規ページとして、新しい page_id を振ります答えがはい
既存ページの見出しに足す
GSC由来の語が既存ページに当たる場合は、新規記事ではなく既存記事の加筆にします。
判断の例 — 6語を実際に割り振るとどうなるか
次の6語を例に、上の基準を当てはめます。語もページ割りも説明用の仮定です。
| 語 | 意図 | 割り振り | 判断の理由 |
|---|---|---|---|
| claude csv分析 | 意図情報 | 割り振りP01 | 判断の理由手順が答え |
| claude csv分析 エクセル | 意図情報 | 割り振りP01 | 判断の理由同じ手順の入口違いなので見出しで拾う |
| claude csv分析 比較 | 意図比較 | 割り振りP02 | 判断の理由答えが見比べる表で、手順と形が違う |
| claude csv集計 ツール おすすめ | 意図比較 | 割り振りP02 | 判断の理由上と同じ表で受けられる |
| claude有料csv | 意図取引 | 割り振りP03 | 判断の理由プランの違いと申込が答え |
| claude csv分析 ログイン | 意図指名 | 割り振り記事なし | 判断の理由製品のログイン画面に行きたい語 |
「エクセル」や「集計」のように言い回しだけが違う語は束ねやすく、「比較」「おすすめ」が付くと答えの形が変わるので分けます。語尾の一語が意図を切り替える点が、人が見直すときの着眼点です。
同じ入力で2回回し、割り振りの差を見る
分類は、同じCSVでも回ごとに揺れることがあります。揺れが大きい語は、意図があいまいな語です。
- 同じCSVと同じプロンプトで、別々の新しい会話を2つ作り、mapping.csvを2本もらう
- 2本のintentとpage_idをkeywordで突き合わせ、食い違う行だけを抜き出す
- 食い違った語を人が検索結果で確かめ、定義の追記が要るかを判断する
食い違う語に共通点が見つかれば(「導入」「比較」付きの語など)、意図ラベルの定義にその語の扱いを1行足して、全体を回し直します。
「答えの形が同じか」は、Claudeの推定だけでは決めきれない点です。2語で検索して上位ページが同じ顔ぶれなら束ねてよい、という目安を自分で確かめ、迷う組だけ人が見る運用にすると手戻りが減ります。
Claudeに渡すプロンプトと、返してもらう表の形
CSVを添付し、次の文面を貼ります。角括弧の部分は自分の条件に置き換えます。
添付の keywords.csv は、Semrush・Ubersuggest・Search Console の
書き出しを1本にまとめたものです(列: keyword, source, volume,
impressions, position)。次の手順で分類してください。
1. 先に、keyword 列の重複(空白・大文字小文字の違いを除く)を
まとめ、除いた件数を答えてください。
2. 各語に、次の4つのうち1つだけ意図ラベルを付けてください。
情報 / 比較 / 取引 / 指名
定義: [上の表の4行をここに貼る]
3. 同じ意図で、読者が求める答えが同じ形になる語を1つの
page_id(P01, P02, ...)にまとめてください。
4. source が gsc で position が20以下の語は、既存ページがある
前提で page_id を EXISTING とし、新規ページに入れないでください。
5. 出力は mapping.csv(列: keyword, intent, page_id, reason)にし、
reason には束ねた根拠か、分けた根拠を30字以内で書いてください。
6. keywords.csv に無い語を、mapping.csv に足さないでください。
判断に迷う語は、reason の先頭に「要確認」と付けてください。6番を入れるのは、Claudeが「ありそうな関連語」を補って行を増やすのを避けるためです。4番の20位という線は一例です。自社の状況に合わせて変えます。
この文面に対してClaudeが返す表は、例えば次のような形になります(列構成の例であり、実際の分類結果ではありません)。
| keyword | intent | page_id | reason |
|---|---|---|---|
| claude csv分析 | intent情報 | page_idP01 | reason手順の記事で受ける |
| claude csv分析 やり方 | intent情報 | page_idP01 | reason上と同じ答えの形 |
| claude excel比較 | intent比較 | page_idP02 | reason見比べる表が答え |
| claude pro申し込み | intent取引 | page_idP03 | reason申込手順が答え |
対応表を検算する — 行数・創作語・意図の混在
分類の中身は読んで判断しますが、行の過不足や定義外のラベルは機械で確かめられます。次のスクリプトをClaudeに頼んでその場で走らせても、手元で動かしても構いません。標準ライブラリだけで動きます。
import csv, sys
from collections import Counter, defaultdict
INTENTS = {"情報", "比較", "取引", "指名"}
def load(path):
with open(path, encoding="utf-8-sig", newline="") as f:
return list(csv.DictReader(f))
src = [r["keyword"].strip() for r in load(sys.argv[1])]
rows = load(sys.argv[2])
mapped = [r["keyword"].strip() for r in rows]
print("元の語数:", len(set(src)), "/ 対応表の行数:", len(mapped))
print("対応表に無い語:", sorted(set(src) - set(mapped)))
print("元に無い語(創作の疑い):", sorted(set(mapped) - set(src)))
print("複数行に出る語:", [k for k, n in Counter(mapped).items() if n > 1])
print("定義外の意図ラベル:",
[r["keyword"] for r in rows if r["intent"] not in INTENTS])
pages = defaultdict(set)
for r in rows:
pages[r["page_id"]].add(r["intent"])
print("1ページに複数の意図が混ざる:",
{p: sorted(v) for p, v in pages.items() if len(v) > 1})python3 check_map.py keywords.csv mapping.csv6語のサンプルCSVに、元に無い語「claude無料」を1行足した対応表で試すと、「元に無い語(創作の疑い): ['claude無料']」だけが出て、ほかの項目は空になりました。この出力を見たら、該当行をClaudeに削らせるか、手で消します。
最後の「1ページに複数の意図が混ざる」は、混ざったページが出たら分け直す合図です。ただし、比較を主題にしたページが冒頭で定義(情報)を少し説明するように、1ページで2つの意図を受ける設計はあり得ます。その場合は、主となる意図を決めてpage_idの割り当てを残します。
つまずきやすい点
落とし穴
語数が多いと途中で件数が合わなくなる
数千語を一度に渡すと、出力の途中で行が抜けたり、ラベルがぶれたりします。大きなファイルは小さな区間に分けるよう、アップロードの説明ページも勧めています。語を意図ラベルだけで先に仕分け、ラベルごとにpage_idを割り当てる二段にすると、1回あたりの出力が減って検算も楽です。件数が大きい分類を機械的に回す方法は、自由記述の分類をバッチAPIで回す記事が参考になります。
- ラベルの定義を会話の途中で変えると、前に分けた分と食い違います。定義を直したら、全語を最初から分け直させます。
- 指名の語(製品名・ログインなど)は、ほかの意図の語と束ねると記事の主題がぼやけます。公式サイトが受ける語も多いため、記事を立てるかどうかを別に判断します。
- 月間ボリュームの大小は、束ねるかの根拠にしません。ボリュームの小さい語も、答えが同じなら同じページの見出しとして拾います。
対応表から次の作業へ渡す
mapping.csvができたら、page_idごとに「代表の語1つ(タイトルに入れる語)」と「見出しに回す語」を決めます。代表の語はボリュームが大きく、意図ラベルが明確な語を選ぶのが扱いやすい基準です。ここもClaudeに候補を出させ、人が1本ずつ採否を決めます。
分けた語の扱いも、この表に残しておきます。たとえばP01(情報)とP02(比較)が同じ話題から分かれた組なら、本文の中で互いにリンクを張る前提にします。Claudeに「page_idの組のうち、同じ話題から分けたもの」をreasonから拾わせると、内部リンクの計画表の下書きになります。分けたのにリンクが無いページ同士は、読者が行き来できず、同じ話題を別々に探すことになります。
タイトルとmeta descriptionの下書きは、titleとmeta descriptionの一括下書きと検査に続けて進められます。CSVの基本的な読ませ方はClaude CSV分析の使い方にまとめています。
まとめ
対応表の品質は、プロンプトの上手さより、意図ラベルの定義と「束ねる・分ける」の基準を先に文章で渡したかどうかで決まります。Claudeには分類と下書き、検算スクリプトを任せ、答えの形が同じかどうかは検索結果を見て人が決める。この分担なら、数百語の割り振りが1回の作業で済みます。