[{"data":1,"prerenderedAt":266},["ShallowReactive",2],{"tag-articles-cloudflare":3},[4,10,15,20,25,30,35,39,43,49,53,58,62,67,72,76,81,86,91,96,101,105,110,115,120,124,129,134,139,143,148,152,157,161,166,170,175,180,185,190,195,199,203,208,213,218,223,228,233,238,242,247,252,257,262],{"title":5,"description":6,"path":7,"publishedAt":8,"updatedAt":9},"Nuxt Contentでのマークダウン画像管理","VS Codeプレビュー、ローカル開発、Cloudflareデプロイメントの3つの環境で画像を正しく表示する方法","/nuxt-content-image-handling","2025-10-17T00:00:00.000Z",null,{"title":11,"description":12,"path":13,"publishedAt":14,"updatedAt":9},"サイトSEO診断サマリー","2025-10-25 時点での Nuxt Content サイトにおける検索最適化課題と優先アクション","/site-seo-diagnosis","2025-10-25T00:00:00.000Z",{"title":16,"description":17,"path":18,"publishedAt":19,"updatedAt":9},"Cloudflare Pages × GitHub 自動デプロイ設定ガイド","Cloudflare PagesとGitHubリポジトリを連携し、プッシュするだけで自動ビルド・デプロイを実現する設定方法","/cloudflare-github-auto-deploy","2025-10-26T00:00:00.000Z",{"title":21,"description":22,"path":23,"publishedAt":24,"updatedAt":9},"コーディング規約ビューアのTOC開閉バグ修正","Cloudflareデプロイ後にTable of Contentsの開閉ができなくなった問題の原因と解決方法","/coding-standards-viewer-toc-reactivity-fix","2025-11-18T00:00:00.000Z",{"title":26,"description":27,"path":28,"publishedAt":29,"updatedAt":9},"Cloudflare Pages デプロイエラー解決：_routes.json の100文字制限対応","Cloudflare Pagesへのデプロイ時に発生する「_routes.jsonのルールが100文字を超えている」エラーの原因と恒久的な解決方法","/cloudflare-pages-routes-100-char-limit-fix","2025-11-26T00:00:00.000Z",{"title":31,"description":32,"path":33,"publishedAt":34,"updatedAt":9},"Cloudflare Pagesにカスタムドメインを設定する手順","デフォルトのURLから独自ドメイン・サブドメインに切り替える方法","/cloudflare-pages-custom-domain","2025-11-27T00:00:00.000Z",{"title":36,"description":37,"path":38,"publishedAt":34,"updatedAt":9},"お名前.comからCloudflareへドメイン移管する完全ガイド","お名前.comで管理しているドメインをCloudflare Registrarに移管する詳細手順","/domain-transfer-onamae-to-cloudflare",{"title":40,"description":41,"path":42,"publishedAt":34,"updatedAt":9},"NetlifyサイトをCloudflare Pagesに移行する手順","他人のNetlifyアカウントで管理されていたサイトを自分のCloudflare Pagesに完全移行する方法","/migrate-netlify-site-to-cloudflare-pages",{"title":44,"description":45,"path":46,"publishedAt":47,"updatedAt":48},"既存Cloudflare PagesプロジェクトをDirect UploadからGit連携に移行する手順","カスタムドメイン・サブドメイン設定を含む、既存のCloudflare PagesプロジェクトをDirect UploadからGitHub連携に移行する詳細ガイド","/cloudflare-pages-migration-guide","2025-11-29T00:00:00.000Z","2025-12-07T00:00:00.000Z",{"title":50,"description":51,"path":52,"publishedAt":47,"updatedAt":47},"WordPress から Nuxt + Cloudflare への完全移行ガイド","WordPress を廃止し、Nuxt 3 + @nuxt/content + Cloudflare Pages でブログとログサイトを統合する完成形アーキテクチャと具体的な移行ステップ","/wordpress-to-nuxt-cloudflare-migration",{"title":54,"description":55,"path":56,"publishedAt":57,"updatedAt":57},"AI時代のホームページ作成：Claude + Cloudflareで追加費用なしで始める","freeeホームページは月額980円〜のホームページ専用サービス。一方、Claude（月額20ドル）は汎用AIツールとして様々な業務に使えて、Cloudflareと組み合わせればホームページ制作も追加費用なし。より賢い選択を解説します。","/ai-website-creation-free","2025-12-01T00:00:00.000Z",{"title":59,"description":60,"path":61,"publishedAt":57,"updatedAt":57},"Cloudflareデプロイの自動化スクリプト追加","pnpm build と wrangler pages deploy を1コマンドで実行できるように package.json にスクリプトを追加した手順と注意点","/deploy-script-setup",{"title":63,"description":64,"path":65,"publishedAt":66,"updatedAt":66},"Message Mockup Tool - Vue.js移行の必要性分析","Vanilla JSからVue.jsへの移行が必要になるケースと判断基準、Cloudflare Pagesでのサービス化ガイド","/message-mockup-migration-plan","2025-12-03T00:00:00.000Z",{"title":68,"description":69,"path":70,"publishedAt":71,"updatedAt":71},"Nuxt Content v3：D1データベースは本当に必要なのか？","wrangler.tomlにD1を設定しているのに、実際には使われていなかった事実。Nuxt Content v3のSQLiteデータフローを正確に理解する","/nuxt-content-d1-not-used","2025-12-05T00:00:00.000Z",{"title":73,"description":74,"path":75,"publishedAt":71,"updatedAt":71},"ページ遷移が遅い問題：SSR vs SSG の選択ミス","Nuxt Content + Cloudflare Pages構成で、ページ遷移に2-3秒かかる問題の原因分析と解決策。なぜSSRがデフォルトになっていたのか、ブログサイトにSSGが適切な理由を解説","/ssr-vs-ssg-page-transition-slow",{"title":77,"description":78,"path":79,"publishedAt":48,"updatedAt":80},"Cloudflare Pages Git統合からGitHub Actions Direct Uploadへの移行記録","Cloudflare PagesのGit統合で発生した問題と、GitHub Actionsを使ったDirect Uploadへの移行過程","/cloudflare-github-actions-migration","2025-12-08T00:00:00.000Z",{"title":82,"description":83,"path":84,"publishedAt":85,"updatedAt":85},"音声ファイル変換パイプライン（WAV→Opus）","WAVファイルをGitHubにプッシュし、ビルド時に自動でOpusに変換する仕組みの解説","/audio-wav-to-opus-pipeline","2025-12-12T00:00:00.000Z",{"title":87,"description":88,"path":89,"publishedAt":90,"updatedAt":90},"QQQ銘柄 動画バッチ生成・R2配信計画","100銘柄の財務アニメーション動画を事前生成し、Cloudflare R2から配信する計画","/video-batch-generation-plan","2025-12-16T00:00:00.000Z",{"title":92,"description":93,"path":94,"publishedAt":95,"updatedAt":9},"robots.txt構文エラーの修正","Cloudflareが追加するContent-signalディレクティブによるrobots.txt構文エラーの解決方法","/robots-txt-syntax-error-fix","2025-12-23T00:00:00.000Z",{"title":97,"description":98,"path":99,"publishedAt":100,"updatedAt":9},"Nitroプリセット変更: cloudflare-pages-static → cloudflare-pages","動的OGP画像生成のためにNitroプリセットを変更した理由と影響","/nitro-preset-change","2025-12-24T00:00:00.000Z",{"title":102,"description":103,"path":104,"publishedAt":100,"updatedAt":100},"Nuxt 3のapp/dataとpublicディレクトリの使い分け","Nuxt 3プロジェクトにおけるデータファイルの配置場所について、app/dataとpublicディレクトリの違いと使い分け基準を解説","/nuxt-data-directory-guide",{"title":106,"description":107,"path":108,"publishedAt":109,"updatedAt":109},"トレイリングスラッシュによるURL重複インデックス問題","Google Search Consoleで同一ページがスラッシュあり・なしで重複登録される原因と解決策","/trailing-slash-duplicate-index","2025-12-26T00:00:00.000Z",{"title":111,"description":112,"path":113,"publishedAt":114,"updatedAt":114},"ブラウザキャッシュでページが表示されない問題の解決","Nuxt + Cloudflare Pages環境でデプロイ後にページが表示されない問題とブラウザキャッシュの関係について","/browser-cache-troubleshooting","2025-12-28T00:00:00.000Z",{"title":116,"description":117,"path":118,"publishedAt":119,"updatedAt":9},"Google Indexing APIはブログに有効か？調査結果","Google Indexing APIのブログコンテンツへの適用可否を公式ドキュメントと専門家の見解から調査。結論：ブログには使えない。","/google-indexing-api-effectiveness","2026-01-04T00:00:00.000Z",{"title":121,"description":122,"path":123,"publishedAt":119,"updatedAt":9},"measure-deploy.ps1のPre-deploy Validation機能","デプロイ計測スクリプトに追加されたパス検証機能の目的と仕組み","/measure-deploy-validation",{"title":125,"description":126,"path":127,"publishedAt":128,"updatedAt":9},"Nuxt 2をCloudflareにデプロイしたらwranglerエラーで失敗した","Nuxt 2プロジェクトをCloudflare Pagesにデプロイする際、wrangler deployでMissing entry-pointエラーが発生する原因と解決策","/nuxt2-cloudflare-deploy-error","2026-01-07T00:00:00.000Z",{"title":130,"description":131,"path":132,"publishedAt":128,"updatedAt":133},"cockpit-nuxt-vuetify Nuxt 4 移行計画（新規プロジェクト方式）","Nuxt 2プロジェクトを新規Nuxt 4プロジェクトとしてゼロから構築し、必要な機能を段階的に移植する計画","/nuxt2-to-nuxt4-migration-plan","2026-02-15T00:00:00.000Z",{"title":135,"description":136,"path":137,"publishedAt":138,"updatedAt":9},"Cloudflare Workers Routesと静的ファイルの罠","Workers Routesを設定すると静的ファイルもWorkerを経由してしまう問題と、その解決策","/cloudflare-workers-routes-static-files","2026-01-10T00:00:00.000Z",{"title":140,"description":141,"path":142,"publishedAt":138,"updatedAt":9},"pnpm monorepoでwranglerがMODULE_NOT_FOUNDになる問題","pnpmのシンボリックリンクが壊れてwranglerが見つからないエラーの原因と解決策","/pnpm-wrangler-module-not-found",{"title":144,"description":145,"path":146,"publishedAt":147,"updatedAt":9},"2026年2月14日の開発日記 - サウンドアーカイブサイトの構築からYouTube分析ダッシュボードまで","Tokyo Soundscapeプロジェクトに集中した1日。Nuxt 3でサイト構築・Cloudflareデプロイ、yt-dlpで動画データ取得・Miller Columnダッシュボード、年間収録カレンダー、競合分析、mdx-playgroundのカテゴリ整理。","/2026-02-14-diary","2026-02-14T00:00:00.000Z",{"title":149,"description":150,"path":151,"publishedAt":133,"updatedAt":9},"oto archiveの2031年コンセプトサイトをNuxtで構築した","既存のotoarchive.comを5年後に進化させたビジョンサイトをNuxt 3で構築。React→Vue変換、Netflix風カルーセル、188地点マスターデータからの5,850件自動生成、Leaflet地図統合、11,732ルートのSSGプリレンダリングまで。","/oto-archive-concept-site-2026-02-15",{"title":153,"description":154,"path":155,"publishedAt":156,"updatedAt":9},"2026年2月16日の開発日記 - 浅草寺サウンドスケーププレイヤーの完成とインフラ整備","音声プレイヤーのMGS風UI実装、Python音声解析パイプライン構築、OSM建物オーバーレイ、R2移行によるビルド高速化、Cloudflare Accessのメール認証設定など、Tokyo Soundscapeプロジェクトを大幅に前進させた一日。","/2026-02-16-diary","2026-02-16T00:00:00.000Z",{"title":158,"description":159,"path":160,"publishedAt":156,"updatedAt":9},"浅草寺サウンドスケーププレイヤーの開発 - GPX地図・音声解析・MGS風UIの統合","GPXデータとLeaflet地図、Python音声解析パイプライン（librosa + PANNs）、MGSソリトンレーダー風UIを統合したサウンドスケーププレイヤーを開発。JSXからHTMLデモ、Nuxt 3 Vueコンポーネントへの移植、Cloudflareデプロイまで。","/soundscape-player-2026-02-16",{"title":162,"description":163,"path":164,"publishedAt":165,"updatedAt":9},"2026年2月21日の開発日記 - ダッシュボードを作って壊し、1ドメイン統合型へ舵を切った日","Better Auth + Google OAuthの本番投入、問題集機能6フェーズ拡張、独立型ダッシュボードの設計・実装・デプロイを経て同日中に1ドメイン統合型への方針転換を決断。メール環境のゼロコスト構築、テストスイート全パスまで。","/2026-02-21-diary","2026-02-21T00:00:00.000Z",{"title":167,"description":168,"path":169,"publishedAt":165,"updatedAt":9},"独自ドメインメール環境をCloudflare + Brevoで無料構築した話","Cloudflare Email RoutingとBrevoを組み合わせて、Google Workspace不要の独自ドメインメール送受信環境を構築。フッター・法的ページの整備、ドメイン戦略の整理まで。","/infrastructure-email-domain-setup-2026-02-21",{"title":171,"description":172,"path":173,"publishedAt":174,"updatedAt":9},"GA4キーイベント設定とCloudflare Bot ProtectionによるOGP遮断の解消","GA4のphone_callイベントをキーイベントに設定し、Google広告連携の判断を整理。OGP画像・descriptionが表示されない原因がCloudflare Bot Protectionによるボットブロックだった問題を特定・解消した記録","/ga4-ogp-cloudflare-2026-03-05","2026-03-05T00:00:00.000Z",{"title":176,"description":177,"path":178,"publishedAt":179,"updatedAt":9},"Cloudflare R2カスタムドメイン × Web Audio API: ブラウザのメディアキャッシュが引き起こすCORS地獄","R2カスタムドメインからクロスオリジン音声をWeb Audio APIで処理する際、ブラウザのメディアキャッシュがcors/no-corsリクエストを分離せずCORSエラーを起こす問題と、3段階CORS検証 + キャッシュバスターによる解決策","/cloudflare-r2-cors-web-audio-api","2026-03-17T00:00:00.000Z",{"title":181,"description":182,"path":183,"publishedAt":184,"updatedAt":9},"3600行のドラフトMDを11個のVueページに変換し、stepsレイアウトを汎用化した記録","会計テキスト教材10章分のマークダウンをVueページへ変換。ドラフトがCloudflareで表示されない原因を突き止め、レイアウトをstepsに統一し、SVGパス解決やトップページ追加まで一気に進めた1日の記録","/beppyo-vue-conversion","2026-04-22T00:00:00.000Z",{"title":186,"description":187,"path":188,"publishedAt":189,"updatedAt":9},"Cloudflare R2の動画が再生できない原因はWordPress時代のShift_JISファイル名だった話とCDNキャッシュバスター対応","本番環境で4本の動画が再生できないとユーザーから報告。HTTP 200は返るのに中身が49KBの404 HTMLになっていた。原因はWordPressからの移行時、Shift_JIS（%8eQ%8f%c6...）でエンコードされた日本語ファイル名のURLをUTF-8で叩いて404 HTMLを掴み、それをそのまま.mp4としてR2に上げていたこと。実体MP4を再取得してR2に再アップロードし、Cloudflare CDNが古いHTMLを返してくる対策に動画URLへ`?v=2`を付けてキャッシュバスターした。","/r2-video-shiftjis-corruption","2026-05-04T00:00:00.000Z",{"title":191,"description":192,"path":193,"publishedAt":194,"updatedAt":9},"CT Logとbot対策：AI検索で参照されたいならBot Fight Modeを入れてはいけない","CT Log経由のbotスキャン対策を調べていたら、Bot Fight ModeがAI検索クローラーも弾く可能性があるとわかった。税理士事務所など「AI検索で見つかりたい」サイトに向いている代替策を整理した。","/ct-log-bot-and-ai-search","2026-05-06T00:00:00.000Z",{"title":196,"description":197,"path":198,"publishedAt":194,"updatedAt":9},"2026年5月6日の開発日記 - ずんだもん音声132本を一括生成してR2にデプロイした日","財務3表コクピットのZ軸ハイライト改善、22取引アニメーションのSMIL化、VOICEVOXずんだもん音声132ステップの一括生成とCloudflare R2デプロイまで完走した1日。","/2026-05-06-diary",{"title":200,"description":201,"path":202,"publishedAt":194,"updatedAt":9},"ずんだもん音声解説を財務3表コクピットに組み込む：132ステップ一括生成とR2デプロイ","VOICEVOXのずんだもん（speaker_id=3）で財務3表コクピットの全解説音声132ステップを一括生成。読み誤りを繰り返し修正しながらR2にデプロイするまでの記録。","/voicevox-zundamon-audio-r2",{"title":204,"description":205,"path":206,"publishedAt":207,"updatedAt":9},"ゴールと評価関数の提示が人間の仕事になった日 — Cloudflare決算とエージェント経済","AIに任せた瞬間、評価関数を持っていない作業は消化不良になる。Cloudflare 2026Q1決算が示すエージェント1体=1課金の時代と、Claude Code自体の自己アップデートまで。","/2026-05-08-goal-evaluation-and-agent-economy","2026-05-08T00:00:00.000Z",{"title":209,"description":210,"path":211,"publishedAt":212,"updatedAt":9},"2026年5月13日の開発日記 - 教科書プロジェクト立ち上げ・都道府県クイズ・デプロイ高速化","Eurekapuの決算書教科書プロジェクトを起こし、Codexレビューを何度も往復しながら計画を固めた。都道府県農作物クイズはUIの細かい指示を10往復こなして仕上げた。デプロイ9.3分問題はR2画像移行と_redirectsで詰めた。","/2026-05-13-diary","2026-05-13T00:00:00.000Z",{"title":214,"description":215,"path":216,"publishedAt":217,"updatedAt":9},"912件の自己ループリダイレクトとOG画像署名切れを一気に直した日 — 本番障害2件をAIに調査させて根本原因まで詰めた記録","ユーザーの目視で発覚した2件の本番障害を、Claude Codeに git blame と secret rotation を代行させて根本原因まで詰めた。デプロイは473秒から293秒に短縮。","/og-image-redirect-loop-fix","2026-05-28T00:00:00.000Z",{"title":219,"description":220,"path":221,"publishedAt":222,"updatedAt":9},"非公開記事一覧をGoogleにインデックスさせない仕組みを点検した話","/blog/unpublished に置いた非公開記事を検索エンジンに載せたくない。noindex meta を入れる前に、本番ビルドから6経路で除外し本番URLを404にする既存実装が要件を満たしていると分かった点検記録。","/unpublished-noindex","2026-06-01T00:00:00.000Z",{"title":224,"description":225,"path":226,"publishedAt":227,"updatedAt":9},"Nuxt の pnpm generate を measure-deploy.ps1 でフェーズ別に計測した","Cloudflare Pages デプロイの所要時間がどこで膨らんでいるか掴めず、PowerShell スクリプトで pnpm generate と wrangler deploy をフェーズ別に計測した。途中で pnpm generate が exit 1 で落ち、原因を verify-blog-payload.mjs まで追いかけ、Opus 4.7 1M context にモデルを切り替えてから Codex でレビューを受けて締めた一日。","/nuxt-build-deploy-time-measurement","2026-06-04T00:00:00.000Z",{"title":229,"description":230,"path":231,"publishedAt":232,"updatedAt":9},"APIキーを配らずに「社内の人とAIだけが使えるCLI/MCP」を作る ― Cloudflare Access × IdP認証","APIキーの発行・配布・失効管理をやめて、API自体をIdP認証で守る。CLIとMCPを同一バイナリにして認証を共有する構成の解説と、税理士事務所に導入するときの具体的な手順。","/internal-cli-mcp-cloudflare-access","2026-06-12T00:00:00.000Z",{"title":234,"description":235,"path":236,"publishedAt":237,"updatedAt":237},"Cloudflare で AI エージェント基盤を作る 4 ステップ — Hono → Queues → Workers AI → Agents SDK","yusukebe の「AI エージェントは Cloudflare に賭けろ」と Webhook の 3 秒ルール突破ポストに触発され、Wrangler セットアップ済みの状態からエージェント基盤を組み上げるまでを 4 ステップで進める計画書兼実装ログ。","/cloudflare-agent-foundation-4-steps","2026-06-19T00:00:00.000Z",{"title":239,"description":240,"path":241,"publishedAt":237,"updatedAt":9},"2026年6月19日の開発日記 - Kindle取り込みパイプライン構築とNVIDIAセグメント可視化","Kindle蔵書のUI改善・/yomitoku-kindle で4冊一気通貫・会計書籍10冊一括取り込み・521冊の優先順位計画・NVIDIA Hyperscale/ACIE/Edge ページ追加・会計ソフトA内部APIハンズオン教材・Cloudflare Workers連載・OpenAI財務SVGウォーターフォール。Kindle軸の蔵書整備とフロント可視化を交互に進めた1日。","/2026-06-19-diary",{"title":243,"description":244,"path":245,"publishedAt":246,"updatedAt":9},"Cloudflare Pages はもう Workers の中に住んでいる ― Static Assets 統合後の地図","「Pages 推奨」だったのに、いつのまにか「Workers の Static Assets が推奨」に変わっていた。Pages が廃止されるのか、Workers と何が違うのか、自分の2プロジェクトはどうなるのかを Before / After の図で整理した。","/cloudflare-pages-to-workers-static-assets","2026-06-29T00:00:00.000Z",{"title":248,"description":249,"path":250,"publishedAt":251,"updatedAt":9},"CloudflareのMonetization Gateway ｜ Googleより「決済のVisa」に近い理由","Cloudflareが発表したMonetization Gatewayは、HTTPのステータスコード402（Payment Required）を実際に使い、1回のリクエスト往復の中でステーブルコイン決済まで完結させる仕組み。AIエージェントが人間の代わりに大量アクセスする時代を見据え、マイクロペイメントを実装コストの壁から解放する。ただし「Googleのように検索を独占する」比喩は精度が低く、実態はStripe・Google・カード会社が同じ決済レールを同時に狙う競争の一角。技術のしくみをシーケンス図で、ポジショニングの正体を比較図で整理する。","/cloudflare-monetization-gateway-x402","2026-07-08T00:00:00.000Z",{"title":253,"description":254,"path":255,"publishedAt":256,"updatedAt":9},"gogen-eitango Phase 4: D1本番適用と章末ミニテストの4択化 — Fable 5のrate limitをCodex引き継ぎで乗り切った日","英語語源学習アプリのPhase 4。D1マイグレーション0007の本番適用、英語コンテンツ全8バッチ生成中にFable 5がrate limitに到達してCodexへ引き継ぎ、章末コーナーのレイアウト修正、ミニテスト90問の4択化から本番公開までの記録。","/gogen-eitango-phase4-d1-quiz-multichoice","2026-07-16T00:00:00.000Z",{"title":258,"description":259,"path":260,"publishedAt":261,"updatedAt":9},"Cloudflare PagesとWorkers Static Assetsの違い、エッジキャッシュが効く仕組み","Cloudflare PagesとWorkers Static Assetsの関係、静的サイトでオリジンが叩かれない仕組み、GitHub Actionsとデプロイの関係を、mdx-playgroundの実際の設定を例に整理する","/cloudflare-pages-workers-static-assets","2026-07-22T00:00:00.000Z",{"title":263,"description":264,"path":265,"publishedAt":261,"updatedAt":9},"Webサービスの技術構成 2026年版 — Vue.js/Nuxt/Astroの使い分けとその理由","個人的な技術選定メモをVue.jsベースに統一し、React+ViteとNext+Viteの関係、Vue+ViteとNuxtの分かれ目、Astroとの使い分け、Workers直接とHonoの使い分け、DB・ストレージ・メール配信の規模別実例までを整理する","/web-tech-stack-2026",1784786395586]