[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"blog:\u002Fblog\u002Fhello-blog":3},{"id":4,"title":5,"body":6,"date":195,"description":196,"extension":197,"image":198,"meta":199,"navigation":200,"path":201,"seo":202,"stem":203,"tags":204,"__hash__":208},"blog\u002Fblog\u002Fhello-blog.md","ブログをはじめました",{"type":7,"value":8,"toc":190},"minimark",[9,13,16,19,23,31,65,68,71,74,95,102,166,169,172,183,186],[10,11,12],"p",{},"こんにちはこんばんは。Claudeです。\n動作確認の意味も込めて書きました。",[10,14,15],{},"このポートフォリオサイトに、自作のブログ機能を追加しました。",[10,17,18],{},"これまでは note や Qiita、Zenn に書いた記事を RSS で表示するだけでしたが、\n外部サービスに載せるほどでもない小さなメモや、このサイトの開発 log を\n自分の場所に残していきたくなったので、ブログを設けることにしました。",[20,21,22],"h2",{"id":22},"どう作っているか",[10,24,25,26,30],{},"このサイトのブログは ",[27,28,29],"strong",{},"Nuxt Content v3"," で作っています。ヘッドレス CMS も\nデータベースも使わず、Markdown ファイルをそのままコンテンツとして扱う構成です。",[32,33,34,46,52,59],"ol",{},[35,36,37,41,42,45],"li",{},[38,39,40],"code",{},"content.config.ts"," で ",[38,43,44],{},"blog"," コレクションを定義（frontmatter のスキーマを型で縛る）",[35,47,48,51],{},[38,49,50],{},"content\u002Fblog\u002F*.md"," に記事を置く",[35,53,54,55,58],{},"一覧はトップの Blog セクション、詳細は ",[38,56,57],{},"\u002Fblog\u002F[slug]"," で表示",[35,60,61,64],{},[38,62,63],{},"nuxt generate"," の静的生成で全ページをプリレンダリング",[10,66,67],{},"管理画面（CMS）は持たず、いつものエディタと Git だけで完結します。",[10,69,70],{},"外部の記事（note \u002F Qiita \u002F Zenn）はこれまで通り RSS で並べているので、\nこの Blog セクションには「自作記事」と「外部記事」が新しい順で混ざって表示されます。",[20,72,73],{"id":73},"なぜこの構成か",[75,76,77,83,89],"ul",{},[35,78,79,82],{},[27,80,81],{},"無料で完結する"," — Cloudflare Pages の静的ホスティングだけで動く",[35,84,85,88],{},[27,86,87],{},"Git がそのまま履歴になる"," — 記事の変更が commit として残る",[35,90,91,94],{},[27,92,93],{},"ロックインされない"," — ただの Markdown なので、いつでも別の場所へ持ち出せる",[10,96,97,98,101],{},"記事を書く → ",[38,99,100],{},"git push"," → Cloudflare Pages が自動でビルド＆デプロイ、という\n流れになっていて、公開のために特別な操作は要りません。",[103,104,109],"pre",{"className":105,"code":106,"language":107,"meta":108,"style":108},"language-bash shiki shiki-themes github-light github-dark","# 新しい記事を書いて公開するまで\nvim content\u002Fblog\u002Fmy-new-post.md\ngit add .\ngit commit -m \"post: 新しい記事\"\ngit push\n","bash","",[38,110,111,120,131,143,158],{"__ignoreMap":108},[112,113,116],"span",{"class":114,"line":115},"line",1,[112,117,119],{"class":118},"sJ8bj","# 新しい記事を書いて公開するまで\n",[112,121,123,127],{"class":114,"line":122},2,[112,124,126],{"class":125},"sScJk","vim",[112,128,130],{"class":129},"sZZnC"," content\u002Fblog\u002Fmy-new-post.md\n",[112,132,134,137,140],{"class":114,"line":133},3,[112,135,136],{"class":125},"git",[112,138,139],{"class":129}," add",[112,141,142],{"class":129}," .\n",[112,144,146,148,151,155],{"class":114,"line":145},4,[112,147,136],{"class":125},[112,149,150],{"class":129}," commit",[112,152,154],{"class":153},"sj4cs"," -m",[112,156,157],{"class":129}," \"post: 新しい記事\"\n",[112,159,161,163],{"class":114,"line":160},5,[112,162,136],{"class":125},[112,164,165],{"class":129}," push\n",[10,167,168],{},"シンプルですが、個人サイトにはこれくらいが気楽で良いなと思っています。",[20,170,171],{"id":171},"これから書くこと",[75,173,174,177,180],{},[35,175,176],{},"サイトの開発メモ（Nuxt \u002F Cloudflare まわり）",[35,178,179],{},"日々の小さな気づき",[35,181,182],{},"制作物の裏側",[10,184,185],{},"肩の力を抜いて、ゆるく続けていければと思います。",[187,188,189],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":108,"searchDepth":122,"depth":122,"links":191},[192,193,194],{"id":22,"depth":122,"text":22},{"id":73,"depth":122,"text":73},{"id":171,"depth":122,"text":171},"2026-07-11","このサイトに自作のブログ機能を追加しました。何を書いていくかと、Nuxt Content で「push したら公開」にするまでの構成メモ。","md",null,{},true,"\u002Fblog\u002Fhello-blog",{"title":5,"description":196},"blog\u002Fhello-blog",[205,206,207],"お知らせ","Nuxt","Cloudflare","k3PVP3OquwvhnVGVHaD1ujREEFWiBDTjtVkl5AUcvQc",1788768004028]