SEOツール月15,000円を0円に|小規模サイト運営者のための代替戦略

Ahrefsの月額15,000円を払い続けなくても、個人運営のSEOは回せる。これが、この記事でいちばん伝えたいことだ。

ひとりで小さなメディアやブログを回している人のなかには、有料SEOツールの請求書を見るたびに小さくため息をついている人が多いと思う。月15,000円、年にすれば18万円。記事から生まれる売上が月に数万円の段階だと、ツール代のほうが利益を食いつぶしている、というねじれが起きている。解約したい。でも、解約したあとにSEOが回るイメージが湧かない。だから払い続けてしまう。そんな人に、別の道があることを伝えたい。

結論を先に書いておくと、小規模サイトのSEOに必要な機能のほとんどは、Google Search Console(グーグルが提供する無料の検索分析ツール、以下GSC)とちょっとしたスクリプトで代替できる。ロングテールキーワードの発掘も、順位モニタリングも、リライト候補の発見も、0円で回る。この記事では、そのための具体的な設計を書いていく。

この記事の前提

この記事は、月間PV(ページビュー、1ヶ月にページが見られた回数)が数千から十数万くらいの、個人または数人で回している小規模サイトの運営者に向けて書いている。

想定している読者はこんな人だ。

・Ahrefs、SEMrush、Ubersuggestなどの有料SEOツールを使っているが、費用対効果にもやもやしている ・サイトから生まれる売上がまだ小さく、ツール代の負担が重い ・でも解約するとSEOが真っ暗闇になりそうで怖い ・プログラミングはちょっとだけわかる、あるいはまったくわからないが、手順があれば真似できる

この記事のスタンスは、有料ツールが悪いということではない。月に数百万のPVがあるメディアや、競合調査が生命線の事業では、有料ツールは十分に元が取れる。ただ、まだそのフェーズにない小規模サイトが、大企業と同じ道具を揃えて消耗する必要はない、ということだ。道具は事業の大きさに合わせて選び直していい。

私自身は、ひとりで小さな事業をいくつか並行で回していて、それぞれに小さなメディアやブログを紐づけている。どのサイトも月のPVはそこまで大きくない。そういう規模感で、有料SEOツールを全部解約した先の景色を、この記事で共有していきたい。

なぜ有料SEOツールの大半は、小規模サイトにはオーバースペックなのか

有料ツール vs 小規模サイトに本当に必要な機能

図: 有料ツール vs 小規模サイトに本当に必要な機能

まず整理しておきたい。有料SEOツールが提供している価値を分解すると、だいたいこの5つに集約できる。

  1. キーワードの検索ボリューム(月何回検索されているか)を調べる
  2. 競合サイトがどのキーワードで上位表示しているかを覗く
  3. 自サイトの検索順位を日次で記録する
  4. 被リンク(他サイトから貼られたリンク)を調べる
  5. サイトの技術的な問題(表示速度、内部リンクなど)を検出する

このうち、小規模サイトの運営者が日々のSEO改善で本当に使うのは、3と、少しだけ1と5くらいだ。2の競合調査は、最初の数ヶ月は面白いが、自サイトの記事が増えてくると「他所を見るよりうちのどれを直すか」のほうが100倍大事になる。4の被リンクは、自然発生的に増やすことしかできない小規模サイトでは、毎月チェックしても打ち手がない。

つまり、月15,000円のうち、実際に使っている機能は2,000円分もないかもしれない。残りの13,000円は、使っていない機能のために払っている保険料みたいなものだ。

ここで発想を切り替えたい。小規模サイトのSEOで本当に効くのは、次の4つだけだ。

・自サイトがすでに少しだけ順位が付いているキーワード(ロングテール)を見つける ・そのキーワードを深掘りして記事を書く、またはリライトする ・自分が追っている記事の順位の推移を見る ・表示されている割にクリックされていない記事のタイトルを直す

この4つは、ぜんぶGSCで完結する。GSCは無料で、しかもGoogleが直接提供している一次情報だ。有料ツールがスクレイピング(他サイトから情報を抜き出すこと)で推測しているデータより、精度が高いことすらある。

代替戦略の全体像

0円SEOスタックの構成要素

図: 0円SEOスタックの構成要素

これから紹介する無料スタックは、こういう構成になる。

・データの土台: Google Search Console のAPI(外部から自動でデータを取り出す窓口) ・保管場所: Googleスプレッドシート、またはローカルのCSVファイル ・自動化: GoogleスプレッドシートのGASスクリプト(無料で動く自動実行の仕組み)、またはシンプルなPythonスクリプト ・可視化: スプレッドシートの条件付き書式、またはLooker Studio(グーグルの無料ダッシュボードツール) ・アラート: Slack、またはメール

合計のランニングコストは、0円だ。自分の時間を初期設定で2時間ほど使うだけで済む。

この構成で、先ほどの4つの仕事をすべてカバーできる。順番に見ていこう。

ロングテール発見を自動化する

ロングテールキーワードというのは、検索ボリュームは小さいけれど、合計すると大きな流入源になる、長くて具体的な検索語のことだ。「SEOツール」みたいな短い言葉ではなく、「SEOツール 個人ブログ 無料」みたいに3語以上で構成される検索語を指す。

小規模サイトが勝てるのはロングテールだけ、と言っていい。強いドメインと勝負しても無理なので、具体的すぎてライバルが手を出さない場所を拾っていく。有料ツールはこのロングテールを網羅的に出してくれるが、実は自サイトに適したロングテールは、すでに自サイトのGSCデータの中に埋まっている。

具体的には、こういう手順で発掘する。

手順1: GSCから生データを抜く

GSCの管理画面から手作業でCSVを落としてもいいが、これを毎週やると続かない。私は最初の1ヶ月でやめた。だから、GSCのSearch Analytics APIを叩いて、自動で取得するようにする。

やることはシンプルで、Google Cloud Platform(グーグルのクラウドサービス、以下GCP)で無料のプロジェクトを作り、Search Console APIを有効化して、サービスアカウント(機械が使う専用アカウント)を発行する。発行したサービスアカウントのメールアドレスをGSC側に「所有者」または「フルユーザー」として追加する。ここまでで、スクリプトからGSCのデータを取れるようになる。

手順2: 過去90日のクエリを全部引き抜く

GSCのAPIに対して、過去90日間の検索クエリ(ユーザーが実際に検索した言葉)を、ページごとに全部取得する。ここで重要なのは、表示回数とクリック数と平均掲載順位の3つを同時に取ることだ。

Pythonで書くと、こんなイメージになる。

from google.oauth2 import service_account
from googleapiclient.discovery import build

credentials = service_account.Credentials.from_service_account_file(
    'service-account.json',
    scopes=['https://www.googleapis.com/auth/webmasters.readonly']
)
service = build('searchconsole', 'v1', credentials=credentials)

request = {
    'startDate': '2026-01-13',
    'endDate': '2026-04-13',
    'dimensions': ['query', 'page'],
    'rowLimit': 25000
}

response = service.searchanalytics().query(
    siteUrl='https://example.com/',
    body=request
).execute()

このコードを月に1回か、週に1回動かすだけで、自サイトがGoogleにどう見られているかのほぼすべてがわかる。Ahrefsでいう「Organic Keywords」画面に近いものが、自前で手に入る。

手順3: お宝クエリを機械的に抽出する

取得したデータをスプレッドシートやPandas(Pythonの表計算ライブラリ)に入れたら、次の条件でフィルタをかける。

・表示回数が月に50回以上ある ・平均掲載順位が8位から20位の間 ・クリック率が3%未満

この3つの条件にあてはまるクエリは、Googleが「ちょっと表示してるけど、みんな本気でクリックはしてない」と判断している状態だ。つまり、あと一押しで1ページ目に入れるし、入ったら確実にクリックされる可能性が高い、いちばんおいしいゾーンだ。

私の感覚では、記事数が50を超えるサイトなら、この条件で毎月30から100くらいのクエリが引っかかる。有料ツールを使うとライバルの多い大きなキーワードばかり勧められがちだが、GSCから引いたロングテールは、自サイトがすでに入口を持っているので成功率がまったく違う。

手順4: 同じ意味のクエリをまとめる

30から100のクエリをそのまま記事にしようとすると、ほぼ同じ内容の記事を量産することになる。だからクエリをクラスタリング(似たもの同士をまとめる作業)する。

無料でやるなら、Google SheetsのGOOGLETRANSLATE関数で意味を揃えたあと、Claude APIやChatGPT APIに「このクエリ群を意味ごとにグルーピングして」と渡すのが速い。APIは1,000クエリを処理しても数十円で済む。

こうしてできたクラスタごとに、1本の記事で全部拾いにいく。これが小規模サイトのロングテール戦略の本丸だ。

順位モニタリングを自動化する

有料ツールの大きな機能のひとつに、順位トラッキングがある。追いたいキーワードを登録しておくと、毎日Googleを叩いて順位を記録してくれる機能だ。これも、GSCで代替できる。

やることは、先ほど取得したGSCデータを、クエリ×ページの組み合わせで毎日スプレッドシートに追記していくだけだ。注意点としては、GSCの「平均掲載順位」は検索クエリや地域ごとに混ざった平均値なので、有料ツールの「ピンポイント順位」とは意味が少し違う。ただ、小規模サイトのトレンドを追う目的なら、これで十分だ。

具体的なセットアップ

  1. スプレッドシートを1つ作る(シート名: ranking-log)
  2. GAS(Google Apps Script)でSearch Console APIを叩く関数を書く
  3. 追いたいクエリとページの組み合わせを20個くらい登録する
  4. トリガーで毎日1回自動実行させる
  5. グラフは Looker Studio で繋ぐ

GASは月間90分までは無料で動く。1日1回、20クエリを引くだけなら、使う時間は1回あたり30秒以下なので、完全に無料枠の中に収まる。

私が運営している小さなサイトのひとつでは、これで2年前から順位を追っている。Ahrefsを解約する前と後で、意思決定の質は下がっていない。むしろ、自分でクエリを選んで追う分、どの記事を伸ばすべきかが明確になった。

リライト候補を機械的に見つける

小規模サイトで売上を伸ばすいちばん効く施策は、新しい記事を書くことではなく、すでにある記事を磨き直すことだ。これはSEOに関わっている人の共通見解だと思う。

問題は、50本、100本、200本と記事が増えたときに、どれから手を付けるべきかがわからなくなることだ。ここでも、GSCのデータが効く。

リライト候補スコアの作り方

私が使っている計算式はこれだ。

リライト候補スコア = 表示回数 × (1 / 平均掲載順位) × (10 - 現在のクリック率%)

この式の意味を噛み砕くと、こうなる。

・表示回数が多いページほど、直した時のリターンが大きい ・平均掲載順位が上のほうが、あと一押しで伸ばせる ・クリック率が低い記事ほど、タイトルや冒頭を直す余地がある

この3つを掛け合わせると、直すべき順番がきれいに並ぶ。上位20記事くらいを見れば、3ヶ月分のリライト計画が立つ。

さらに、それぞれの記事について、GSCから「その記事に対して表示された検索クエリ」を全部引いてみる。すると、自分が意図していなかった検索語で表示されていることに気づく。たとえば「スプレッドシート 在庫管理 テンプレート」という記事が、「スプレッドシート 発注 管理 無料」みたいなクエリでも表示されていたら、そのクエリに答える節を1つ追加する。これだけで順位が上がる。

この一連の作業は、有料ツールよりGSCのほうがむしろ精度が高い。なぜならGSCは自サイトが実際にどう見られているかの一次情報だからだ。有料ツールは他サイトとの比較には強いが、自サイト内の改善ループを回すなら無料ツールのほうが合っている。

タイトルとディスクリプションの改善を自動でレコメンドする

GSCから「表示回数は多いのにクリック率が低い記事」を引き出したら、次はタイトルとディスクリプション(検索結果に出る説明文)の改善だ。

ここでClaude APIを使う。やり方はシンプルで、対象の記事のURL、現在のタイトル、現在のディスクリプション、表示されているクエリ上位10件を渡して、改善案を3つ出してもらう。プロンプトの例を載せておく。

あなたはSEO編集者です。
以下の情報をもとに、検索結果でのクリック率を上げるタイトルを3案提示してください。

# 記事URL
https://example.com/articles/spreadsheet-inventory

# 現在のタイトル
スプレッドシートで在庫管理をする方法

# 現在のディスクリプション
Google スプレッドシートを使った在庫管理の手順を解説します。

# 実際に表示されているクエリ(多い順)
1. スプレッドシート 在庫管理 無料
2. スプレッドシート 発注 管理
3. google 在庫管理 テンプレート
...

# 条件
- 全角32文字以内
- 数字を1つ以上入れる
- 「無料」「テンプレート」のどちらかを含める
- 読者の動詞を入れる(始める、作る、など)

Claude APIなら、このプロンプトを叩いても1回1円もしない。Ahrefsの月15,000円があれば、数万回叩けてしまう。

返ってきた3案をそのまま採用するのではなく、GSCで1ヶ月後にクリック率を確認して、勝った案だけ残す。これを繰り返すだけで、既存記事の流入はじわじわ増える。

被リンクとテクニカルSEOはどうする

ここまで紹介していない機能が、被リンクとテクニカルSEOだ。この2つも、無料で代替できる。

被リンクは、Googleが直接提供している「リンク」レポートがGSCの中にある。有料ツールほど網羅的ではないが、重要なリンクはほぼ拾える。毎月1回、増減だけ確認すればいい。

テクニカルSEOは、GSCの「ページ エクスペリエンス」と「Core Web Vitals(コアウェブバイタル、表示速度などの指標)」レポートで十分だ。加えて、PageSpeed Insights(グーグルの無料速度計測ツール)を月に1回叩く。この2つで、小規模サイトに必要な技術的チェックはほぼカバーできる。

内部リンクの整理は、自サイトをクロール(巡回)する無料ツールである Screaming Frog(月に500URLまで無料)で十分だ。500URLを超えるサイトは、そもそも小規模サイトとは呼べないので、対象外と考えていい。

参考になる事例

事例1: 個人で月10万PVのブログを運営している人

私が知っているある個人事業主は、園芸系のブログを5年ほど運営している。記事数は300本ほど、月間10万PVほどの規模だ。もともとAhrefsを契約していたが、2年前に解約してGSC中心の運用に切り替えた。

切り替え後にやったことは、週1回GSCからCSVをダウンロードして、スプレッドシートで「10位から20位のクエリ」だけ抽出するルールを作ったことだ。ここに引っかかったクエリに対して、既存記事にその言葉を含む節を追加する。新しい記事はほぼ書かない。それだけで、月間PVは解約前の1.4倍に増えた。

彼が言っていて面白かったのは、「解約したら毎日ツールを眺める時間がなくなって、代わりに記事を書く時間が1日30分増えた」という話だ。ツールを持っていると、ツールを使うこと自体が仕事になってしまう現象がある。解約はそれをリセットする効果もある。

事例2: 地方の工務店のオウンドメディア

別の事例で、地方の工務店が自社サイトで集客している例を知っている。記事数は80本ほど、社内にSEO担当はおらず、経営者が片手間で更新している。

彼らはそもそも有料ツールを使ったことがない。GSCとLooker Studioだけで運用していて、毎月の経営会議でLooker Studioの画面を開いて、問い合わせに繋がったクエリを確認している。問い合わせが発生したクエリに対応する記事だけ手厚くリライトする、という単純な運用だ。

この規模のサイトでは、そもそもロングテールが月に10件か20件しか生まれないので、有料ツールは要らない。無料のGSCとLooker Studioで、やることは十分に埋まる。

実際の移行手順: 1日で終わるセットアップ

半日で終わる0円SEO移行の7ステップ

図: 半日で終わる0円SEO移行の7ステップ

ここまでの話を読んで、やれそうな気がしてきた人のために、実際の移行手順を1日で終わる形でまとめておく。

ステップ1: GCPでプロジェクトを作る(15分)

Google Cloud Consoleにログインして、無料プロジェクトを1つ作る。Search Console APIを有効化して、サービスアカウントを発行する。JSONキーをダウンロードしておく。

ステップ2: GSC側でサービスアカウントを認可する(5分)

GSCの管理画面で、先ほど作ったサービスアカウントのメールアドレスを「所有者」として追加する。これでAPIからデータを取れるようになる。

ステップ3: スプレッドシートを3枚作る(10分)

・シート1: queries-raw(GSCから取った生データ) ・シート2: ranking-log(日次の順位記録) ・シート3: rewrite-candidates(リライト候補スコア)

ステップ4: GASを書く(60分)

GASのエディタを開いて、Search Console APIを叩く関数を3つ書く。1つはqueries-rawに書き込む関数、もう1つはranking-logに追記する関数、最後がrewrite-candidatesを計算する関数だ。Claude APIやChatGPTに「GASでSearch Console APIを叩いてスプレッドシートに書き込むコードを書いて」と頼めば、ベースは30秒で手に入る。

ステップ5: トリガーを設定する(5分)

GASのトリガー画面で、queries-rawとranking-logの関数を、毎日午前3時に自動実行するように設定する。rewrite-candidatesは手動でOKだ。

ステップ6: Looker Studioに接続する(20分)

Looker Studioで新しいレポートを作り、先ほどのスプレッドシートをデータソースとして接続する。日次の順位推移グラフと、リライト候補トップ20のテーブルを置く。これで毎朝スマホからでも状況が見られる。

ステップ7: Ahrefsを解約する(5分)

ここまで来たら、Ahrefsのアカウント設定から解約する。月15,000円の請求が止まる。年間で18万円。この18万円で、別の自分の事業に投資してほしい。

合計で約2時間。半日あれば終わる。

よくある失敗・落とし穴

ここまで読んで、よし解約しようと思った人に、先に落とし穴を伝えておきたい。

落とし穴1: GSCのデータは遅れて入ってくる

GSCのデータは、リアルタイムではない。直近2日から3日のデータは欠けていることが多い。だから「昨日の順位を今朝確認する」という使い方には向いていない。週単位で見るのが基本だ。有料ツールの日次トラッキングに慣れていると、このタイムラグが気持ち悪く感じるかもしれないが、小規模サイトの意思決定は週単位で十分だと割り切ってほしい。

落とし穴2: ロングテールを拾いすぎて記事数が増える

GSCからロングテールを発掘すると、書きたいネタが一気に30本以上出てくる。これを全部記事にしてしまうと、似た内容の記事が量産されて逆効果だ。必ずクラスタリングをして、1つのクラスタ=1記事の原則を守る。新記事を書くより、既存記事にロングテールを吸収させるほうが、ほとんどの場合は効率がいい。

落とし穴3: 競合調査ができなくなるのが不安になる

Ahrefsを解約すると、競合サイトのキーワードが見えなくなる。最初の1ヶ月は不安になる。でも、実際に困ることはほぼない。なぜなら、小規模サイトの差別化ポイントは「競合が書いていないこと」ではなく「競合より深く書くこと」だからだ。競合を覗く時間を、自サイトの既存記事を1段階深く書き直す時間に振り替えたほうが、売上には直結する。

どうしても競合を見たくなったら、月に1回だけ、Ubersuggestの無料枠(1日3検索まで無料)で上位3社を覗く。これで十分だ。

落とし穴4: GSCだけだと表示速度がわからない

GSCにもCore Web Vitalsの項目はあるが、ページ単位の細かい分析にはPageSpeed Insightsを併用する必要がある。月に1回、主要記事10本だけ手動で計測する習慣にしておけば問題ない。

落とし穴5: スクリプトが壊れたときに直せない

自動化スクリプトは、半年に1回くらいAPIの仕様変更で壊れることがある。そのときに直せる自信がない人は、最初から全部手動でいい。GSCの管理画面から週に1回CSVをダウンロードして、スプレッドシートに貼るだけでも運用は回る。自動化は慣れてから足せばいい。

有料ツールに戻すべきタイミングはあるのか

最後に、公平を期すために、有料ツールに戻すべきタイミングも書いておきたい。

こういうサインが出たら、もう一度Ahrefsを契約していい。

・月間PVが30万を超えた ・記事のほとんどが1ページ目に入っていて、ロングテール余地がなくなった ・複数サイトを横断して被リンク獲得戦略を回し始めた ・チームが3人以上になり、役割分担のためにダッシュボードが必要になった

このどれにも当てはまらないうちは、0円スタックで十分だ。月15,000円は、別のところに使ってほしい。たとえば、新しい記事のアイキャッチ画像をプロに頼むとか、月に1本だけインタビュー取材に出かけるとか、そのほうが記事の価値が上がる。

明日からやる3つのこと

ここまで読んでくれた人に、明日からやる3つの具体的な行動を提案する。

  1. GSCの管理画面を開いて、過去3ヶ月のクエリを「平均掲載順位8位〜20位」でフィルタしてみる。何本のお宝クエリが埋まっているか、目で数える。想像より多くて驚くはずだ。

  2. そのお宝クエリの中から3つだけ選んで、対応する既存記事に小さな節を追加する。新しい記事は書かない。既存記事を磨く。1週間後にGSCで表示回数とクリック数の変化を見る。

  3. Ahrefsの次の請求日を確認する。その日までに、この記事のセットアップ手順をひと通り試す。手順通りやれば半日で終わる。終わったら、解約ボタンを押すか、もう1ヶ月だけ残すか、自分の目で判断する。

ここまでやれば、月15,000円を払い続けるかどうかの判断が、恐怖ではなく数字でできるようになる。Ahrefsを使い続けるという選択肢ももちろんアリだ。ただ、使い続けるなら「慣れているから」ではなく「これだけの価値があるから」という理由で選び直してほしい。

ひとりで事業を回している人にとって、月15,000円はそこそこ大きい金額だ。払う価値があるなら払えばいい。価値が見えないなら、0円で回す選択肢がある。それを知っているだけで、これからの意思決定は変わると思う。