[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fZiqjEqZvWXZ-IoN3XWw72J6ZFZFGvFUPznvErgXEJQY":3,"$fex3t1AFpAENpRWOZ0SEThGI0BiX0VGD3L3EAAW573OM":2244,"$fSK5GqAU_kiFK6NBYrhk9HXfsM8jlXwGMoBqMMen6T1I":2245,"$fm0lGbmJS49lUAosuzbr91Y3Pxycuyx7prjycUR-9MmQ":2247,"$fdud1X7gkJp9DeQtJ3KosNNSlhKAzp25IaBB7XFRLwaE":2251,"$fw02qtIXZOjyea8vyjzOdvv-cSmY8lofRQJDzbQpoFH0":2255,"$ftRIMB4fNdk93G0G7gsAC_dys5itbag6eOadp59mugPE":2259,"$fkulKZT0W2lkh15vPTje18ikU5lDm3y17rgNUm17ioAQ":2262,"$fsqTXYSEpGr5g7d6DHDh2Dgc-oI5zcaQm5O4mrOYAAtM":2266,"$fWHJvIo9vcjuEHKOaeuKTbyRvenbgnQAvCNEZNujUiKM":2270,"$fGjpfieLfrhRUm0Si9z8VdIhtT1Lo8hFyrpdBpL0rl_Q":2274,"$fmOXYjYd5ue74yF15qHecHCIoNsJDWpdzC5J1JoQiMYc":2278},{"id":4,"title":5,"body":6,"date":2230,"description":2231,"extension":1064,"icon":2232,"meta":2233,"navigation":363,"ogImage":2234,"path":2235,"published":363,"publishedAt":2236,"seo":2237,"stem":2238,"tags":2239,"updatedAt":2236,"__hash__":2243},"tech/tech/nuxt-content-v3-blog.md","Nuxt Content v3 + Nuxt Hub を使って爆速で個人ブログを作って公開する",{"type":7,"value":8,"toc":2205},"minimark",[9,16,24,28,43,53,63,69,73,76,82,88,93,96,99,103,106,109,113,116,119,122,126,129,161,167,192,198,204,209,213,216,238,242,245,263,267,270,273,291,297,325,331,464,467,470,473,488,494,501,751,757,762,767,770,773,776,786,789,795,806,809,1042,1045,1059,1120,1124,1130,1531,1548,1551,1557,1604,1610,1615,1618,1624,2121,2124,2129,2132,2144,2165,2170,2173,2176,2183,2186,2195,2198,2201],[10,11,12],"blockquote",{},[13,14,15],"p",{},"ブログはソフトウェア開発者のセルフマーケティングで使える最良のメディアのひとつだ。実際、自分のキャリアを大事に考えるすべてのソフトウェア開発者は、ブログの作成に投資すべきだと私は強く思っている。",[13,17,23],{"className":18},[19,20,21,22],"text-right","text-xs","italic","opacity-80","ジョン・ソンメズ. SOFT SKILLS ソフトウェア開発者の人生マニュアル 第2版 (p.186).",[25,26,27],"h2",{"id":27},"はじめに",[13,29,30,31,35,36,39,40,42],{},"はじめまして、フリーランスのエンジニアとして働いている",[32,33,34],"strong",{},"つきやま","です。",[37,38],"br",{},"\nVue, Nuxt, CSS が好きです。",[37,41],{},"\n技術以外だと最近はポケポケと短歌を嗜んでいます。",[13,44,45,46,48,49,52],{},"この度、個人ブログを作る運びとなり、本記事は記念すべき一本目の記事です。",[37,47],{},"\nせっかくなので一本目の記事は本ブログのような",[32,50,51],{},"個人ブログを爆速で作る方法","の記事を書こうと思います。",[13,54,55,56,59,60,62],{},"記事のテーマとして",[32,57,58],{},"個人ブログを爆速で作る","と掲げているので、ブログの根幹となる機能の解説しかしません。",[37,61],{},"\n（＝細かな機能やUIについては解説しないです）",[13,64,65,66,68],{},"Nuxt Content は 2025 年 1 月に v3 がリリースされました。",[37,67],{},"\nv3 の主な機能は公式ブログにまとめられています。",[70,71],"external-link-card-wrapper",{"url":72},"https://content.nuxt.com/blog/v3",[25,74,75],{"id":75},"事前準備",[13,77,78,79,81],{},"さっそく実装に入りたいところですが、実装に入る前に各種アカウント作成をする必要があるので作成がまだの方は作成をお願いします。",[37,80],{},"\n（すでにアカウントお持ちの方は飛ばしてください。）",[13,83,84,85,87],{},"本記事では Nuxt Hub を利用してデプロイを行います。",[37,86],{},"\nNuxt Hub を利用する際に必要なアカウント類の登録を行います。",[89,90,92],"h3",{"id":91},"github","GitHub",[13,94,95],{},"GitHub アカウントと公開するサービスのリポジトリを用意をお願いします。",[70,97],{"url":98},"https://github.com/signup",[89,100,102],{"id":101},"cloudflare","Cloudflare",[13,104,105],{},"Cloudflare Pages にホスティングするのでアカウントの作成をお願いします。",[70,107],{"url":108},"https://dash.cloudflare.com/sign-up",[89,110,112],{"id":111},"nuxt-hub","Nuxt Hub",[13,114,115],{},"Nuxt Hub を用いて Cloudflare にデプロイするのでアカウント作成をお願いします。",[70,117],{"url":118},"https://admin.hub.nuxt.com/?utm_source=hub-docs&utm_medium=header&utm_campaign=signup",[25,120,121],{"id":121},"環境構築",[89,123,125],{"id":124},"nuxt-インストール","Nuxt インストール",[70,127],{"url":128},"https://nuxt.com/docs/getting-started/installation",[130,131,136],"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-bash shiki shiki-themes material-theme-lighter github-dark-high-contrast github-dark","$ npm create nuxt sample-blog\n","bash","",[137,138,139],"code",{"__ignoreMap":135},[140,141,144,148,152,155,158],"span",{"class":142,"line":143},"line",1,[140,145,147],{"class":146},"sywW5","$",[140,149,151],{"class":150},"sSIes"," npm",[140,153,154],{"class":150}," create",[140,156,157],{"class":150}," nuxt",[140,159,160],{"class":150}," sample-blog\n",[13,162,163,164,166],{},"プロジェクト名は任意の名前をつけてください。",[37,165],{},"\nインストールが済んだらディレクトリを移動して、開発サーバーを起動してみましょう。",[130,168,170],{"className":132,"code":169,"language":134,"meta":135,"style":135},"cd sample-blog\nnpm run dev\n",[137,171,172,180],{"__ignoreMap":135},[140,173,174,178],{"class":142,"line":143},[140,175,177],{"class":176},"sFoIN","cd",[140,179,160],{"class":150},[140,181,183,186,189],{"class":142,"line":182},2,[140,184,185],{"class":146},"npm",[140,187,188],{"class":150}," run",[140,190,191],{"class":150}," dev\n",[13,193,194],{},[195,196],"img",{"alt":135,"src":197},"https://res.cloudinary.com/dyoyv8djx/image/upload/v1743334480/tsukiyama-blog/nuxt-content-v3-blog/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-03-30_20.29.14_yc0omm.png",[13,199,200,203],{},[137,201,202],{},"localhost:3000","にアクセスして Welcome ページが表示されていれば完了です。",[13,205,206],{},[32,207,208],{},"デプロイの際にGitHubリポジトリと紐づける必要があるのでリポジトリの作成・紐付けも行います。",[89,210,212],{"id":211},"nuxt-content-インストール","Nuxt Content インストール",[70,214],{"url":215},"https://content.nuxt.com/docs/getting-started/installation",[130,217,219],{"className":132,"code":218,"language":134,"meta":135,"style":135},"npx nuxi module add content\n",[137,220,221],{"__ignoreMap":135},[140,222,223,226,229,232,235],{"class":142,"line":143},[140,224,225],{"class":146},"npx",[140,227,228],{"class":150}," nuxi",[140,230,231],{"class":150}," module",[140,233,234],{"class":150}," add",[140,236,237],{"class":150}," content\n",[89,239,241],{"id":240},"nuxt-hub-インストール","Nuxt Hub インストール",[70,243],{"url":244},"https://hub.nuxt.com/docs/getting-started/installation",[130,246,248],{"className":132,"code":247,"language":134,"meta":135,"style":135},"npx nuxi module add hub\n",[137,249,250],{"__ignoreMap":135},[140,251,252,254,256,258,260],{"class":142,"line":143},[140,253,225],{"class":146},[140,255,228],{"class":150},[140,257,231],{"class":150},[140,259,234],{"class":150},[140,261,262],{"class":150}," hub\n",[89,264,266],{"id":265},"tailwind-css-nice-to-have","Tailwind CSS (Nice to Have)",[13,268,269],{},"（Tailwind CSS はインストールしなくても問題ないです。）",[70,271],{"url":272},"https://tailwindcss.com/docs/installation/using-vite",[130,274,276],{"className":132,"code":275,"language":134,"meta":135,"style":135},"npm install tailwindcss @tailwindcss/vite\n",[137,277,278],{"__ignoreMap":135},[140,279,280,282,285,288],{"class":142,"line":143},[140,281,185],{"class":146},[140,283,284],{"class":150}," install",[140,286,287],{"class":150}," tailwindcss",[140,289,290],{"class":150}," @tailwindcss/vite\n",[13,292,293,296],{},[137,294,295],{},"~/assets/css/tailwind.css","を新規作成します。",[130,298,303],{"className":299,"code":300,"filename":301,"language":302,"meta":135,"style":135},"language-css shiki shiki-themes material-theme-lighter github-dark-high-contrast github-dark","@import \"tailwindcss\";\n","tailwind.css","css",[137,304,305],{"__ignoreMap":135},[140,306,307,311,315,318,321],{"class":142,"line":143},[140,308,310],{"class":309},"stP2V","@import",[140,312,314],{"class":313},"sPUPB"," \"",[140,316,317],{"class":150},"tailwindcss",[140,319,320],{"class":313},"\"",[140,322,324],{"class":323},"seLpV",";\n",[13,326,327,330],{},[137,328,329],{},"nuxt.config.ts","に Tailwind CSS の記述を追加します。",[130,332,336],{"className":333,"code":334,"filename":329,"language":335,"meta":135,"style":135},"language-ts shiki shiki-themes material-theme-lighter github-dark-high-contrast github-dark","import tailwindcss from '@tailwindcss/vite'\n\nexport default defineNuxtConfig({\n  // ...\n  css: ['~/assets/css/tailwind.css'],\n  vite: {\n    plugins: [tailwindcss()],\n  },\n})\n","ts",[137,337,338,359,365,386,393,419,430,447,455],{"__ignoreMap":135},[140,339,340,343,347,350,353,356],{"class":142,"line":143},[140,341,342],{"class":309},"import",[140,344,346],{"class":345},"sdyPO"," tailwindcss ",[140,348,349],{"class":309},"from",[140,351,352],{"class":313}," '",[140,354,355],{"class":150},"@tailwindcss/vite",[140,357,358],{"class":313},"'\n",[140,360,361],{"class":142,"line":182},[140,362,364],{"emptyLinePlaceholder":363},true,"\n",[140,366,368,371,374,378,382],{"class":142,"line":367},3,[140,369,370],{"class":309},"export",[140,372,373],{"class":309}," default",[140,375,377],{"class":376},"s7KVs"," defineNuxtConfig",[140,379,381],{"class":380},"sipQf","(",[140,383,385],{"class":384},"sfFde","{\n",[140,387,389],{"class":142,"line":388},4,[140,390,392],{"class":391},"sZPSj","  // ...\n",[140,394,396,400,403,406,409,411,413,416],{"class":142,"line":395},5,[140,397,399],{"class":398},"sLCpo","  css",[140,401,402],{"class":323},":",[140,404,405],{"class":345}," [",[140,407,408],{"class":313},"'",[140,410,295],{"class":150},[140,412,408],{"class":313},[140,414,415],{"class":345},"]",[140,417,418],{"class":384},",\n",[140,420,422,425,427],{"class":142,"line":421},6,[140,423,424],{"class":398},"  vite",[140,426,402],{"class":323},[140,428,429],{"class":323}," {\n",[140,431,433,436,438,440,442,445],{"class":142,"line":432},7,[140,434,435],{"class":398},"    plugins",[140,437,402],{"class":323},[140,439,405],{"class":345},[140,441,317],{"class":376},[140,443,444],{"class":345},"()]",[140,446,418],{"class":323},[140,448,450,453],{"class":142,"line":449},8,[140,451,452],{"class":323},"  }",[140,454,418],{"class":384},[140,456,458,461],{"class":142,"line":457},9,[140,459,460],{"class":384},"}",[140,462,463],{"class":380},")\n",[25,465,466],{"id":466},"デプロイしてみる",[13,468,469],{},"一通りの環境構築を終えたのでこの段階で一旦デプロイしてみましょう。",[89,471,472],{"id":472},"デプロイコマンド",[130,474,476],{"className":132,"code":475,"language":134,"meta":135,"style":135},"npx nuxthub deploy\n",[137,477,478],{"__ignoreMap":135},[140,479,480,482,485],{"class":142,"line":143},[140,481,225],{"class":146},[140,483,484],{"class":150}," nuxthub",[140,486,487],{"class":150}," deploy\n",[13,489,490,491,493],{},"デプロイコマンドを実行するといくつか質問されます",[37,492],{},"\n基本的にデフォルトの回答で大丈夫だと思います。",[13,495,496,497,500],{},"region だけ ",[137,498,499],{},"Asia Pacific"," を選びました。",[130,502,504],{"className":132,"code":503,"language":134,"meta":135,"style":135},"$ npx nuxthub deploy\nNuxtHub CLI\nℹ No project is linked with the NUXT_HUB_PROJECT_KEY environment variable.\n│\n◇  Deploy ~/projects/sample-blog to NuxtHub?\n│  Yes\n│\n◇  Select a project\n│  Create a new project\n│\n◇  Project name\n│  sample-blog\n│\n◇  Select a region for the storage\n│  Asia Pacific\n│\n◇  Production branch (git)\n│  main\n✔ Project sample-blog created\n✔ Connected to tsukiyama-3 team.\n✔ Linked to sample-blog project.\n",[137,505,506,517,525,557,562,579,587,591,604,618,623,634,642,647,667,678,683,697,705,720,736],{"__ignoreMap":135},[140,507,508,510,513,515],{"class":142,"line":143},[140,509,147],{"class":146},[140,511,512],{"class":150}," npx",[140,514,484],{"class":150},[140,516,487],{"class":150},[140,518,519,522],{"class":142,"line":182},[140,520,521],{"class":146},"NuxtHub",[140,523,524],{"class":150}," CLI\n",[140,526,527,530,533,536,539,542,545,548,551,554],{"class":142,"line":367},[140,528,529],{"class":146},"ℹ",[140,531,532],{"class":150}," No",[140,534,535],{"class":150}," project",[140,537,538],{"class":150}," is",[140,540,541],{"class":150}," linked",[140,543,544],{"class":150}," with",[140,546,547],{"class":150}," the",[140,549,550],{"class":150}," NUXT_HUB_PROJECT_KEY",[140,552,553],{"class":150}," environment",[140,555,556],{"class":150}," variable.\n",[140,558,559],{"class":142,"line":388},[140,560,561],{"class":146},"│\n",[140,563,564,567,570,573,576],{"class":142,"line":395},[140,565,566],{"class":146},"◇",[140,568,569],{"class":150},"  Deploy",[140,571,572],{"class":150}," ~/projects/sample-blog",[140,574,575],{"class":150}," to",[140,577,578],{"class":150}," NuxtHub?\n",[140,580,581,584],{"class":142,"line":421},[140,582,583],{"class":146},"│",[140,585,586],{"class":150},"  Yes\n",[140,588,589],{"class":142,"line":432},[140,590,561],{"class":146},[140,592,593,595,598,601],{"class":142,"line":449},[140,594,566],{"class":146},[140,596,597],{"class":150},"  Select",[140,599,600],{"class":150}," a",[140,602,603],{"class":150}," project\n",[140,605,606,608,611,613,616],{"class":142,"line":457},[140,607,583],{"class":146},[140,609,610],{"class":150},"  Create",[140,612,600],{"class":150},[140,614,615],{"class":150}," new",[140,617,603],{"class":150},[140,619,621],{"class":142,"line":620},10,[140,622,561],{"class":146},[140,624,626,628,631],{"class":142,"line":625},11,[140,627,566],{"class":146},[140,629,630],{"class":150},"  Project",[140,632,633],{"class":150}," name\n",[140,635,637,639],{"class":142,"line":636},12,[140,638,583],{"class":146},[140,640,641],{"class":150},"  sample-blog\n",[140,643,645],{"class":142,"line":644},13,[140,646,561],{"class":146},[140,648,650,652,654,656,659,662,664],{"class":142,"line":649},14,[140,651,566],{"class":146},[140,653,597],{"class":150},[140,655,600],{"class":150},[140,657,658],{"class":150}," region",[140,660,661],{"class":150}," for",[140,663,547],{"class":150},[140,665,666],{"class":150}," storage\n",[140,668,670,672,675],{"class":142,"line":669},15,[140,671,583],{"class":146},[140,673,674],{"class":150},"  Asia",[140,676,677],{"class":150}," Pacific\n",[140,679,681],{"class":142,"line":680},16,[140,682,561],{"class":146},[140,684,686,688,691,694],{"class":142,"line":685},17,[140,687,566],{"class":146},[140,689,690],{"class":150},"  Production",[140,692,693],{"class":150}," branch",[140,695,696],{"class":345}," (git)\n",[140,698,700,702],{"class":142,"line":699},18,[140,701,583],{"class":146},[140,703,704],{"class":150},"  main\n",[140,706,708,711,714,717],{"class":142,"line":707},19,[140,709,710],{"class":146},"✔",[140,712,713],{"class":150}," Project",[140,715,716],{"class":150}," sample-blog",[140,718,719],{"class":150}," created\n",[140,721,723,725,728,730,733],{"class":142,"line":722},20,[140,724,710],{"class":146},[140,726,727],{"class":150}," Connected",[140,729,575],{"class":150},[140,731,732],{"class":150}," tsukiyama-3",[140,734,735],{"class":150}," team.\n",[140,737,739,741,744,746,748],{"class":142,"line":738},21,[140,740,710],{"class":146},[140,742,743],{"class":150}," Linked",[140,745,575],{"class":150},[140,747,716],{"class":150},[140,749,750],{"class":150}," project.\n",[13,752,753,754,756],{},"問題なければビルドが走ります。",[37,755],{},"\nビルドに成功するとデプロイ先の URL が表示されるのでアクセスしてみましょう。",[13,758,759],{},[195,760],{"alt":135,"src":761},"https://res.cloudinary.com/dyoyv8djx/image/upload/v1743348385/tsukiyama-blog/nuxt-content-v3-blog/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-03-31_0.26.01_kws1ic.png",[13,763,764,765],{},"Welcome ページが表示されていたら完了です。",[37,766],{},[25,768,769],{"id":769},"実装",[13,771,772],{},"環境構築も終えたのでいよいよ実装に入っていきます。",[89,774,775],{"id":775},"コレクション定義",[13,777,778,779,781,782,785],{},"v3 では従来のファイルベースの管理から SQL のデータベースシステムに移行しました。",[37,780],{},"\nファイル管理の方法が変わったからといって内部でいい感じに ",[137,783,784],{},".sqlite"," ファイルを生成してくれているので使う際に特に意識する必要はないと思います。",[70,787],{"url":788},"https://content.nuxt.com/docs/files/markdown",[13,790,791,792,794],{},"Nuxt Content v3 ではコレクションを定義してコンテンツを管理します。",[37,793],{},"\nコレクションとは、関連するコンテンツのグループです。",[13,796,797,798,801,802,804,296],{},"コレクションの定義は",[137,799,800],{},"content.config.ts","で行います。",[37,803],{},[137,805,800],{},[13,807,808],{},"コレクションには任意でスキーマの定義もできます。",[130,810,812],{"className":333,"code":811,"filename":800,"language":335,"meta":135,"style":135},"import { defineContentConfig, defineCollection, z } from '@nuxt/content'\n\nexport default defineContentConfig({\n  collections: {\n    blog: defineCollection({\n      type: \"page\",\n      source: \"blog/*.md\",\n      // スキーマ定義\n      schema: z.object({\n        title: z.string(),\n        description: z.string(),\n        image: z.string(),\n        published: z.boolean(),\n      })\n    }),\n  },\n})\n",[137,813,814,848,852,864,873,886,902,918,923,942,961,978,995,1013,1020,1030,1036],{"__ignoreMap":135},[140,815,816,818,821,824,827,830,832,835,838,841,843,846],{"class":142,"line":143},[140,817,342],{"class":309},[140,819,820],{"class":323}," {",[140,822,823],{"class":345}," defineContentConfig",[140,825,826],{"class":323},",",[140,828,829],{"class":345}," defineCollection",[140,831,826],{"class":323},[140,833,834],{"class":345}," z",[140,836,837],{"class":323}," }",[140,839,840],{"class":309}," from",[140,842,352],{"class":313},[140,844,845],{"class":150},"@nuxt/content",[140,847,358],{"class":313},[140,849,850],{"class":142,"line":182},[140,851,364],{"emptyLinePlaceholder":363},[140,853,854,856,858,860,862],{"class":142,"line":367},[140,855,370],{"class":309},[140,857,373],{"class":309},[140,859,823],{"class":376},[140,861,381],{"class":380},[140,863,385],{"class":384},[140,865,866,869,871],{"class":142,"line":388},[140,867,868],{"class":398},"  collections",[140,870,402],{"class":323},[140,872,429],{"class":323},[140,874,875,878,880,882,884],{"class":142,"line":395},[140,876,877],{"class":398},"    blog",[140,879,402],{"class":323},[140,881,829],{"class":376},[140,883,381],{"class":345},[140,885,385],{"class":323},[140,887,888,891,893,895,898,900],{"class":142,"line":421},[140,889,890],{"class":398},"      type",[140,892,402],{"class":323},[140,894,314],{"class":313},[140,896,897],{"class":150},"page",[140,899,320],{"class":313},[140,901,418],{"class":323},[140,903,904,907,909,911,914,916],{"class":142,"line":432},[140,905,906],{"class":398},"      source",[140,908,402],{"class":323},[140,910,314],{"class":313},[140,912,913],{"class":150},"blog/*.md",[140,915,320],{"class":313},[140,917,418],{"class":323},[140,919,920],{"class":142,"line":449},[140,921,922],{"class":391},"      // スキーマ定義\n",[140,924,925,928,930,932,935,938,940],{"class":142,"line":457},[140,926,927],{"class":398},"      schema",[140,929,402],{"class":323},[140,931,834],{"class":345},[140,933,934],{"class":323},".",[140,936,937],{"class":376},"object",[140,939,381],{"class":345},[140,941,385],{"class":323},[140,943,944,947,949,951,953,956,959],{"class":142,"line":620},[140,945,946],{"class":398},"        title",[140,948,402],{"class":323},[140,950,834],{"class":345},[140,952,934],{"class":323},[140,954,955],{"class":376},"string",[140,957,958],{"class":345},"()",[140,960,418],{"class":323},[140,962,963,966,968,970,972,974,976],{"class":142,"line":625},[140,964,965],{"class":398},"        description",[140,967,402],{"class":323},[140,969,834],{"class":345},[140,971,934],{"class":323},[140,973,955],{"class":376},[140,975,958],{"class":345},[140,977,418],{"class":323},[140,979,980,983,985,987,989,991,993],{"class":142,"line":636},[140,981,982],{"class":398},"        image",[140,984,402],{"class":323},[140,986,834],{"class":345},[140,988,934],{"class":323},[140,990,955],{"class":376},[140,992,958],{"class":345},[140,994,418],{"class":323},[140,996,997,1000,1002,1004,1006,1009,1011],{"class":142,"line":644},[140,998,999],{"class":398},"        published",[140,1001,402],{"class":323},[140,1003,834],{"class":345},[140,1005,934],{"class":323},[140,1007,1008],{"class":376},"boolean",[140,1010,958],{"class":345},[140,1012,418],{"class":323},[140,1014,1015,1018],{"class":142,"line":649},[140,1016,1017],{"class":323},"      }",[140,1019,463],{"class":345},[140,1021,1022,1025,1028],{"class":142,"line":669},[140,1023,1024],{"class":323},"    }",[140,1026,1027],{"class":345},")",[140,1029,418],{"class":323},[140,1031,1032,1034],{"class":142,"line":680},[140,1033,452],{"class":323},[140,1035,418],{"class":384},[140,1037,1038,1040],{"class":142,"line":685},[140,1039,460],{"class":384},[140,1041,463],{"class":380},[89,1043,1044],{"id":1044},"コンテンツ作成",[13,1046,1047,1048,1051,1052,1054,1055,1058],{},"コンテンツはルート直下に",[137,1049,1050],{},"/content","を作成して管理します。",[37,1053],{},"\nためしに",[137,1056,1057],{},"~/content/blog/","配下にいくつか以下のようにマークダウンファイルを作成してみます。",[130,1060,1065],{"className":1061,"code":1062,"filename":1063,"language":1064,"meta":135,"style":135},"language-md shiki shiki-themes material-theme-lighter github-dark-high-contrast github-dark","---\ntitle: 4月1日の記事\ndescription: 4月1日の記事です。\nimage: https://picsum.photos/584/328\npublished: true\n---\n\n# タイトル\n\nパラグラフ\n","content/blog/0401.md","md",[137,1066,1067,1073,1078,1083,1088,1093,1098,1102,1111,1115],{"__ignoreMap":135},[140,1068,1069],{"class":142,"line":143},[140,1070,1072],{"class":1071},"sDE9X","---\n",[140,1074,1075],{"class":142,"line":182},[140,1076,1077],{"class":345},"title: 4月1日の記事\n",[140,1079,1080],{"class":142,"line":367},[140,1081,1082],{"class":345},"description: 4月1日の記事です。\n",[140,1084,1085],{"class":142,"line":388},[140,1086,1087],{"class":345},"image: https://picsum.photos/584/328\n",[140,1089,1090],{"class":142,"line":395},[140,1091,1092],{"class":345},"published: true\n",[140,1094,1095],{"class":142,"line":421},[140,1096,1072],{"class":1097},"sdaUG",[140,1099,1100],{"class":142,"line":432},[140,1101,364],{"emptyLinePlaceholder":363},[140,1103,1104,1107],{"class":142,"line":449},[140,1105,1106],{"class":1097},"# ",[140,1108,1110],{"class":1109},"sDalj","タイトル\n",[140,1112,1113],{"class":142,"line":457},[140,1114,364],{"emptyLinePlaceholder":363},[140,1116,1117],{"class":142,"line":620},[140,1118,1119],{"class":345},"パラグラフ\n",[89,1121,1123],{"id":1122},"top-ページ","TOP ページ",[13,1125,1126,1129],{},[137,1127,1128],{},"~/pages/index","を作成します。",[130,1131,1136],{"className":1132,"code":1133,"filename":1134,"language":1135,"meta":135,"style":135},"language-vue shiki shiki-themes material-theme-lighter github-dark-high-contrast github-dark","\u003Cscript setup lang=\"ts\">\nconst { data } = await useAsyncData('blog', () =>\n  queryCollection('blog').all(),\n)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cul class=\"space-y-8\">\n      \u003Cli\n        v-for=\"article in data\"\n        :key=\"article.path\"\n        class=\"list-none divide-y divide-gray-300 hover:opacity-70\"\n      >\n        \u003CNuxtLink\n          :to=\"article.path\"\n          class=\"gap-x-4\"\n        >\n          \u003Cdiv class=\"space-y-1 text-blue-600 underline\">\n            \u003Ch3 class=\"text-base md:text-xl font-bold\">{{ article.title }}\u003C/h3>\n            \u003Cp class=\"text-sm md:text-base opacity-80\">\n              {{ article.description }}\n            \u003C/p>\n          \u003C/div>\n        \u003C/NuxtLink>\n      \u003C/li>\n    \u003C/ul>\n  \u003C/div>\n\u003C/template>\n","pages/index.vue","vue",[137,1137,1138,1166,1207,1231,1235,1244,1248,1257,1267,1289,1297,1312,1326,1340,1345,1353,1366,1380,1385,1405,1435,1454,1460,1470,1480,1491,1502,1512,1522],{"__ignoreMap":135},[140,1139,1140,1143,1147,1151,1154,1157,1159,1161,1163],{"class":142,"line":143},[140,1141,1142],{"class":323},"\u003C",[140,1144,1146],{"class":1145},"siCa7","script",[140,1148,1150],{"class":1149},"sOohs"," setup",[140,1152,1153],{"class":1149}," lang",[140,1155,1156],{"class":323},"=",[140,1158,320],{"class":313},[140,1160,335],{"class":150},[140,1162,320],{"class":313},[140,1164,1165],{"class":323},">\n",[140,1167,1168,1172,1174,1178,1180,1184,1187,1190,1192,1194,1197,1199,1201,1204],{"class":142,"line":182},[140,1169,1171],{"class":1170},"sGRfs","const",[140,1173,820],{"class":323},[140,1175,1177],{"class":1176},"sSuNx"," data",[140,1179,837],{"class":323},[140,1181,1183],{"class":1182},"sUBcA"," =",[140,1185,1186],{"class":309}," await",[140,1188,1189],{"class":376}," useAsyncData",[140,1191,381],{"class":345},[140,1193,408],{"class":313},[140,1195,1196],{"class":150},"blog",[140,1198,408],{"class":313},[140,1200,826],{"class":323},[140,1202,1203],{"class":323}," ()",[140,1205,1206],{"class":1170}," =>\n",[140,1208,1209,1212,1214,1216,1218,1220,1222,1224,1227,1229],{"class":142,"line":367},[140,1210,1211],{"class":376},"  queryCollection",[140,1213,381],{"class":345},[140,1215,408],{"class":313},[140,1217,1196],{"class":150},[140,1219,408],{"class":313},[140,1221,1027],{"class":345},[140,1223,934],{"class":323},[140,1225,1226],{"class":376},"all",[140,1228,958],{"class":345},[140,1230,418],{"class":323},[140,1232,1233],{"class":142,"line":388},[140,1234,463],{"class":345},[140,1236,1237,1240,1242],{"class":142,"line":395},[140,1238,1239],{"class":323},"\u003C/",[140,1241,1146],{"class":1145},[140,1243,1165],{"class":323},[140,1245,1246],{"class":142,"line":421},[140,1247,364],{"emptyLinePlaceholder":363},[140,1249,1250,1252,1255],{"class":142,"line":432},[140,1251,1142],{"class":323},[140,1253,1254],{"class":1145},"template",[140,1256,1165],{"class":323},[140,1258,1259,1262,1265],{"class":142,"line":449},[140,1260,1261],{"class":323},"  \u003C",[140,1263,1264],{"class":1145},"div",[140,1266,1165],{"class":323},[140,1268,1269,1272,1275,1278,1280,1282,1285,1287],{"class":142,"line":457},[140,1270,1271],{"class":323},"    \u003C",[140,1273,1274],{"class":1145},"ul",[140,1276,1277],{"class":1149}," class",[140,1279,1156],{"class":323},[140,1281,320],{"class":313},[140,1283,1284],{"class":150},"space-y-8",[140,1286,320],{"class":313},[140,1288,1165],{"class":323},[140,1290,1291,1294],{"class":142,"line":620},[140,1292,1293],{"class":323},"      \u003C",[140,1295,1296],{"class":1145},"li\n",[140,1298,1299,1302,1304,1306,1309],{"class":142,"line":625},[140,1300,1301],{"class":1149},"        v-for",[140,1303,1156],{"class":323},[140,1305,320],{"class":313},[140,1307,1308],{"class":150},"article in data",[140,1310,1311],{"class":313},"\"\n",[140,1313,1314,1317,1319,1321,1324],{"class":142,"line":636},[140,1315,1316],{"class":1149},"        :key",[140,1318,1156],{"class":323},[140,1320,320],{"class":313},[140,1322,1323],{"class":150},"article.path",[140,1325,1311],{"class":313},[140,1327,1328,1331,1333,1335,1338],{"class":142,"line":644},[140,1329,1330],{"class":1149},"        class",[140,1332,1156],{"class":323},[140,1334,320],{"class":313},[140,1336,1337],{"class":150},"list-none divide-y divide-gray-300 hover:opacity-70",[140,1339,1311],{"class":313},[140,1341,1342],{"class":142,"line":649},[140,1343,1344],{"class":323},"      >\n",[140,1346,1347,1350],{"class":142,"line":669},[140,1348,1349],{"class":323},"        \u003C",[140,1351,1352],{"class":1145},"NuxtLink\n",[140,1354,1355,1358,1360,1362,1364],{"class":142,"line":680},[140,1356,1357],{"class":1149},"          :to",[140,1359,1156],{"class":323},[140,1361,320],{"class":313},[140,1363,1323],{"class":150},[140,1365,1311],{"class":313},[140,1367,1368,1371,1373,1375,1378],{"class":142,"line":685},[140,1369,1370],{"class":1149},"          class",[140,1372,1156],{"class":323},[140,1374,320],{"class":313},[140,1376,1377],{"class":150},"gap-x-4",[140,1379,1311],{"class":313},[140,1381,1382],{"class":142,"line":699},[140,1383,1384],{"class":323},"        >\n",[140,1386,1387,1390,1392,1394,1396,1398,1401,1403],{"class":142,"line":707},[140,1388,1389],{"class":323},"          \u003C",[140,1391,1264],{"class":1145},[140,1393,1277],{"class":1149},[140,1395,1156],{"class":323},[140,1397,320],{"class":313},[140,1399,1400],{"class":150},"space-y-1 text-blue-600 underline",[140,1402,320],{"class":313},[140,1404,1165],{"class":323},[140,1406,1407,1410,1412,1414,1416,1418,1421,1423,1426,1429,1431,1433],{"class":142,"line":722},[140,1408,1409],{"class":323},"            \u003C",[140,1411,89],{"class":1145},[140,1413,1277],{"class":1149},[140,1415,1156],{"class":323},[140,1417,320],{"class":313},[140,1419,1420],{"class":150},"text-base md:text-xl font-bold",[140,1422,320],{"class":313},[140,1424,1425],{"class":323},">",[140,1427,1428],{"class":345},"{{ article.title }}",[140,1430,1239],{"class":323},[140,1432,89],{"class":1145},[140,1434,1165],{"class":323},[140,1436,1437,1439,1441,1443,1445,1447,1450,1452],{"class":142,"line":738},[140,1438,1409],{"class":323},[140,1440,13],{"class":1145},[140,1442,1277],{"class":1149},[140,1444,1156],{"class":323},[140,1446,320],{"class":313},[140,1448,1449],{"class":150},"text-sm md:text-base opacity-80",[140,1451,320],{"class":313},[140,1453,1165],{"class":323},[140,1455,1457],{"class":142,"line":1456},22,[140,1458,1459],{"class":345},"              {{ article.description }}\n",[140,1461,1463,1466,1468],{"class":142,"line":1462},23,[140,1464,1465],{"class":323},"            \u003C/",[140,1467,13],{"class":1145},[140,1469,1165],{"class":323},[140,1471,1473,1476,1478],{"class":142,"line":1472},24,[140,1474,1475],{"class":323},"          \u003C/",[140,1477,1264],{"class":1145},[140,1479,1165],{"class":323},[140,1481,1483,1486,1489],{"class":142,"line":1482},25,[140,1484,1485],{"class":323},"        \u003C/",[140,1487,1488],{"class":1145},"NuxtLink",[140,1490,1165],{"class":323},[140,1492,1494,1497,1500],{"class":142,"line":1493},26,[140,1495,1496],{"class":323},"      \u003C/",[140,1498,1499],{"class":1145},"li",[140,1501,1165],{"class":323},[140,1503,1505,1508,1510],{"class":142,"line":1504},27,[140,1506,1507],{"class":323},"    \u003C/",[140,1509,1274],{"class":1145},[140,1511,1165],{"class":323},[140,1513,1515,1518,1520],{"class":142,"line":1514},28,[140,1516,1517],{"class":323},"  \u003C/",[140,1519,1264],{"class":1145},[140,1521,1165],{"class":323},[140,1523,1525,1527,1529],{"class":142,"line":1524},29,[140,1526,1239],{"class":323},[140,1528,1254],{"class":1145},[140,1530,1165],{"class":323},[13,1532,1533,1534,1537,1538,1540,1543,1544,1547],{},"コンテンツの取得は",[137,1535,1536],{},"queryCollection","を用います。",[37,1539],{},[137,1541,1542],{},"published","が",[137,1545,1546],{},"true","の記事を取得するように絞り込んでいます。",[70,1549],{"url":1550},"https://content.nuxt.com/docs/utils/query-collection",[13,1552,1553,1556],{},[137,1554,1555],{},"app.vue","も修正します。",[130,1558,1560],{"className":1132,"code":1559,"filename":1555,"language":1135,"meta":135,"style":135},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003CNuxtPage />\n  \u003C/div>\n\u003C/template>\n",[137,1561,1562,1570,1578,1588,1596],{"__ignoreMap":135},[140,1563,1564,1566,1568],{"class":142,"line":143},[140,1565,1142],{"class":323},[140,1567,1254],{"class":1145},[140,1569,1165],{"class":323},[140,1571,1572,1574,1576],{"class":142,"line":182},[140,1573,1261],{"class":323},[140,1575,1264],{"class":1145},[140,1577,1165],{"class":323},[140,1579,1580,1582,1585],{"class":142,"line":367},[140,1581,1271],{"class":323},[140,1583,1584],{"class":1145},"NuxtPage",[140,1586,1587],{"class":323}," />\n",[140,1589,1590,1592,1594],{"class":142,"line":388},[140,1591,1517],{"class":323},[140,1593,1264],{"class":1145},[140,1595,1165],{"class":323},[140,1597,1598,1600,1602],{"class":142,"line":395},[140,1599,1239],{"class":323},[140,1601,1254],{"class":1145},[140,1603,1165],{"class":323},[13,1605,1606,1607,1609],{},"画面確認すると",[137,1608,1050],{},"配下に配置した記事が表示されていると思います。",[13,1611,1612],{},[195,1613],{"alt":135,"src":1614},"https://res.cloudinary.com/dyoyv8djx/image/upload/v1743910602/tsukiyama-blog/nuxt-content-v3-blog/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-04-06_12.30.49_zljzpx.png",[89,1616,1617],{"id":1617},"記事ページ",[13,1619,1620,1621,1129],{},"記事ページとして",[137,1622,1623],{},"pages/blog/[...slug]/index.vue",[130,1625,1627],{"className":1132,"code":1626,"language":1135,"meta":135,"style":135},"\u003C!-- pages/blog/[...slug]/index.vue -->\n\u003Cscript setup lang=\"ts\">\nconst route = useRoute()\nconst { data } = await useAsyncData(route.path, () =>\n  queryCollection('blog').path(route.path).first(),\n)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv class=\"max-w-[800px] mx-auto\">\n    \u003Carticle\n      v-if=\"data\"\n      id=\"article\"\n      class=\"space-y-12\"\n    >\n      \u003Cdiv class=\"space-y-4\">\n        \u003Cimg\n          ref=\"image\"\n          :src=\"data.image\"\n          alt=\"\"\n          width=\"584\"\n          height=\"328\"\n          class=\"mx-auto\"\n        >\n        \u003Ch1 class=\"font-bold text-xl md:text-3xl\">\n          {{ data.title }}\n        \u003C/h1>\n        \u003Cp class=\"opacity-80 text-sm md:text-base\">\n          {{ data.description }}\n        \u003C/p>\n      \u003C/div>\n      \u003CContentRenderer\n        :value=\"data\"\n        class=\"space-y-8\"\n      />\n    \u003C/article>\n    \u003Cdiv v-else>\n      \u003Ch1>記事が見つかりませんでした\u003C/h1>\n    \u003C/div>\n  \u003C/div>\n\u003C/template>\n",[137,1628,1629,1634,1654,1669,1699,1733,1737,1745,1749,1757,1776,1783,1797,1811,1825,1830,1849,1856,1870,1884,1894,1908,1922,1935,1939,1959,1964,1972,1991,1996,2005,2014,2022,2036,2049,2055,2064,2076,2094,2103,2112],{"__ignoreMap":135},[140,1630,1631],{"class":142,"line":143},[140,1632,1633],{"class":391},"\u003C!-- pages/blog/[...slug]/index.vue -->\n",[140,1635,1636,1638,1640,1642,1644,1646,1648,1650,1652],{"class":142,"line":182},[140,1637,1142],{"class":323},[140,1639,1146],{"class":1145},[140,1641,1150],{"class":1149},[140,1643,1153],{"class":1149},[140,1645,1156],{"class":323},[140,1647,320],{"class":313},[140,1649,335],{"class":150},[140,1651,320],{"class":313},[140,1653,1165],{"class":323},[140,1655,1656,1658,1661,1663,1666],{"class":142,"line":367},[140,1657,1171],{"class":1170},[140,1659,1660],{"class":1176}," route",[140,1662,1183],{"class":1182},[140,1664,1665],{"class":376}," useRoute",[140,1667,1668],{"class":345},"()\n",[140,1670,1671,1673,1675,1677,1679,1681,1683,1685,1688,1690,1693,1695,1697],{"class":142,"line":388},[140,1672,1171],{"class":1170},[140,1674,820],{"class":323},[140,1676,1177],{"class":1176},[140,1678,837],{"class":323},[140,1680,1183],{"class":1182},[140,1682,1186],{"class":309},[140,1684,1189],{"class":376},[140,1686,1687],{"class":345},"(route",[140,1689,934],{"class":323},[140,1691,1692],{"class":345},"path",[140,1694,826],{"class":323},[140,1696,1203],{"class":323},[140,1698,1206],{"class":1170},[140,1700,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1724,1726,1729,1731],{"class":142,"line":395},[140,1702,1211],{"class":376},[140,1704,381],{"class":345},[140,1706,408],{"class":313},[140,1708,1196],{"class":150},[140,1710,408],{"class":313},[140,1712,1027],{"class":345},[140,1714,934],{"class":323},[140,1716,1692],{"class":376},[140,1718,1687],{"class":345},[140,1720,934],{"class":323},[140,1722,1723],{"class":345},"path)",[140,1725,934],{"class":323},[140,1727,1728],{"class":376},"first",[140,1730,958],{"class":345},[140,1732,418],{"class":323},[140,1734,1735],{"class":142,"line":421},[140,1736,463],{"class":345},[140,1738,1739,1741,1743],{"class":142,"line":432},[140,1740,1239],{"class":323},[140,1742,1146],{"class":1145},[140,1744,1165],{"class":323},[140,1746,1747],{"class":142,"line":449},[140,1748,364],{"emptyLinePlaceholder":363},[140,1750,1751,1753,1755],{"class":142,"line":457},[140,1752,1142],{"class":323},[140,1754,1254],{"class":1145},[140,1756,1165],{"class":323},[140,1758,1759,1761,1763,1765,1767,1769,1772,1774],{"class":142,"line":620},[140,1760,1261],{"class":323},[140,1762,1264],{"class":1145},[140,1764,1277],{"class":1149},[140,1766,1156],{"class":323},[140,1768,320],{"class":313},[140,1770,1771],{"class":150},"max-w-[800px] mx-auto",[140,1773,320],{"class":313},[140,1775,1165],{"class":323},[140,1777,1778,1780],{"class":142,"line":625},[140,1779,1271],{"class":323},[140,1781,1782],{"class":1145},"article\n",[140,1784,1785,1788,1790,1792,1795],{"class":142,"line":636},[140,1786,1787],{"class":1149},"      v-if",[140,1789,1156],{"class":323},[140,1791,320],{"class":313},[140,1793,1794],{"class":150},"data",[140,1796,1311],{"class":313},[140,1798,1799,1802,1804,1806,1809],{"class":142,"line":644},[140,1800,1801],{"class":1149},"      id",[140,1803,1156],{"class":323},[140,1805,320],{"class":313},[140,1807,1808],{"class":150},"article",[140,1810,1311],{"class":313},[140,1812,1813,1816,1818,1820,1823],{"class":142,"line":649},[140,1814,1815],{"class":1149},"      class",[140,1817,1156],{"class":323},[140,1819,320],{"class":313},[140,1821,1822],{"class":150},"space-y-12",[140,1824,1311],{"class":313},[140,1826,1827],{"class":142,"line":669},[140,1828,1829],{"class":323},"    >\n",[140,1831,1832,1834,1836,1838,1840,1842,1845,1847],{"class":142,"line":680},[140,1833,1293],{"class":323},[140,1835,1264],{"class":1145},[140,1837,1277],{"class":1149},[140,1839,1156],{"class":323},[140,1841,320],{"class":313},[140,1843,1844],{"class":150},"space-y-4",[140,1846,320],{"class":313},[140,1848,1165],{"class":323},[140,1850,1851,1853],{"class":142,"line":685},[140,1852,1349],{"class":323},[140,1854,1855],{"class":1145},"img\n",[140,1857,1858,1861,1863,1865,1868],{"class":142,"line":699},[140,1859,1860],{"class":1149},"          ref",[140,1862,1156],{"class":323},[140,1864,320],{"class":313},[140,1866,1867],{"class":150},"image",[140,1869,1311],{"class":313},[140,1871,1872,1875,1877,1879,1882],{"class":142,"line":707},[140,1873,1874],{"class":1149},"          :src",[140,1876,1156],{"class":323},[140,1878,320],{"class":313},[140,1880,1881],{"class":150},"data.image",[140,1883,1311],{"class":313},[140,1885,1886,1889,1891],{"class":142,"line":722},[140,1887,1888],{"class":1149},"          alt",[140,1890,1156],{"class":323},[140,1892,1893],{"class":313},"\"\"\n",[140,1895,1896,1899,1901,1903,1906],{"class":142,"line":738},[140,1897,1898],{"class":1149},"          width",[140,1900,1156],{"class":323},[140,1902,320],{"class":313},[140,1904,1905],{"class":150},"584",[140,1907,1311],{"class":313},[140,1909,1910,1913,1915,1917,1920],{"class":142,"line":1456},[140,1911,1912],{"class":1149},"          height",[140,1914,1156],{"class":323},[140,1916,320],{"class":313},[140,1918,1919],{"class":150},"328",[140,1921,1311],{"class":313},[140,1923,1924,1926,1928,1930,1933],{"class":142,"line":1462},[140,1925,1370],{"class":1149},[140,1927,1156],{"class":323},[140,1929,320],{"class":313},[140,1931,1932],{"class":150},"mx-auto",[140,1934,1311],{"class":313},[140,1936,1937],{"class":142,"line":1472},[140,1938,1384],{"class":323},[140,1940,1941,1943,1946,1948,1950,1952,1955,1957],{"class":142,"line":1482},[140,1942,1349],{"class":323},[140,1944,1945],{"class":1145},"h1",[140,1947,1277],{"class":1149},[140,1949,1156],{"class":323},[140,1951,320],{"class":313},[140,1953,1954],{"class":150},"font-bold text-xl md:text-3xl",[140,1956,320],{"class":313},[140,1958,1165],{"class":323},[140,1960,1961],{"class":142,"line":1493},[140,1962,1963],{"class":345},"          {{ data.title }}\n",[140,1965,1966,1968,1970],{"class":142,"line":1504},[140,1967,1485],{"class":323},[140,1969,1945],{"class":1145},[140,1971,1165],{"class":323},[140,1973,1974,1976,1978,1980,1982,1984,1987,1989],{"class":142,"line":1514},[140,1975,1349],{"class":323},[140,1977,13],{"class":1145},[140,1979,1277],{"class":1149},[140,1981,1156],{"class":323},[140,1983,320],{"class":313},[140,1985,1986],{"class":150},"opacity-80 text-sm md:text-base",[140,1988,320],{"class":313},[140,1990,1165],{"class":323},[140,1992,1993],{"class":142,"line":1524},[140,1994,1995],{"class":345},"          {{ data.description }}\n",[140,1997,1999,2001,2003],{"class":142,"line":1998},30,[140,2000,1485],{"class":323},[140,2002,13],{"class":1145},[140,2004,1165],{"class":323},[140,2006,2008,2010,2012],{"class":142,"line":2007},31,[140,2009,1496],{"class":323},[140,2011,1264],{"class":1145},[140,2013,1165],{"class":323},[140,2015,2017,2019],{"class":142,"line":2016},32,[140,2018,1293],{"class":323},[140,2020,2021],{"class":1145},"ContentRenderer\n",[140,2023,2025,2028,2030,2032,2034],{"class":142,"line":2024},33,[140,2026,2027],{"class":1149},"        :value",[140,2029,1156],{"class":323},[140,2031,320],{"class":313},[140,2033,1794],{"class":150},[140,2035,1311],{"class":313},[140,2037,2039,2041,2043,2045,2047],{"class":142,"line":2038},34,[140,2040,1330],{"class":1149},[140,2042,1156],{"class":323},[140,2044,320],{"class":313},[140,2046,1284],{"class":150},[140,2048,1311],{"class":313},[140,2050,2052],{"class":142,"line":2051},35,[140,2053,2054],{"class":323},"      />\n",[140,2056,2058,2060,2062],{"class":142,"line":2057},36,[140,2059,1507],{"class":323},[140,2061,1808],{"class":1145},[140,2063,1165],{"class":323},[140,2065,2067,2069,2071,2074],{"class":142,"line":2066},37,[140,2068,1271],{"class":323},[140,2070,1264],{"class":1145},[140,2072,2073],{"class":1149}," v-else",[140,2075,1165],{"class":323},[140,2077,2079,2081,2083,2085,2088,2090,2092],{"class":142,"line":2078},38,[140,2080,1293],{"class":323},[140,2082,1945],{"class":1145},[140,2084,1425],{"class":323},[140,2086,2087],{"class":345},"記事が見つかりませんでした",[140,2089,1239],{"class":323},[140,2091,1945],{"class":1145},[140,2093,1165],{"class":323},[140,2095,2097,2099,2101],{"class":142,"line":2096},39,[140,2098,1507],{"class":323},[140,2100,1264],{"class":1145},[140,2102,1165],{"class":323},[140,2104,2106,2108,2110],{"class":142,"line":2105},40,[140,2107,1517],{"class":323},[140,2109,1264],{"class":1145},[140,2111,1165],{"class":323},[140,2113,2115,2117,2119],{"class":142,"line":2114},41,[140,2116,1239],{"class":323},[140,2118,1254],{"class":1145},[140,2120,1165],{"class":323},[13,2122,2123],{},"画面を確認してみるとマークダウンで書いた記事が表示されていると思います。",[13,2125,2126],{},[195,2127],{"alt":135,"src":2128},"https://res.cloudinary.com/dyoyv8djx/image/upload/v1743910601/tsukiyama-blog/nuxt-content-v3-blog/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-04-06_12.36.23_u4jfrf.png",[25,2130,2131],{"id":2131},"公開する",[13,2133,2134,2135,2138,2139,2141,2143],{},"Nuxt Hub のダッシューボードから Git リポジトリを紐づけることによって、",[137,2136,2137],{},"main","ブランチにpushするだけでデプロイできるようになります。簡単ですね。",[37,2140],{},[137,2142,2137],{},"ではないブランチにpushするとプレビュー環境が作られます。嬉しいですね。",[13,2145,2146,2149,2150,2149,2153,2149,2156,2149,2159,2149,2162],{},[137,2147,2148],{},"ダッシュボード"," > ",[137,2151,2152],{},"該当プロジェクト",[137,2154,2155],{},"Settings",[137,2157,2158],{},"General",[137,2160,2161],{},"Git repository",[137,2163,2164],{},"Link repository",[13,2166,2167],{},[195,2168],{"alt":135,"src":2169},"https://res.cloudinary.com/dyoyv8djx/image/upload/v1743914270/tsukiyama-blog/nuxt-content-v3-blog/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-04-06_13.32.34_nl65ye.png",[13,2171,2172],{},"（Nuxt Content を Cloudflare Pages にホスティングする場合は、D1データベースに紐付ける必要があるのですが、その辺は Nuxt Hub がいい感じにしてくれているっぽいです。）",[25,2174,2175],{"id":2175},"おわりに",[13,2177,2178,2179,2182],{},"本記事では",[32,2180,2181],{},"Nuxt Contentを使って爆速で個人ブログを作る","ことをテーマになるべく寄り道をせずに最低限のステップだけを紹介しました。",[13,2184,2185],{},"細かい機能やUIについてはご自身の好みでカスタマイズしていってください。",[13,2187,2188,2189,2191,2192,2194],{},"本ブログのコードは公開しています。",[37,2190],{},"\n本記事で実装しているコードとは一部異なりますが気になる箇所があればご覧ください。",[37,2193],{},"\n（誤字脱字や内容の誤りなどがありましたらコメントやIssueを建てていただけるとありがたいです。）",[70,2196],{"url":2197},"https://github.com/tsukiyama-3/tsukiyama-blog",[13,2199,2200],{},"今後も主にフロントエンドにまつわる記事を書いていく予定ですので、お見知り置きを。",[2202,2203,2204],"style",{},"html pre.shiki code .sywW5, html code.shiki .sywW5{--shiki-light:#E2931D;--shiki-default:#FFB757;--shiki-dark:#B392F0}html pre.shiki code .sSIes, html code.shiki .sSIes{--shiki-light:#91B859;--shiki-default:#ADDCFF;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}html pre.shiki code .sFoIN, html code.shiki .sFoIN{--shiki-light:#6182B8;--shiki-default:#91CBFF;--shiki-dark:#79B8FF}html pre.shiki code .stP2V, html code.shiki .stP2V{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#FF9492;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sPUPB, html code.shiki .sPUPB{--shiki-light:#39ADB5;--shiki-default:#ADDCFF;--shiki-dark:#9ECBFF}html pre.shiki code .seLpV, html code.shiki .seLpV{--shiki-light:#39ADB5;--shiki-default:#F0F3F6;--shiki-dark:#E1E4E8}html pre.shiki code .sdyPO, html code.shiki .sdyPO{--shiki-light:#90A4AE;--shiki-default:#F0F3F6;--shiki-dark:#E1E4E8}html pre.shiki code .s7KVs, html code.shiki .s7KVs{--shiki-light:#6182B8;--shiki-default:#DBB7FF;--shiki-dark:#B392F0}html pre.shiki code .sipQf, html code.shiki .sipQf{--shiki-light:#90A4AE;--shiki-default:#FFB757;--shiki-dark:#E1E4E8}html pre.shiki code .sfFde, html code.shiki .sfFde{--shiki-light:#39ADB5;--shiki-default:#FFB757;--shiki-dark:#E1E4E8}html pre.shiki code .sZPSj, html code.shiki .sZPSj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#BDC4CC;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sLCpo, html code.shiki .sLCpo{--shiki-light:#E53935;--shiki-default:#F0F3F6;--shiki-dark:#E1E4E8}html pre.shiki code .sDE9X, html code.shiki .sDE9X{--shiki-light:#90A4AE;--shiki-light-font-weight:inherit;--shiki-default:#91CBFF;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .sdaUG, html code.shiki .sdaUG{--shiki-light:#39ADB5;--shiki-light-font-weight:inherit;--shiki-default:#91CBFF;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .sDalj, html code.shiki .sDalj{--shiki-light:#E2931D;--shiki-light-font-weight:inherit;--shiki-default:#91CBFF;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .siCa7, html code.shiki .siCa7{--shiki-light:#E53935;--shiki-default:#72F088;--shiki-dark:#85E89D}html pre.shiki code .sOohs, html code.shiki .sOohs{--shiki-light:#9C3EDA;--shiki-default:#91CBFF;--shiki-dark:#B392F0}html pre.shiki code .sGRfs, html code.shiki .sGRfs{--shiki-light:#9C3EDA;--shiki-default:#FF9492;--shiki-dark:#F97583}html pre.shiki code .sSuNx, html code.shiki .sSuNx{--shiki-light:#90A4AE;--shiki-default:#91CBFF;--shiki-dark:#79B8FF}html pre.shiki code .sUBcA, html code.shiki .sUBcA{--shiki-light:#39ADB5;--shiki-default:#FF9492;--shiki-dark:#F97583}",{"title":135,"searchDepth":367,"depth":367,"links":2206},[2207,2208,2213,2219,2222,2228,2229],{"id":27,"depth":182,"text":27},{"id":75,"depth":182,"text":75,"children":2209},[2210,2211,2212],{"id":91,"depth":367,"text":92},{"id":101,"depth":367,"text":102},{"id":111,"depth":367,"text":112},{"id":121,"depth":182,"text":121,"children":2214},[2215,2216,2217,2218],{"id":124,"depth":367,"text":125},{"id":211,"depth":367,"text":212},{"id":240,"depth":367,"text":241},{"id":265,"depth":367,"text":266},{"id":466,"depth":182,"text":466,"children":2220},[2221],{"id":472,"depth":367,"text":472},{"id":769,"depth":182,"text":769,"children":2223},[2224,2225,2226,2227],{"id":775,"depth":367,"text":775},{"id":1044,"depth":367,"text":1044},{"id":1122,"depth":367,"text":1123},{"id":1617,"depth":367,"text":1617},{"id":2131,"depth":182,"text":2131},{"id":2175,"depth":182,"text":2175},"2025-04-08T00:00:00.000Z","2025 年 1 月にリリースされた Nuxt Content v3 とNuxt Hubを使って個人ブログを爆速で作っていきます。","/avatar_green_oab8qx.webp",{},"https://res.cloudinary.com/dyoyv8djx/image/upload/v1744039379/tsukiyama-blog/nuxt-content-v3-blog/ogp-nuxt-content_gg1qi7.png","/tech/nuxt-content-v3-blog",null,{"title":5,"description":2231},"tech/nuxt-content-v3-blog",[2240,2241,102,2242],"Nuxt.js","Vue.js","Tailwind CSS","jOkCMasi3b25di0y381aKE_PXsbdYsJ816zfCQsRZLg",{"title":135,"image":135,"description":135},{"title":2246,"image":135,"description":135},"Just a moment...",{"title":2248,"image":2249,"description":2250},"Announcing Nuxt Content version 3","https://content.nuxt.com//blog/nuxt-content-v3.png","Content version 3 is out - introducing SQL based storage, collections, preview API for a better Studio integration and tons of performance improvements. ",{"title":2252,"image":2253,"description":2254},"Installation · NuxtHub","https://hub.nuxt.com/__og-image__/static/docs/getting-started/installation/og.png","Learn how to create a NuxtHub project or add it to your current Nuxt project.",{"title":2256,"image":2257,"description":2258},"Installation","https://content.nuxt.com/__og-image__/static/docs/getting-started/installation/og.png","Get started with Nuxt Content v3 in your Nuxt application.",{"title":1536,"image":2260,"description":2261},"https://content.nuxt.com/__og-image__/static/docs/utils/query-collection/og.png","The queryCollection composable provides methods for querying and fetching your collections.",{"title":2263,"image":2264,"description":2265},"Markdown","https://content.nuxt.com/__og-image__/static/docs/files/markdown/og.png","Create and query Markdown files in your Nuxt applications and use the MDC syntax to integrate Vue components.",{"title":2267,"image":2268,"description":2269},"Build software better, together","https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png","GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.",{"title":2271,"image":2272,"description":2273},"Installing with Vite - Installation","https://tailwindcss.com/api/og?path=/docs/installation/using-vite","Integrate Tailwind CSS with frameworks like Laravel, SvelteKit, React Router, and SolidJS.",{"title":2275,"image":2276,"description":2277},"NuxtHub Admin: Manage full-stack Nuxt apps, on the edge.","https://admin.hub.nuxt.com/social-card.png","The NuxtHub admin is a web based dashboard to manage your NuxtHub apps. It helps you deploy your NuxtHub apps with a single command on your Cloudflare account while provisioning all the necessary resources for you. It abstracts the complexity of managing full-stack Nuxt applications on Cloudflare.",{"title":2279,"image":2280,"description":2281},"GitHub - tsukiyama-3/tsukiyama-blog","https://opengraph.githubassets.com/6cf5fa0a8427025ad6a1886035c2f413a0ad3c6822eb62df629209d4e240c0cf/tsukiyama-3/tsukiyama-blog","Contribute to tsukiyama-3/tsukiyama-blog development by creating an account on GitHub."]