[{"data":1,"prerenderedAt":398},["ShallowReactive",2],{"content-/gsc-opportunity-keywords-execution":3,"related-/gsc-opportunity-keywords-execution":352,"all-pages-for-dir":396,"og-image-/gsc-opportunity-keywords-execution":397},{"id":4,"title":5,"body":6,"category":333,"description":334,"extension":335,"meta":336,"navigation":337,"path":338,"project_name":339,"published":340,"publishedAt":341,"seo":342,"stem":343,"tags":344,"todo":350,"unpublished":340,"updatedAt":350,"__hash__":351},"pages/2026-06/2026-06-09/gsc-opportunity-keywords-execution.md","Google Search Console 分析で見つけた機会キーワードに即日対応した記録 ― 解説記事の量産と SEO 修正を1日で消化する",{"type":7,"value":8,"toc":320},"minimark",[9,14,18,22,25,40,43,51,55,58,64,67,131,137,144,148,151,156,159,164,167,171,211,214,224,227,230,263,266,270,273,288,291,294,305,308],[10,11,13],"h1",{"id":12},"google-search-console-分析で見つけた機会キーワードに即日対応した記録","Google Search Console 分析で見つけた機会キーワードに即日対応した記録",[15,16,17],"p",{},"朝、Claude Web に Google Search Console の過去28日データを読み込ませて分析させた結果が手元に届いた。冒頭の一文が「伸びていない原因はかなりはっきりデータに出ていて、改善できる余地も大きい」。この分析結果を Claude Code に渡して、実装側の対応を同日中に順次実行させた記録。",[19,20,21],"h2",{"id":21},"分析が突きつけた数字",[15,23,24],{},"GSC の全体データはこうだった。",[26,27,28,35],"ul",{},[29,30,31],"li",{},[32,33,34],"strong",{},"CTR 2.3%",[29,36,37],{},[32,38,39],{},"平均掲載順位 8.4",[15,41,42],{},"検索結果の1ページ目下部には出ている。しかしクリックされない。「表示はされるが選ばれない」状態だ。分析は問題を構造的に分解していて、サイト側で打てる手が優先度付きで並んでいた。",[15,44,45,46,50],{},"まずこの分析結果を定点観測メモとして ",[47,48,49],"code",{},"unpublished: true"," で保存させた。改善施策を打ったあとに数字がどう動いたかを突き合わせるための基準点になる。",[19,52,54],{"id":53},"順次全部やってください","「順次全部やってください」",[15,56,57],{},"メモ保存のあと、実装側の現状を3つの観点で並列調査させた。関連記事の表示機構、内部リンク構造、薄い記事の所在。調査結果が揃ったところで、私は一言だけ打った。",[59,60,61],"blockquote",{},[15,62,63],{},"はい、順次全部やってください。",[15,65,66],{},"ここから Claude Code が P0〜P2 を順番に消化していった。",[68,69,70,83],"table",{},[71,72,73],"thead",{},[74,75,76,80],"tr",{},[77,78,79],"th",{},"優先度",[77,81,82],{},"内容",[84,85,86,99,107,115,123],"tbody",{},[74,87,88,92],{},[89,90,91],"td",{},"P0-A",[89,93,94,95,98],{},"関連記事コンポーネント（RelatedArticles.vue）の新設と ",[47,96,97],{},"[...slug].vue"," への統合",[74,100,101,104],{},[89,102,103],{},"P0-B",[89,105,106],{},"Jリーグページの SEO 文言修正",[74,108,109,112],{},[89,110,111],{},"P1-A",[89,113,114],{},"薄い記事の加筆（gitkeep 記事を 3,604 → 9,095 bytes、約2.5倍に増量 + 内部リンク4本）",[74,116,117,120],{},[89,118,119],{},"P1-B",[89,121,122],{},"volta 関連のハブ記事整備",[74,124,125,128],{},[89,126,127],{},"P2",[89,129,130],{},"タグページ（/tags/*）の新設、ArticleTable のタグ NuxtLink 化、DocPage フッターへのタグリンク追加",[15,132,133,134,136],{},"途中、全体テストで失敗が出たが、差分テストで切り分けたら私の変更による新規失敗は0件、残りはすべて既存問題だった。",[47,135,49],{}," のメモに path フィールドが必要というテスト仕様も1件直した。",[15,138,139,140,143],{},"コミット ",[47,141,142],{},"a2b05dbe","（12 files changed, 1,076 insertions）をデプロイして、ここまでが前半戦。",[19,145,147],{"id":146},"積み残しありますか全部やる","「積み残しありますか」→「全部やる」",[15,149,150],{},"デプロイが終わったところで、私はもう一度聞いた。",[59,152,153],{},[15,154,155],{},"なんか積み残しってありますか？このセッション。",[15,157,158],{},"Claude Code がセッション中に「やっていない」「次のステップ」として残したものを一覧にして返してきた。未コミット変更、sitemap への /tags/* 追加、E2E テスト、og-meta-tags の既存 failed 12件、coverage 取得、本番動作確認、新規記事。",[59,160,161],{},[15,162,163],{},"OK、じゃあ全部やる。",[15,165,166],{},"後半戦はこの一言で始まった。",[168,169,170],"h3",{"id":170},"消化した積み残し",[26,172,173,179,189,199,205],{},[29,174,175,178],{},[32,176,177],{},"未コミット変更の整理",": 3グループに分けてコミット。途中 amend で意図しない混在が起きたが、分け直して回復",[29,180,181,184,185,188],{},[32,182,183],{},"sitemap / prerender",": ",[47,186,187],{},"nuxt.config.ts"," にタグルート収集の関数を追加し、/tags/* を prerender 対象に。最終的にタグルート 2,059 件が prerender された",[29,190,191,194,195,198],{},[32,192,193],{},"og-meta-tags の既存 failed 12件",": pass している ",[47,196,197],{},"taiwan/index.vue"," のパターンを基準に、12ファイルを並列で修正。テストを再実行して 143 ファイル全 pass",[29,200,201,204],{},[32,202,203],{},"E2E",": 関連記事・タグページの spec を追加",[29,206,207,210],{},[32,208,209],{},"coverage",": Statements 97.72% / Lines 100%",[15,212,213],{},"git log にはこう残った。",[215,216,221],"pre",{"className":217,"code":219,"language":220},[218],"language-text","SEO: og-meta-tags 既存failed 12件修正 + /tags/* の prerender 追加 + 関連記事/タグ E2E\ncontent: GSC 機会キーワード対応の解説記事 4本を追加\n","text",[47,222,219],{"__ignoreMap":223},"",[19,225,226],{"id":226},"機会キーワードへの解説記事量産",[15,228,229],{},"GSC 分析が示した機会キーワード（表示されているのに受け皿となる記事がないクエリ）に対して、解説記事を書かせた。同日に公開したのは以下。",[26,231,232,239,245,251,257],{},[29,233,234],{},[235,236,238],"a",{"href":237},"/iife-immediately-invoked-function-expression","IIFE（即時実行関数式）とは何か",[29,240,241],{},[235,242,244],{"href":243},"/number-isfinite-explained","Number.isFinite と isFinite の違い",[29,246,247],{},[235,248,250],{"href":249},"/strict-equality-vs-loose-equality","厳密等価演算子（===）と等価演算子（==）の違い",[29,252,253],{},[235,254,256],{"href":255},"/volta-to-mise-migration-guide","Volta から mise へ移行する方法",[29,258,259],{},[235,260,262],{"href":261},"/cloudflare-pages-custom-domain-setup","Cloudflare Pages にカスタムドメインを設定する手順",[15,264,265],{},"JavaScript の基礎文法系が並んでいるのは偶然ではない。過去のコード解説記事が拾っていた検索クエリのうち、専用記事がないものを受け皿にする狙いだ。掲載順位 8.4 のページを 1〜3 位の専用記事に置き換えにいく。",[19,267,269],{"id":268},"最後のオチ-webfetch-の-ai-解釈ミス","最後のオチ: WebFetch の AI 解釈ミス",[15,271,272],{},"最終デプロイ後の動作確認で、一瞬ヒヤリとする場面があった。タグページが 404、sitemap にも /tags/ がない、と Claude Code が報告してきたのだ。",[15,274,275,276,279,280,283,284,287],{},"切り分けを進めさせると、実際にはタグルート 2,059 件は prerender されていて、sitemap にもタグページが 1,946 件含まれ、",[47,277,278],{},"dist/tags/git/index.html"," も生成済みだった。実 HTML を直接確認したら ",[47,281,282],{},"article-table"," が17箇所、Git 関連記事が約15件ちゃんと表示されている。",[32,285,286],{},"WebFetch がページ内容を解釈する段階で「404 だ」と誤読していた","だけだった。",[15,289,290],{},"道具の報告を鵜呑みにせず、実 HTML まで掘らせて初めて「正常」と確定できた。確認手段そのものが誤ることがある、という小さな教訓。",[19,292,293],{"id":293},"振り返り",[26,295,296,299,302],{},[29,297,298],{},"分析（Claude Web）と実装（Claude Code）を分けて、分析結果を渡すだけで実装側が優先度付きで動く流れは速かった。私がやったのは「順次全部やってください」「全部やる」の2回の意思決定",[29,300,301],{},"「積み残しありますか」という問いは、セッション終盤の儀式として機能する。AI は自分が後回しにしたものを正確に覚えていて、一覧で出してくる",[29,303,304],{},"CTR 2.3% がどう動くかは、これからの GSC データで答え合わせする。定点メモを残したのはそのため",[19,306,307],{"id":307},"関連リンク",[26,309,310],{},[29,311,312],{},[235,313,319],{"href":314,"target":315,"rel":316},"https://search.google.com/search-console/about","_blank",[317,318],"noopener","noreferrer","→ Google Search Console（公式）",{"title":223,"searchDepth":321,"depth":321,"links":322},2,[323,324,325,329,330,331,332],{"id":21,"depth":321,"text":21},{"id":53,"depth":321,"text":54},{"id":146,"depth":321,"text":147,"children":326},[327],{"id":170,"depth":328,"text":170},3,{"id":226,"depth":321,"text":226},{"id":268,"depth":321,"text":269},{"id":293,"depth":321,"text":293},{"id":307,"depth":321,"text":307},"dev","GSC の過去28日データを Claude Web に分析させたら CTR 2.3%・平均掲載順位8.4 という「表示はされるが選ばれない」状態が判明。機会キーワードへの解説記事量産と SEO 修正を同日に実行した作業ログ。","md",{},true,"/gsc-opportunity-keywords-execution","mdx-playground",false,"2026-06-09T00:00:00.000Z",{"title":5,"description":334},"2026-06/2026-06-09/gsc-opportunity-keywords-execution",[345,346,347,348,349],"SEO","Google Search Console","Claude Code","Nuxt","ブログ運営",null,"s2HTE91StaS9BFvtdEynYK-xXKOdzLvzJTAP08Syozc",[353,362,369,376,383],{"title":354,"description":355,"path":356,"tags":357,"publishedAt":360,"updatedAt":361},"Google Search Console 404エラーの原因：Nuxt SSGのcrawlLinksで発見されないページ","Google Search Consoleで大量の404エラーが報告された原因を調査。Nuxt SSGのcrawlLinksによるプリレンダリングの仕組みと、リンクされていないページが発見されない問題を解説。","/gsc-404-ssg-issue",[348,358,346,345,359],"SSG","プリレンダリング","2026-01-06T00:00:00.000Z","2026-02-03T00:00:00.000Z",{"title":363,"description":364,"path":365,"tags":366,"publishedAt":368,"updatedAt":350},"Google Search Consoleでインデックス率が低い問題の調査","サイトマップに343ページ送信してインデックス76ページしかない問題を調査。初期仮説のtrailing slash問題ではなく、SSGプリレンダリングの問題が根本原因だった。","/google-index-improvement",[345,346,367,348,358],"sitemap","2026-01-04T00:00:00.000Z",{"title":370,"description":371,"path":372,"tags":373,"publishedAt":375,"updatedAt":375},"トレイリングスラッシュによるURL重複インデックス問題","Google Search Consoleで同一ページがスラッシュあり・なしで重複登録される原因と解決策","/trailing-slash-duplicate-index",[345,348,346,374],"Cloudflare","2025-12-26T00:00:00.000Z",{"title":377,"description":378,"path":379,"tags":380,"publishedAt":382,"updatedAt":350},"非公開記事一覧をGoogleにインデックスさせない仕組みを点検した話","/blog/unpublished に置いた非公開記事を検索エンジンに載せたくない。noindex meta を入れる前に、本番ビルドから6経路で除外し本番URLを404にする既存実装が要件を満たしていると分かった点検記録。","/unpublished-noindex",[345,381,348,358,374],"noindex","2026-06-01T00:00:00.000Z",{"title":384,"description":385,"path":386,"tags":387,"publishedAt":395,"updatedAt":350},"2026年4月28日の開発日記 - feature-slidesスキル新設、書籍OCR1181ページ、Amazon書棚UIまで1日で組み上げた","別リポジトリ eurekapu-nuxt4 でCFWS v2の構造解説スライドを reveal.js で組む過程から汎用スキル feature-slides まで一気に成立させ、Excel忠実再現グリッドと範囲外枠ハイライトまで詰めた。並行して book-knowledge-base 側で yomitoku を5冊・1181ページに通して Turso DB に1057チャンク登録、Amazon の星評価・メタデータを 935件中 841件取得して Nuxt の書棚UI で公開した。SVG図解の作業も svg-diagram スキル v2 として書籍画像→SVG変換ワークフローを追記。","/2026-04-28-diary",[388,347,389,390,391,392,393,348,394],"日記","スキル","reveal.js","yomitoku","Turso","Amazon","SVG","2026-04-28T00:00:00.000Z",[],"https://log.eurekapu.com/og/blog/gsc-opportunity-keywords-execution.png?v=2026-06-09T00%3A00%3A00.000Z&title=Google%20Search%20Console%20%E5%88%86%E6%9E%90%E3%81%A7%E8%A6%8B%E3%81%A4%E3%81%91%E3%81%9F%E6%A9%9F%E4%BC%9A%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AB%E5%8D%B3%E6%97%A5%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%9F%E8%A8%98%E9%8C%B2%20%E2%80%95%20%E8%A7%A3%E8%AA%AC%E8%A8%98%E4%BA%8B%E3%81%AE%E9%87%8F%E7%94%A3%E3%81%A8%20SEO%20%E4%BF%AE%E6%AD%A3%E3%82%921%E6%97%A5%E3%81%A7%E6%B6%88%E5%8C%96%E3%81%99%E3%82%8B&author=Kei%20Komatsu&sig=70dde5b0dd310de5",1781076213621]