[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"tag-articles-Cloudflare Pages":3},[4,17,26,35,46,56,63,72,79,87,99,108,117,125,133,141,152,161,170,178,184,196,204,212],{"title":5,"description":6,"path":7,"tags":8,"publishedAt":15,"updatedAt":16},"Cloudflare PagesでリロードするとNuxtページが404になる問題の調査と解決","Cloudflare Pagesにデプロイした動的ルートのNuxtページで、初回アクセスは成功するがF5リロードすると404エラーが発生する問題の原因調査プロセスと、_routes.jsonの除外ルール修正による解決策","/cloudflare-pages-reload-404-fix",[9,10,11,12,13,14],"Cloudflare Pages","Nuxt","SSR","トラブルシューティング","デプロイ","_routes.json","2025-11-27T00:00:00.000Z",null,{"title":18,"description":19,"path":20,"tags":21,"publishedAt":25,"updatedAt":16},"CI OOM 調査メモ（Nuxt / Cloudflare Pages）","GitHub Actions で発生する Node.js heap OOM の試行と結果、次の方針","/ci-oom-investigation",[22,23,10,9,24],"CI","GitHub Actions","OOM","2025-12-24T00:00:00.000Z",{"title":27,"description":28,"path":29,"tags":30,"publishedAt":34,"updatedAt":34},"ブログ記事のマークダウンコピー機能を実装","PC表示で共有ボタンとマークダウンコピーボタンを追加。frontmatterを除外した本文のみをコピーできる機能","/markdown-copy-feature",[31,32,10,33,9],"完了","Vue","機能追加","2025-12-31T00:00:00.000Z",{"title":36,"description":37,"path":38,"tags":39,"publishedAt":45,"updatedAt":45},"Google Search Console「リダイレクト」「インデックス未登録」の原因：canonical/サイトマップの末尾スラッシュ不一致","GSCで報告される「ページにリダイレクトがあります」31件と「検出 - インデックス未登録」209件の有力な原因を調査。Cloudflare Pagesの末尾スラッシュ仕様とcanonical設定の不一致を解説。","/gsc-trailing-slash-mismatch",[40,41,9,42,43,44],"SEO","Google Search Console","trailing slash","canonical","sitemap","2026-01-06T00:00:00.000Z",{"title":47,"description":48,"path":49,"tags":50,"publishedAt":55,"updatedAt":16},"2026年2月8日の開発日記 - 複数業種LPを1日でSSG化・デプロイまで完了","複数デザインテンプレートの各業種適用、SSR→SSG移行、SEO全ページ実装、Resendお問い合わせフォーム、UI/UX最終調整を1日で完了した開発記録","/diary-2026-02-08",[51,52,53,9,54],"日記","LP","SSG","デザインテンプレート","2026-02-08T00:00:00.000Z",{"title":57,"description":58,"path":59,"tags":60,"publishedAt":55,"updatedAt":16},"Nuxt3マルチテナントLPをSSRからSSGに移行 - 複数業種×Cloudflare Pagesデプロイ","業種別LPサイトのSSR→SSG移行。環境変数によるテナント切替、PowerShellバッチデプロイスクリプト、Cloudflare Pages Static設定を解説","/tax-lp-ssr-to-ssg-2026-02-08",[53,11,61,9,62,13],"Nuxt3","マルチテナント",{"title":64,"description":65,"path":66,"tags":67,"publishedAt":71,"updatedAt":16},"LP多業種展開 - 新業種追加・composable化・フォーム改善","LPプロジェクトに新業種3つを追加し、composable/util化リファクタリング、フォーム改善（ハニーポット・自動返信）を実施した記録","/multi-industry-lp-expansion-2026-02-09",[61,9,68,69,70],"composable","リファクタリング","スパム対策","2026-02-09T00:00:00.000Z",{"title":73,"description":74,"path":75,"tags":76,"publishedAt":71,"updatedAt":16},"SSG環境でのSEO基盤整備 - robots.txt/sitemap.xml静的生成とCloudflare Pages対応","Nuxt3 SSG環境でrobots.txtとsitemap.xmlを静的ファイルとして生成し、Cloudflare Pagesの制約に対応した記録","/ssg-seo-infrastructure-2026-02-09",[40,53,61,9,77,78],"robots.txt","sitemap.xml",{"title":80,"description":81,"path":82,"tags":83,"publishedAt":86,"updatedAt":16},"Nuxt 3 SSGで特定ページをプリレンダリングから除外する方法 - 本番環境からの選択的ページ除外","Nuxt 3のcloudflare-pages-staticプリセットで、書籍内容を含むページを本番環境から除外し、開発環境でのみ閲覧可能にする実装手順。prerender.ignoreとimport.meta.devを使った方法を解説。","/nuxt3-ssg-prerender-exclude-pages-2026-02-12",[61,53,84,9,85],"プリレンダリング","開発環境","2026-02-12T00:00:00.000Z",{"title":88,"description":89,"path":90,"tags":91,"publishedAt":98,"updatedAt":16},"書籍OCRバッチクリーンアップとtokyo-onkeiデプロイ修正 - 2026年2月20日","yomitokuで75ページのPDFを113秒でOCR変換し、複数冊のDBクリーンアップを並列バッチ処理。tokyo-onkeiのCSS崩れ・リダイレクト問題も解消した開発ログ。","/book-ocr-and-misc-2026-02-20",[92,93,94,95,9,96,97,53],"yomitoku","OCR","SQLite","Claude Code","tokyo-onkei","book-knowledge-base","2026-02-20T00:00:00.000Z",{"title":100,"description":101,"path":102,"tags":103,"publishedAt":107,"updatedAt":16},"2026年3月4日の開発日記 - 鍵屋サイトを一日で作り替えてPageSpeed94点まで磨いた","Nuxt 2で放置されていた地域密着サービス業サイトをバニラHTMLに作り替え、Cloudflare Pagesへ移行。LP改善、SVGアニメーション制作、PageSpeed最適化まで一気通貫で仕上げた一日の記録","/2026-03-04-diary",[51,104,9,105,40,106],"静的サイト","PageSpeed","SVGアニメーション","2026-03-04T00:00:00.000Z",{"title":109,"description":110,"path":111,"tags":112,"publishedAt":107,"updatedAt":16},"LP改善・画像最適化・SVGアニメーション制作の一日","地域密着サービス業のLPを競合分析から再構築。DSC画像14枚の圧縮、新セクション追加、SVGトラックアニメーション制作、作業風景動画の切り出しまでを一気に進めた記録","/lp-improvement-svg-animation-2026-03-04",[113,114,115,106,116,9],"LP改善","画像最適化","ImageMagick","モバイル対応",{"title":118,"description":119,"path":120,"tags":121,"publishedAt":107,"updatedAt":16},"PageSpeedモバイル94点達成までの最適化ログとSEO改善の記録","地域密着サービス業サイトのPageSpeedモバイルスコアを94点まで引き上げた最適化プロセスと、OG画像・構造化データ・robots.txt等のSEO改善、GA4イベント計測の実装記録","/pagespeed-seo-optimization-2026-03-04",[105,40,122,123,9,124],"パフォーマンス最適化","GA4","Codex",{"title":126,"description":127,"path":128,"tags":129,"publishedAt":107,"updatedAt":16},"Nuxt 2サイトをバニラHTML静的サイトに作り替えてCloudflare Pagesへ移行した","Nuxt 2で動いていた地域密着サービス業サイトをバニラHTML/CSS/JSの静的サイトにリビルドし、Netlify→Cloudflare Pagesへ移行。ビルド設定の罠やカスタムドメイン切り替えまでの記録","/static-site-rebuild-cloudflare-2026-03-04",[104,9,130,131,132],"Netlify移行","ffmpeg","DNS",{"title":134,"description":135,"path":136,"tags":137,"publishedAt":140,"updatedAt":16},"Nuxt SSGビルドエラーを3つ潰して本番デプロイを復旧した","Cloudflare Pagesで2月22日以降の記事が消えていた原因を追い、importパスの階層不足・Date型のsplit問題・未コミットコンテンツの3つを修正して本番復旧した記録","/nuxt-ssg-build-fix-2026-03-05",[10,53,138,139,9,12],"Vite","ビルドエラー","2026-03-05T00:00:00.000Z",{"title":142,"description":143,"path":144,"tags":145,"publishedAt":151,"updatedAt":16},"PRレビューからCORSデバッグまで - 本番デプロイで音声が消えた一日","2つのPRレビュー・修正から始まり、本番デプロイで音声404、Web Audio APIのCORSエラー、crossorigin追加で完全破壊、Codexレビューを経て3段階CORS検証で解決するまでの試行錯誤ログ","/pr-review-cors-debugging",[146,147,148,9,149,150],"PRレビュー","CORS","Web Audio API","デバッグ","eurekapu","2026-03-17T00:00:00.000Z",{"title":153,"description":154,"path":155,"tags":156,"publishedAt":160,"updatedAt":16},"Cloudflare AccessとSSGの相性問題から別プロジェクト分離に至るまで","Cloudflare Accessで/private以下を保護しようとしたが、SSGのプリレンダリングでバイパスされる問題が発覚。ミドルウェア対策を経て、最終的にprivate.eurekapu.comとして別プロジェクトに分離した判断過程の記録","/cloudflare-access-private-site",[157,53,61,158,9,159],"Cloudflare Access","プライベートサイト","セキュリティ","2026-04-08T00:00:00.000Z",{"title":162,"description":163,"path":164,"tags":165,"publishedAt":169,"updatedAt":16},"Search Console 404を329件発見し、リダイレクトルールで75%を潰した","3月末のリダイレクト修正から2週間後にSearch Consoleを確認。404が329件残っていたのでCSV全件分析し、generate-redirects.mjsを改修。Cloudflare Pagesの2,000ルール制限と格闘しながら248件をカバーした記録。","/search-console-404-redirect-fix",[40,166,167,9,168],"Search Console","リダイレクト","404","2026-04-14T00:00:00.000Z",{"title":171,"description":172,"path":173,"tags":174,"publishedAt":177,"updatedAt":16},"2026年5月10日の開発日記 - Cloudflare Pages SSG OOM根本対応と書籍の蔵書DB化","Cloudflare Pages SSG の OOM をExcel教材データ分離で根本対応、Codex Windows サンドボックスの設定変更、yomitokuでの書籍OCR、奥付抽出計画とCodex再帰レビュー、財務諸表読み方教材の図解インベントリ計画。","/2026-05-10-diary",[51,9,124,175,92,176],"Turso","蔵書管理","2026-05-10T00:00:00.000Z",{"title":179,"description":180,"path":181,"tags":182,"publishedAt":177,"updatedAt":16},"Cloudflare Pages SSG の OOM を Excel 教材データ分離で根本対応した話 — Codex 再帰レビューと SSR fetch 404 の突破","Cloudflare Pages の SSG ビルドが Node ヒープ 2GB を突き抜けて exit 134 で落ち続けた問題を、Excel 教材データの TS import → JSON fetch 分離で根本対応した。top.vue manifest は 490KB から 18KB に痩せ、10コース 616KB が public/ 配信に逃げた。Codex 再帰レビュー3回、Windows サンドボックス問題の根本対応、SSR fetch 404 のハマりまでを記録する。","/excel-data-separation-cloudflare-ssg-oom",[10,9,53,24,124,11,183],"Excel教材",{"title":185,"description":186,"path":187,"tags":188,"publishedAt":195,"updatedAt":16},"Eurekapuのデプロイが9.3分に伸びた話：R2リダイレクト移行と、Codexに3回ダメ出しされた計画書","Eurekapu-NUXT4のデプロイ時間が9.3分まで伸び、dist/総量248MB・5195ファイルまで肥大化していた。R2画像移行→dynamic importの順で計画を立てたら、Codexレビューに『順序が逆』『dynamic importは Worker バンドルから消えない』『$fetch('/content/...')はSSRで404』と3点まとめて致命傷を指摘され、計画を全面改訂。最終的に _redirects 方式でR2にリダイレクトする形に落として、wrangler pages deployだけで完結する流れに揃えた。最後、ビルド中にファイルを編集してapp-styles.B3Vj9TBQのハッシュ不整合に引っかかった反省も書いておく。","/deploy-optimization-r2-redirects",[9,189,10,190,191,124,192,193,194],"R2","Nitro","dynamic import","デプロイ最適化","_redirects","ビルド最適化","2026-05-13T00:00:00.000Z",{"title":197,"description":198,"path":199,"tags":200,"publishedAt":203,"updatedAt":16},"blog-verifyを_payload.json廃止に対応してHTML走査ベースに切り替えた","Nuxt Content 3.11で _payload.json から collection 結果が消えた。検証スクリプトを dist/blog/index.html の直接走査に作り直し、デバッグ残骸の blog-index-sample.html も削除して2コミットに分けてコミットした記録。","/blog-verify-html-walker",[201,202,69,9],"Nuxt Content","blog-verify","2026-05-20T00:00:00.000Z",{"title":205,"description":206,"path":207,"tags":208,"publishedAt":203,"updatedAt":16},"Astroガントで8/28最終便が見切れる問題を表示用endDate+1日バッファで直した","family-trips（Astro + Cloudflare Pages）の旅行詳細ページで、ガント右端の18:35便が枠外に飛び出していた。コンテンツのendDateは触らず、描画用にganttEndDate = endDate + 1日のダミー終点を渡して右側にのれんを足した。","/family-trips-gantt-buffer",[209,210,211,9],"Astro","Gantt","UI修正",{"title":213,"description":214,"path":215,"tags":216,"publishedAt":219,"updatedAt":16},"Cloudflare Pages にカスタムドメインを設定する手順（2026年版・Apex / サブドメイン両対応）","Cloudflare Pages に独自ドメインを紐づける具体的な手順を、Apex ドメイン（example.com）とサブドメイン（log.example.com）両方のパターンで整理。Cloudflare 配下 / 他レジストラ配下別の DNS 設定差、SSL 証明書の自動発行タイミング、よくあるエラーの対処までまとめる。","/cloudflare-pages-custom-domain-setup",[9,217,132,218,13],"カスタムドメイン","SSL","2026-06-09T00:00:00.000Z",1781076236389]