[{"data":1,"prerenderedAt":1869},["ShallowReactive",2],{"content-\u002Fcontents\u002Fnuxt-content-v2seo":3,"surroundPost-\u002Fcontents\u002Fnuxt-content-v2seo":1861},{"id":4,"title":5,"body":6,"createdAt":1847,"description":1848,"draft":1849,"extension":1850,"meta":1851,"navigation":498,"path":1852,"seo":1853,"stem":1854,"tags":1855,"thumbnail":1859,"updatedAt":1847,"__hash__":1860},"contents\u002Fcontents\u002Fnuxt-content-v2seo.md","Nuxt Content v2とNuxt3を利用したブログのSEO対策ガイド",{"type":7,"value":8,"toc":1830},"minimark",[9,13,16,39,43,46,69,72,76,79,208,218,221,367,370,373,389,392,398,403,406,419,516,519,522,525,531,568,572,575,578,588,906,916,922,1121,1124,1134,1137,1140,1143,1152,1159,1396,1403,1409,1423,1437,1439,1451,1454,1458,1466,1471,1534,1548,1552,1555,1563,1584,1587,1771,1774,1778,1781,1784,1787,1792,1795,1798,1801,1808,1811,1814,1817,1820,1823,1826],[10,11,12],"p",{},"markdownで記事を書いてデプロイするだけがブログではないです。どうせならSEO対策もちゃんとやりたいです。今回はNuxt Content v2を利用したブログにおけるSEO対策について紹介します。",[10,14,15],{},"前回記事",[17,18,19,27,33],"ul",{},[20,21,22],"li",{},[23,24,26],"a",{"href":25},"nuxt-3nuxt-content-v2","Nuxt 3、Tailwind、Nuxt content v2によるブログ作成のための基本設定",[20,28,29],{},[23,30,32],{"href":31},"nuxt-content-v2","Nuxt Content v2を利用したMarkdownによるブログ記事の作成方法",[20,34,35],{},[23,36,38],{"href":37},"list-nuxt","Nuxt Content v2でリスト、タグページやページングを実現する方法",[40,41,42],"h2",{"id":42},"ブログ作成にあたり技術的にやること",[10,44,45],{},"ブログ構築にあたり技術的に行う項目をいくつかまとめました。",[17,47,48,51,54,57,60,63,66],{},[20,49,50],{},"タイトルタグやメタディスクリプションを適切に設定する",[20,52,53],{},"canonicalの設定",[20,55,56],{},"OGPの設定",[20,58,59],{},"Googleアナリティクスの設定",[20,61,62],{},"サイトマップの作成",[20,64,65],{},"構造化データの定義",[20,67,68],{},"画像の最適化",[10,70,71],{},"このほかにもありそうですが、大体この辺りを押さえておけば大丈夫なはずです。",[40,73,75],{"id":74},"nuxt3およびnuxt-content-v2で基本的なheadタグに書く情報を設定する方法","Nuxt3およびNuxt Content v2で基本的なheadタグに書く情報を設定する方法",[10,77,78],{},"一般的なWebページでは、以下のようにheadタグ内にページのタイトルや詳細を記載します。",[80,81,86],"pre",{"className":82,"code":83,"language":84,"meta":85,"style":85},"language-html shiki shiki-themes github-dark","\u003C!DOCTYPE html>\n\u003Chtml lang=\"ja\">\n\u003Chead>\n    \u003Cmeta charset=\"UTF-8\">\n    \u003Ctitle>ここにページのタイトル\u003C\u002Ftitle>\n    \u003Cmeta name=\"description\" content=\"ここにページの詳細\">\n\u003C\u002Fhead>\n\n","html","",[87,88,89,109,129,139,158,173,198],"code",{"__ignoreMap":85},[90,91,94,98,102,106],"span",{"class":92,"line":93},"line",1,[90,95,97],{"class":96},"s95oV","\u003C!",[90,99,101],{"class":100},"s4JwU","DOCTYPE",[90,103,105],{"class":104},"svObZ"," html",[90,107,108],{"class":96},">\n",[90,110,112,115,117,120,123,127],{"class":92,"line":111},2,[90,113,114],{"class":96},"\u003C",[90,116,84],{"class":100},[90,118,119],{"class":104}," lang",[90,121,122],{"class":96},"=",[90,124,126],{"class":125},"sU2Wk","\"ja\"",[90,128,108],{"class":96},[90,130,132,134,137],{"class":92,"line":131},3,[90,133,114],{"class":96},[90,135,136],{"class":100},"head",[90,138,108],{"class":96},[90,140,142,145,148,151,153,156],{"class":92,"line":141},4,[90,143,144],{"class":96},"    \u003C",[90,146,147],{"class":100},"meta",[90,149,150],{"class":104}," charset",[90,152,122],{"class":96},[90,154,155],{"class":125},"\"UTF-8\"",[90,157,108],{"class":96},[90,159,161,163,166,169,171],{"class":92,"line":160},5,[90,162,144],{"class":96},[90,164,165],{"class":100},"title",[90,167,168],{"class":96},">ここにページのタイトル\u003C\u002F",[90,170,165],{"class":100},[90,172,108],{"class":96},[90,174,176,178,180,183,185,188,191,193,196],{"class":92,"line":175},6,[90,177,144],{"class":96},[90,179,147],{"class":100},[90,181,182],{"class":104}," name",[90,184,122],{"class":96},[90,186,187],{"class":125},"\"description\"",[90,189,190],{"class":104}," content",[90,192,122],{"class":96},[90,194,195],{"class":125},"\"ここにページの詳細\"",[90,197,108],{"class":96},[90,199,201,204,206],{"class":92,"line":200},7,[90,202,203],{"class":96},"\u003C\u002F",[90,205,136],{"class":100},[90,207,108],{"class":96},[10,209,210,211,217],{},"Nuxt3ではこういったheadタグの情報は",[23,212,216],{"href":213,"rel":214},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fgetting-started\u002Fseo-meta",[215],"nofollow","nuxt.config.ts","にhead()という記述ができ、そこにメタタグやリンクタグの情報を書けます。",[10,219,220],{},"ただし、nuxt.config.tsに記載する情報はページ間で共通の情報のみを書きます。",[80,222,226],{"className":223,"code":224,"language":225,"meta":85,"style":85},"language-tsx shiki shiki-themes github-dark","export default defineNuxtConfig({\n    ...,\n    app: {\n        head: {\n        htmlAttrs: { lang: 'ja', prefix: 'og: \u003Chttps:\u002F\u002Fogp.me\u002Fns#>' },\n        meta: [\n            { charset: 'utf-8' },\n            { name: 'viewport', content: 'width=device-width, initial-scale=1' },\n{ name: 'twitter:card', content: 'summary_large_image' },\n        { name: 'twitter:site', content: '@oio_blog' }\n        ]\n        }\n    }\n})\n\n","tsx",[87,227,228,243,251,256,261,278,283,293,310,326,343,349,355,361],{"__ignoreMap":85},[90,229,230,234,237,240],{"class":92,"line":93},[90,231,233],{"class":232},"snl16","export",[90,235,236],{"class":232}," default",[90,238,239],{"class":104}," defineNuxtConfig",[90,241,242],{"class":96},"({\n",[90,244,245,248],{"class":92,"line":111},[90,246,247],{"class":232},"    ...",[90,249,250],{"class":96},",\n",[90,252,253],{"class":92,"line":131},[90,254,255],{"class":96},"    app: {\n",[90,257,258],{"class":92,"line":141},[90,259,260],{"class":96},"        head: {\n",[90,262,263,266,269,272,275],{"class":92,"line":160},[90,264,265],{"class":96},"        htmlAttrs: { lang: ",[90,267,268],{"class":125},"'ja'",[90,270,271],{"class":96},", prefix: ",[90,273,274],{"class":125},"'og: \u003Chttps:\u002F\u002Fogp.me\u002Fns#>'",[90,276,277],{"class":96}," },\n",[90,279,280],{"class":92,"line":175},[90,281,282],{"class":96},"        meta: [\n",[90,284,285,288,291],{"class":92,"line":200},[90,286,287],{"class":96},"            { charset: ",[90,289,290],{"class":125},"'utf-8'",[90,292,277],{"class":96},[90,294,296,299,302,305,308],{"class":92,"line":295},8,[90,297,298],{"class":96},"            { name: ",[90,300,301],{"class":125},"'viewport'",[90,303,304],{"class":96},", content: ",[90,306,307],{"class":125},"'width=device-width, initial-scale=1'",[90,309,277],{"class":96},[90,311,313,316,319,321,324],{"class":92,"line":312},9,[90,314,315],{"class":96},"{ name: ",[90,317,318],{"class":125},"'twitter:card'",[90,320,304],{"class":96},[90,322,323],{"class":125},"'summary_large_image'",[90,325,277],{"class":96},[90,327,329,332,335,337,340],{"class":92,"line":328},10,[90,330,331],{"class":96},"        { name: ",[90,333,334],{"class":125},"'twitter:site'",[90,336,304],{"class":96},[90,338,339],{"class":125},"'@oio_blog'",[90,341,342],{"class":96}," }\n",[90,344,346],{"class":92,"line":345},11,[90,347,348],{"class":96},"        ]\n",[90,350,352],{"class":92,"line":351},12,[90,353,354],{"class":96},"        }\n",[90,356,358],{"class":92,"line":357},13,[90,359,360],{"class":96},"    }\n",[90,362,364],{"class":92,"line":363},14,[90,365,366],{"class":96},"})\n",[10,368,369],{},"次にページごとに動的に変わる値はどう設定するのか説明します。",[10,371,372],{},"Nuxt3ではheadタグの情報変更に便利なコンポーザブル（Composable）が2つ用意されています。",[17,374,375,382],{},[20,376,377],{},[23,378,381],{"href":379,"rel":380},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-head",[215],"useHead()",[20,383,384],{},[23,385,388],{"href":386,"rel":387},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-seo-meta",[215],"useSeoMeta()",[10,390,391],{},"二つの違いはざっくりとuseHeadの方がheadに書く情報を細かく書けること、useSeoMetaの方は一般的なSEO対策で必要なことが簡潔かつTypeScriptのサポートによってタイポが少なく書けることでしょうか。",[10,393,394,395,397],{},"この記事の冒頭で挙げたようなよくあるheadの記載事項は",[87,396,388],{},"で実現できます。",[399,400,402],"h3",{"id":401},"nuxt-content-v2でのheadサポート","Nuxt Content v2でのheadサポート",[10,404,405],{},"Nuxt Content v2でも一般的なheadの記載事項についての機能があります。",[10,407,408,409,414,415,418],{},"まず、",[23,410,413],{"href":411,"rel":412},"https:\u002F\u002Fcontent.nuxt.com\u002Fcomposables\u002Fuse-content-head",[215],"useContentHead()","というコンポーザブルを使う方法があります。これはドキュメントにあるように",[87,416,417],{},"queryContent","からの戻り値を入力すると、markdownファイルのフロントマターを参照し、titleやdescriptionをheadに書いてくれます。",[80,420,424],{"className":421,"code":422,"language":423,"meta":85,"style":85},"language-vue shiki shiki-themes github-dark","\u003Cscript setup lang=\"ts\">\nconst { data: page } = await useAsyncData('my-page', queryContent('\u002F').findOne)\n\nuseContentHead(page)\n\u003C\u002Fscript>\n","vue",[87,425,426,445,494,500,508],{"__ignoreMap":85},[90,427,428,430,433,436,438,440,443],{"class":92,"line":93},[90,429,114],{"class":96},[90,431,432],{"class":100},"script",[90,434,435],{"class":104}," setup",[90,437,119],{"class":104},[90,439,122],{"class":96},[90,441,442],{"class":125},"\"ts\"",[90,444,108],{"class":96},[90,446,447,450,453,457,460,464,467,469,472,475,478,481,484,486,488,491],{"class":92,"line":111},[90,448,449],{"class":232},"const",[90,451,452],{"class":96}," { ",[90,454,456],{"class":455},"s9osk","data",[90,458,459],{"class":96},": ",[90,461,463],{"class":462},"sDLfK","page",[90,465,466],{"class":96}," } ",[90,468,122],{"class":232},[90,470,471],{"class":232}," await",[90,473,474],{"class":104}," useAsyncData",[90,476,477],{"class":96},"(",[90,479,480],{"class":125},"'my-page'",[90,482,483],{"class":96},", ",[90,485,417],{"class":104},[90,487,477],{"class":96},[90,489,490],{"class":125},"'\u002F'",[90,492,493],{"class":96},").findOne)\n",[90,495,496],{"class":92,"line":131},[90,497,499],{"emptyLinePlaceholder":498},true,"\n",[90,501,502,505],{"class":92,"line":141},[90,503,504],{"class":104},"useContentHead",[90,506,507],{"class":96},"(page)\n",[90,509,510,512,514],{"class":92,"line":160},[90,511,203],{"class":96},[90,513,432],{"class":100},[90,515,108],{"class":96},[10,517,518],{},"さらにNuxt Content v2はデフォルトで自動的にmarkdownのフロントマターからheadの情報を生成してくれます。",[10,520,521],{},"ただし、この機能で必要なheadの情報を揃えようとするとフロントマターの記載事項がすごく増えます。",[10,523,524],{},"個人的には画像等の設定はプログラム的に書いたほうが楽なので今回はhead自動生成はオフにしてます。",[10,526,527,528,530],{},"オフにする方法は以下のように",[87,529,216],{},"に設定するだけです。",[80,532,534],{"className":223,"code":533,"language":225,"meta":85,"style":85},"export default defineNuxtConfig({\n  content: {\n    contentHead: false\n  }\n})\n",[87,535,536,546,551,559,564],{"__ignoreMap":85},[90,537,538,540,542,544],{"class":92,"line":93},[90,539,233],{"class":232},[90,541,236],{"class":232},[90,543,239],{"class":104},[90,545,242],{"class":96},[90,547,548],{"class":92,"line":111},[90,549,550],{"class":96},"  content: {\n",[90,552,553,556],{"class":92,"line":131},[90,554,555],{"class":96},"    contentHead: ",[90,557,558],{"class":462},"false\n",[90,560,561],{"class":92,"line":141},[90,562,563],{"class":96},"  }\n",[90,565,566],{"class":92,"line":160},[90,567,366],{"class":96},[40,569,571],{"id":570},"ogpsns-x-向け-の設定","OGP＋SNS (X 向け) の設定",[10,573,574],{},"OGP (Open Graph Protocol) と個別のSNS設定についてです。SNSと言っても今回はX（旧Twitter）についてのみです。",[10,576,577],{},"この設定を適切に行うことで、SNS上でのユーザーに見やすいカード表示が可能となり、ブログへの流入へつながる可能性が高まります。",[10,579,580,581,583,584,587],{},"設定は先ほどのNuxt3の",[87,582,388],{},"を使います。以下を",[87,585,586],{},"[…slug].vue","に書きます。",[80,589,591],{"className":421,"code":590,"language":423,"meta":85,"style":85},"\u003Cscript setup lang=\"ts\">\nimport { withoutTrailingSlash } from 'ufo'\n\nconst appConfig = useAppConfig()\nconst route = useRoute()\n\nconst { data: article } = await useAsyncData(() => {\n  return queryContent().where({ _path: { $eq: withoutTrailingSlash(route.path) } }).findOne()\n})\n\nuseSeoMeta(\n  {\n    title: article?.value?.title,\n    description: article?.value?.description || article?.value?.title,\n    ogTitle: article?.value?.title,\n    ogDescription: article?.value?.description || article?.value?.title,\n    ogUrl: `${appConfig.siteMetadata.siteUrl}\u002Fimg\u002Ftwitter-card.png`,\n    ogImage: `${appConfig.siteMetadata.siteUrl}\u002Fimg\u002Ftwitter-card.png`,\n    twitterTitle: article?.value?.title,\n    twitterDescription: article?.value?.description || article?.value?.title,\n    twitterImage: `${appConfig.siteMetadata.siteUrl}${article?.value?.thumbnail}`,\n    robots: 'follow, index'\n  }\n)\n\u003C\u002Fscript>\n",[87,592,593,609,623,627,643,657,661,691,719,723,727,735,740,745,756,762,772,800,822,828,838,877,886,891,897],{"__ignoreMap":85},[90,594,595,597,599,601,603,605,607],{"class":92,"line":93},[90,596,114],{"class":96},[90,598,432],{"class":100},[90,600,435],{"class":104},[90,602,119],{"class":104},[90,604,122],{"class":96},[90,606,442],{"class":125},[90,608,108],{"class":96},[90,610,611,614,617,620],{"class":92,"line":111},[90,612,613],{"class":232},"import",[90,615,616],{"class":96}," { withoutTrailingSlash } ",[90,618,619],{"class":232},"from",[90,621,622],{"class":125}," 'ufo'\n",[90,624,625],{"class":92,"line":131},[90,626,499],{"emptyLinePlaceholder":498},[90,628,629,631,634,637,640],{"class":92,"line":141},[90,630,449],{"class":232},[90,632,633],{"class":462}," appConfig",[90,635,636],{"class":232}," =",[90,638,639],{"class":104}," useAppConfig",[90,641,642],{"class":96},"()\n",[90,644,645,647,650,652,655],{"class":92,"line":160},[90,646,449],{"class":232},[90,648,649],{"class":462}," route",[90,651,636],{"class":232},[90,653,654],{"class":104}," useRoute",[90,656,642],{"class":96},[90,658,659],{"class":92,"line":175},[90,660,499],{"emptyLinePlaceholder":498},[90,662,663,665,667,669,671,674,676,678,680,682,685,688],{"class":92,"line":200},[90,664,449],{"class":232},[90,666,452],{"class":96},[90,668,456],{"class":455},[90,670,459],{"class":96},[90,672,673],{"class":462},"article",[90,675,466],{"class":96},[90,677,122],{"class":232},[90,679,471],{"class":232},[90,681,474],{"class":104},[90,683,684],{"class":96},"(() ",[90,686,687],{"class":232},"=>",[90,689,690],{"class":96}," {\n",[90,692,693,696,699,702,705,708,711,714,717],{"class":92,"line":295},[90,694,695],{"class":232},"  return",[90,697,698],{"class":104}," queryContent",[90,700,701],{"class":96},"().",[90,703,704],{"class":104},"where",[90,706,707],{"class":96},"({ _path: { $eq: ",[90,709,710],{"class":104},"withoutTrailingSlash",[90,712,713],{"class":96},"(route.path) } }).",[90,715,716],{"class":104},"findOne",[90,718,642],{"class":96},[90,720,721],{"class":92,"line":312},[90,722,366],{"class":96},[90,724,725],{"class":92,"line":328},[90,726,499],{"emptyLinePlaceholder":498},[90,728,729,732],{"class":92,"line":345},[90,730,731],{"class":104},"useSeoMeta",[90,733,734],{"class":96},"(\n",[90,736,737],{"class":92,"line":351},[90,738,739],{"class":96},"  {\n",[90,741,742],{"class":92,"line":357},[90,743,744],{"class":96},"    title: article?.value?.title,\n",[90,746,747,750,753],{"class":92,"line":363},[90,748,749],{"class":96},"    description: article?.value?.description ",[90,751,752],{"class":232},"||",[90,754,755],{"class":96}," article?.value?.title,\n",[90,757,759],{"class":92,"line":758},15,[90,760,761],{"class":96},"    ogTitle: article?.value?.title,\n",[90,763,765,768,770],{"class":92,"line":764},16,[90,766,767],{"class":96},"    ogDescription: article?.value?.description ",[90,769,752],{"class":232},[90,771,755],{"class":96},[90,773,775,778,781,784,787,790,792,795,798],{"class":92,"line":774},17,[90,776,777],{"class":96},"    ogUrl: ",[90,779,780],{"class":125},"`${",[90,782,783],{"class":96},"appConfig",[90,785,786],{"class":125},".",[90,788,789],{"class":96},"siteMetadata",[90,791,786],{"class":125},[90,793,794],{"class":96},"siteUrl",[90,796,797],{"class":125},"}\u002Fimg\u002Ftwitter-card.png`",[90,799,250],{"class":96},[90,801,803,806,808,810,812,814,816,818,820],{"class":92,"line":802},18,[90,804,805],{"class":96},"    ogImage: ",[90,807,780],{"class":125},[90,809,783],{"class":96},[90,811,786],{"class":125},[90,813,789],{"class":96},[90,815,786],{"class":125},[90,817,794],{"class":96},[90,819,797],{"class":125},[90,821,250],{"class":96},[90,823,825],{"class":92,"line":824},19,[90,826,827],{"class":96},"    twitterTitle: article?.value?.title,\n",[90,829,831,834,836],{"class":92,"line":830},20,[90,832,833],{"class":96},"    twitterDescription: article?.value?.description ",[90,835,752],{"class":232},[90,837,755],{"class":96},[90,839,841,844,846,848,850,852,854,856,859,861,864,867,869,872,875],{"class":92,"line":840},21,[90,842,843],{"class":96},"    twitterImage: ",[90,845,780],{"class":125},[90,847,783],{"class":96},[90,849,786],{"class":125},[90,851,789],{"class":96},[90,853,786],{"class":125},[90,855,794],{"class":96},[90,857,858],{"class":125},"}${",[90,860,673],{"class":96},[90,862,863],{"class":125},"?.",[90,865,866],{"class":96},"value",[90,868,863],{"class":125},[90,870,871],{"class":96},"thumbnail",[90,873,874],{"class":125},"}`",[90,876,250],{"class":96},[90,878,880,883],{"class":92,"line":879},22,[90,881,882],{"class":96},"    robots: ",[90,884,885],{"class":125},"'follow, index'\n",[90,887,889],{"class":92,"line":888},23,[90,890,563],{"class":96},[90,892,894],{"class":92,"line":893},24,[90,895,896],{"class":96},")\n",[90,898,900,902,904],{"class":92,"line":899},25,[90,901,203],{"class":96},[90,903,432],{"class":100},[90,905,108],{"class":96},[10,907,908,911,912,915],{},[87,909,910],{},"useAppConfig()","は",[87,913,914],{},"app.config.ts","という名前のファイル内容を読み取ってくれます。",[10,917,918,919,921],{},"参考までにこのブログで使っている",[87,920,914],{},"です。",[80,923,925],{"className":223,"code":924,"language":225,"meta":85,"style":85},"export default defineAppConfig({\n    socials: {\n        twitter: 'https:\u002F\u002Ftwitter.com\u002Foio_blog',\n        github: ''\n    },\n    siteMetadata: {\n        title: '学びノート',\n        author: 'おい丸',\n        headerTitle: '学びノート',\n        description: 'IT企業に務めるサラリーマンの学びの記録です',\n        language: 'ja-jp',\n        siteUrl: 'https:\u002F\u002Fwww.oio-blog.com',\n        siteAbout: 'https:\u002F\u002Fwww.oio-blog.com\u002Fabout',\n        siteRepo: 'https:\u002F\u002Fgithub.com',\n        twitter: 'https:\u002F\u002Ftwitter.com\u002Foio_blog',\n        analytics: {\n            simpleAnalytics: false, \u002F\u002F true or false\n            googleAnalyticsId: 'UA-XXXXXXX-1', \u002F\u002F e.g. UA-000000-2 or G-XXXXXXX\n        },\n        perPage: 10,\n        tagPerPage: 30\n    }\n})\n",[87,926,927,938,943,953,961,966,971,981,991,1000,1010,1020,1030,1040,1050,1058,1063,1077,1090,1095,1105,1113,1117],{"__ignoreMap":85},[90,928,929,931,933,936],{"class":92,"line":93},[90,930,233],{"class":232},[90,932,236],{"class":232},[90,934,935],{"class":104}," defineAppConfig",[90,937,242],{"class":96},[90,939,940],{"class":92,"line":111},[90,941,942],{"class":96},"    socials: {\n",[90,944,945,948,951],{"class":92,"line":131},[90,946,947],{"class":96},"        twitter: ",[90,949,950],{"class":125},"'https:\u002F\u002Ftwitter.com\u002Foio_blog'",[90,952,250],{"class":96},[90,954,955,958],{"class":92,"line":141},[90,956,957],{"class":96},"        github: ",[90,959,960],{"class":125},"''\n",[90,962,963],{"class":92,"line":160},[90,964,965],{"class":96},"    },\n",[90,967,968],{"class":92,"line":175},[90,969,970],{"class":96},"    siteMetadata: {\n",[90,972,973,976,979],{"class":92,"line":200},[90,974,975],{"class":96},"        title: ",[90,977,978],{"class":125},"'学びノート'",[90,980,250],{"class":96},[90,982,983,986,989],{"class":92,"line":295},[90,984,985],{"class":96},"        author: ",[90,987,988],{"class":125},"'おい丸'",[90,990,250],{"class":96},[90,992,993,996,998],{"class":92,"line":312},[90,994,995],{"class":96},"        headerTitle: ",[90,997,978],{"class":125},[90,999,250],{"class":96},[90,1001,1002,1005,1008],{"class":92,"line":328},[90,1003,1004],{"class":96},"        description: ",[90,1006,1007],{"class":125},"'IT企業に務めるサラリーマンの学びの記録です'",[90,1009,250],{"class":96},[90,1011,1012,1015,1018],{"class":92,"line":345},[90,1013,1014],{"class":96},"        language: ",[90,1016,1017],{"class":125},"'ja-jp'",[90,1019,250],{"class":96},[90,1021,1022,1025,1028],{"class":92,"line":351},[90,1023,1024],{"class":96},"        siteUrl: ",[90,1026,1027],{"class":125},"'https:\u002F\u002Fwww.oio-blog.com'",[90,1029,250],{"class":96},[90,1031,1032,1035,1038],{"class":92,"line":357},[90,1033,1034],{"class":96},"        siteAbout: ",[90,1036,1037],{"class":125},"'https:\u002F\u002Fwww.oio-blog.com\u002Fabout'",[90,1039,250],{"class":96},[90,1041,1042,1045,1048],{"class":92,"line":363},[90,1043,1044],{"class":96},"        siteRepo: ",[90,1046,1047],{"class":125},"'https:\u002F\u002Fgithub.com'",[90,1049,250],{"class":96},[90,1051,1052,1054,1056],{"class":92,"line":758},[90,1053,947],{"class":96},[90,1055,950],{"class":125},[90,1057,250],{"class":96},[90,1059,1060],{"class":92,"line":764},[90,1061,1062],{"class":96},"        analytics: {\n",[90,1064,1065,1068,1071,1073],{"class":92,"line":774},[90,1066,1067],{"class":96},"            simpleAnalytics: ",[90,1069,1070],{"class":462},"false",[90,1072,483],{"class":96},[90,1074,1076],{"class":1075},"sAwPA","\u002F\u002F true or false\n",[90,1078,1079,1082,1085,1087],{"class":92,"line":802},[90,1080,1081],{"class":96},"            googleAnalyticsId: ",[90,1083,1084],{"class":125},"'UA-XXXXXXX-1'",[90,1086,483],{"class":96},[90,1088,1089],{"class":1075},"\u002F\u002F e.g. UA-000000-2 or G-XXXXXXX\n",[90,1091,1092],{"class":92,"line":824},[90,1093,1094],{"class":96},"        },\n",[90,1096,1097,1100,1103],{"class":92,"line":830},[90,1098,1099],{"class":96},"        perPage: ",[90,1101,1102],{"class":462},"10",[90,1104,250],{"class":96},[90,1106,1107,1110],{"class":92,"line":840},[90,1108,1109],{"class":96},"        tagPerPage: ",[90,1111,1112],{"class":462},"30\n",[90,1114,1115],{"class":92,"line":879},[90,1116,360],{"class":96},[90,1118,1119],{"class":92,"line":888},[90,1120,366],{"class":96},[399,1122,1123],{"id":1123},"ハマったところ",[10,1125,1126,1129,1130,1133],{},[87,1127,1128],{},"queryContent()","利用時に",[87,1131,1132],{},"await","をつけ忘れたことにより、ブラウザの開発者ツールから見たときはheadに必要なOGPの設定ができているのに実際にはカードが表示されない現象に遭遇しました。",[10,1135,1136],{},"awaitをつけ忘れると記事情報をjsで取得が終わる前に読み取りが行われてしまうからの模様。",[40,1138,1139],{"id":1139},"画像最適化",[10,1141,1142],{},"SEOおよびユーザビリティの観点から、画像の最適化は必須であり、表示の速度や見た目に配慮することが重要です。",[10,1144,1145,1146,1151],{},"Nuxtには",[23,1147,1150],{"href":1148,"rel":1149},"https:\u002F\u002Fimage.nuxt.com\u002F",[215],"Nuxt image","があり、これを使うとビルド時に画像を簡単に最適化してくれます。",[10,1153,1154,1155,1158],{},"imgタグについてはNuxt Content v2の機能でマークダウンからHTMLにレンダリングする際のものを指定できます。以下のvueファイルを",[87,1156,1157],{},"components\u002Fcontent\u002FProseImg.vue","というパスとファイル名で作成します。",[80,1160,1162],{"className":421,"code":1161,"language":423,"meta":85,"style":85},"\u003Cscript setup lang=\"ts\">\n\nconst props = defineProps({\n    imgSrc: {\n        type: String,\n        default: ''\n    },\n    alt: {\n        type: String,\n        default: ''\n    },\n    width: {\n        type: [String, Number],\n        default: undefined\n    },\n    height: {\n        type: [String, Number],\n        default: undefined\n    }\n})\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n    \u003Cnuxt-img class=\"mx-auto h-auto w-fit\" quality=\"100\" sizes=\"sm:100vw md:50vw lg:1024px\" format=\"webp\" loading=\"lazy\"\n        :src=\"props.imgSrc\" :alt=\"props.alt\" :width=\"width\" :height=\"height\" \u002F>\n\u003C\u002Ftemplate>\n",[87,1163,1164,1180,1184,1198,1203,1208,1215,1219,1224,1228,1234,1238,1243,1248,1255,1259,1264,1268,1274,1278,1282,1290,1294,1303,1350,1387],{"__ignoreMap":85},[90,1165,1166,1168,1170,1172,1174,1176,1178],{"class":92,"line":93},[90,1167,114],{"class":96},[90,1169,432],{"class":100},[90,1171,435],{"class":104},[90,1173,119],{"class":104},[90,1175,122],{"class":96},[90,1177,442],{"class":125},[90,1179,108],{"class":96},[90,1181,1182],{"class":92,"line":111},[90,1183,499],{"emptyLinePlaceholder":498},[90,1185,1186,1188,1191,1193,1196],{"class":92,"line":131},[90,1187,449],{"class":232},[90,1189,1190],{"class":462}," props",[90,1192,636],{"class":232},[90,1194,1195],{"class":104}," defineProps",[90,1197,242],{"class":96},[90,1199,1200],{"class":92,"line":141},[90,1201,1202],{"class":96},"    imgSrc: {\n",[90,1204,1205],{"class":92,"line":160},[90,1206,1207],{"class":96},"        type: String,\n",[90,1209,1210,1213],{"class":92,"line":175},[90,1211,1212],{"class":96},"        default: ",[90,1214,960],{"class":125},[90,1216,1217],{"class":92,"line":200},[90,1218,965],{"class":96},[90,1220,1221],{"class":92,"line":295},[90,1222,1223],{"class":96},"    alt: {\n",[90,1225,1226],{"class":92,"line":312},[90,1227,1207],{"class":96},[90,1229,1230,1232],{"class":92,"line":328},[90,1231,1212],{"class":96},[90,1233,960],{"class":125},[90,1235,1236],{"class":92,"line":345},[90,1237,965],{"class":96},[90,1239,1240],{"class":92,"line":351},[90,1241,1242],{"class":96},"    width: {\n",[90,1244,1245],{"class":92,"line":357},[90,1246,1247],{"class":96},"        type: [String, Number],\n",[90,1249,1250,1252],{"class":92,"line":363},[90,1251,1212],{"class":96},[90,1253,1254],{"class":462},"undefined\n",[90,1256,1257],{"class":92,"line":758},[90,1258,965],{"class":96},[90,1260,1261],{"class":92,"line":764},[90,1262,1263],{"class":96},"    height: {\n",[90,1265,1266],{"class":92,"line":774},[90,1267,1247],{"class":96},[90,1269,1270,1272],{"class":92,"line":802},[90,1271,1212],{"class":96},[90,1273,1254],{"class":462},[90,1275,1276],{"class":92,"line":824},[90,1277,360],{"class":96},[90,1279,1280],{"class":92,"line":830},[90,1281,366],{"class":96},[90,1283,1284,1286,1288],{"class":92,"line":840},[90,1285,203],{"class":96},[90,1287,432],{"class":100},[90,1289,108],{"class":96},[90,1291,1292],{"class":92,"line":879},[90,1293,499],{"emptyLinePlaceholder":498},[90,1295,1296,1298,1301],{"class":92,"line":888},[90,1297,114],{"class":96},[90,1299,1300],{"class":100},"template",[90,1302,108],{"class":96},[90,1304,1305,1307,1310,1313,1315,1318,1321,1323,1326,1329,1331,1334,1337,1339,1342,1345,1347],{"class":92,"line":893},[90,1306,144],{"class":96},[90,1308,1309],{"class":100},"nuxt-img",[90,1311,1312],{"class":104}," class",[90,1314,122],{"class":96},[90,1316,1317],{"class":125},"\"mx-auto h-auto w-fit\"",[90,1319,1320],{"class":104}," quality",[90,1322,122],{"class":96},[90,1324,1325],{"class":125},"\"100\"",[90,1327,1328],{"class":104}," sizes",[90,1330,122],{"class":96},[90,1332,1333],{"class":125},"\"sm:100vw md:50vw lg:1024px\"",[90,1335,1336],{"class":104}," format",[90,1338,122],{"class":96},[90,1340,1341],{"class":125},"\"webp\"",[90,1343,1344],{"class":104}," loading",[90,1346,122],{"class":96},[90,1348,1349],{"class":125},"\"lazy\"\n",[90,1351,1352,1355,1357,1360,1363,1365,1368,1371,1373,1376,1379,1381,1384],{"class":92,"line":899},[90,1353,1354],{"class":104},"        :src",[90,1356,122],{"class":96},[90,1358,1359],{"class":125},"\"props.imgSrc\"",[90,1361,1362],{"class":104}," :alt",[90,1364,122],{"class":96},[90,1366,1367],{"class":125},"\"props.alt\"",[90,1369,1370],{"class":104}," :width",[90,1372,122],{"class":96},[90,1374,1375],{"class":125},"\"width\"",[90,1377,1378],{"class":104}," :height",[90,1380,122],{"class":96},[90,1382,1383],{"class":125},"\"height\"",[90,1385,1386],{"class":96}," \u002F>\n",[90,1388,1390,1392,1394],{"class":92,"line":1389},26,[90,1391,203],{"class":96},[90,1393,1300],{"class":100},[90,1395,108],{"class":96},[10,1397,1398,1399,1402],{},"このようにすることでマークダウンファイル内で画像を表示する記法",[87,1400,1401],{},"![]()","を使用した際に上記のコンポーネントが利用されます。（cssのclassは適宜変更してください）",[10,1404,1405,1408],{},[87,1406,1407],{},"yarn generate","時にwebp変換とレスポンシブ用にリサイズした画像を生成してくれます。",[10,1410,1411,1412,1415,1416,1419,1420,1422],{},"ちなみに生成されたファイルは",[87,1413,1414],{},".webp","拡張子ではなく",[87,1417,1418],{},".png","になっている現象がありますが、minetypeを調べると",[87,1421,1414],{},"形式になっているようです。",[10,1424,1425,1426],{},"参考：",[23,1427,1430],{"href":1428,"rel":1429},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fimage\u002Fissues\u002F723",[215],[1431,1432,1433,1434,1436],"strong",{},"WebP image have ",[87,1435,1418],{}," extension ?",[40,1438,62],{"id":62},[10,1440,1441,1442,1447,1448,1450],{},"サイトマップの作成は、公式の",[23,1443,1446],{"href":1444,"rel":1445},"https:\u002F\u002Fcontent.nuxt.com\u002Frecipes\u002Fsitemap",[215],"Sitemap","を参照してください。この方法を使うと",[87,1449,1407],{},"使用時にsitemap.ymlが生成されます。",[10,1452,1453],{},"公式サイト通りなのでここでは割愛",[40,1455,1457],{"id":1456},"google-アナリティクスga4","Google アナリティクス(GA4)",[10,1459,1460,1465],{},[23,1461,1464],{"href":1462,"rel":1463},"https:\u002F\u002Fgithub.com\u002Fjohannschopplich\u002Fnuxt-gtag",[215],"nuxt-gtag","というモジュールを使用します。これを使うと簡単にGAと連携できます。",[10,1467,1468,1470],{},[87,1469,216],{},"　に以下のようにidを書くだけです。",[80,1472,1476],{"className":1473,"code":1474,"language":1475,"meta":85,"style":85},"language-ts shiki shiki-themes github-dark","export default defineNuxtConfig({\n  modules: ['nuxt-gtag'],\n\n  gtag: {\n    id: 'G-XXXXXXXXXX',\n        loadingStrategy: 'async'\n  }\n})\n","ts",[87,1477,1478,1488,1499,1503,1508,1518,1526,1530],{"__ignoreMap":85},[90,1479,1480,1482,1484,1486],{"class":92,"line":93},[90,1481,233],{"class":232},[90,1483,236],{"class":232},[90,1485,239],{"class":104},[90,1487,242],{"class":96},[90,1489,1490,1493,1496],{"class":92,"line":111},[90,1491,1492],{"class":96},"  modules: [",[90,1494,1495],{"class":125},"'nuxt-gtag'",[90,1497,1498],{"class":96},"],\n",[90,1500,1501],{"class":92,"line":131},[90,1502,499],{"emptyLinePlaceholder":498},[90,1504,1505],{"class":92,"line":141},[90,1506,1507],{"class":96},"  gtag: {\n",[90,1509,1510,1513,1516],{"class":92,"line":160},[90,1511,1512],{"class":96},"    id: ",[90,1514,1515],{"class":125},"'G-XXXXXXXXXX'",[90,1517,250],{"class":96},[90,1519,1520,1523],{"class":92,"line":175},[90,1521,1522],{"class":96},"        loadingStrategy: ",[90,1524,1525],{"class":125},"'async'\n",[90,1527,1528],{"class":92,"line":200},[90,1529,563],{"class":96},[90,1531,1532],{"class":92,"line":295},[90,1533,366],{"class":96},[10,1535,1536,1539,1540,1543,1544,1547],{},[87,1537,1538],{},"loadingStrategy"," はおまかせしますが、私の場合",[87,1541,1542],{},"async","にした方がサイトパフォーマンスが良かったです。デフォルトは",[87,1545,1546],{},"defer","になってます。",[40,1549,1551],{"id":1550},"googleの構造化データ","Googleの構造化データ",[10,1553,1554],{},"これはやらなくてもいいかもですが、一応Google の構造化データも生成しておきます。",[10,1556,1557,1562],{},[23,1558,1561],{"href":1559,"rel":1560},"https:\u002F\u002Fgithub.com\u002Fymmooot\u002Fnuxt-jsonld",[215],"nuxt-jsonld","という便利なパッケージがあるのでこれをインストールします。",[80,1564,1568],{"className":1565,"code":1566,"language":1567,"meta":85,"style":85},"language-bash shiki shiki-themes github-dark","yarn add -D nuxt-jsonld\n","bash",[87,1569,1570],{"__ignoreMap":85},[90,1571,1572,1575,1578,1581],{"class":92,"line":93},[90,1573,1574],{"class":104},"yarn",[90,1576,1577],{"class":125}," add",[90,1579,1580],{"class":462}," -D",[90,1582,1583],{"class":125}," nuxt-jsonld\n",[10,1585,1586],{},"こちらもコンポーザブルとして利用可能です。以下のように書きます。",[80,1588,1590],{"className":1473,"code":1589,"language":1475,"meta":85,"style":85},"useJsonld({\n    '@context': 'https:\u002F\u002Fschema.org',\n    '@type': 'Article',\n    mainEntityOfPage: {\n      '@type': 'WebPage',\n      '@id': currentPath.value,\n    },\n    name: 'static json',\n    headline: article.value.title,\n    image: {\n      '@type': 'ImageObject',\n      url: `${appConfig.siteMetadata.siteUrl}${article.value.thumbnail}`,\n    },\n    datePublished: article.value.createdAt,\n    dateModified: article.value.updatedAt,\n    author: [{\n      '@type': 'Person',\n      name: appConfig.siteMetadata.author,\n      url: appConfig.siteMetadata.siteAbout\n    }],\n    description: article.value.description,\n  });\n",[87,1591,1592,1599,1611,1623,1628,1640,1648,1652,1662,1667,1672,1683,1716,1720,1725,1730,1735,1746,1751,1756,1761,1766],{"__ignoreMap":85},[90,1593,1594,1597],{"class":92,"line":93},[90,1595,1596],{"class":104},"useJsonld",[90,1598,242],{"class":96},[90,1600,1601,1604,1606,1609],{"class":92,"line":111},[90,1602,1603],{"class":125},"    '@context'",[90,1605,459],{"class":96},[90,1607,1608],{"class":125},"'https:\u002F\u002Fschema.org'",[90,1610,250],{"class":96},[90,1612,1613,1616,1618,1621],{"class":92,"line":131},[90,1614,1615],{"class":125},"    '@type'",[90,1617,459],{"class":96},[90,1619,1620],{"class":125},"'Article'",[90,1622,250],{"class":96},[90,1624,1625],{"class":92,"line":141},[90,1626,1627],{"class":96},"    mainEntityOfPage: {\n",[90,1629,1630,1633,1635,1638],{"class":92,"line":160},[90,1631,1632],{"class":125},"      '@type'",[90,1634,459],{"class":96},[90,1636,1637],{"class":125},"'WebPage'",[90,1639,250],{"class":96},[90,1641,1642,1645],{"class":92,"line":175},[90,1643,1644],{"class":125},"      '@id'",[90,1646,1647],{"class":96},": currentPath.value,\n",[90,1649,1650],{"class":92,"line":200},[90,1651,965],{"class":96},[90,1653,1654,1657,1660],{"class":92,"line":295},[90,1655,1656],{"class":96},"    name: ",[90,1658,1659],{"class":125},"'static json'",[90,1661,250],{"class":96},[90,1663,1664],{"class":92,"line":312},[90,1665,1666],{"class":96},"    headline: article.value.title,\n",[90,1668,1669],{"class":92,"line":328},[90,1670,1671],{"class":96},"    image: {\n",[90,1673,1674,1676,1678,1681],{"class":92,"line":345},[90,1675,1632],{"class":125},[90,1677,459],{"class":96},[90,1679,1680],{"class":125},"'ImageObject'",[90,1682,250],{"class":96},[90,1684,1685,1688,1690,1692,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714],{"class":92,"line":351},[90,1686,1687],{"class":96},"      url: ",[90,1689,780],{"class":125},[90,1691,783],{"class":96},[90,1693,786],{"class":125},[90,1695,789],{"class":96},[90,1697,786],{"class":125},[90,1699,794],{"class":96},[90,1701,858],{"class":125},[90,1703,673],{"class":96},[90,1705,786],{"class":125},[90,1707,866],{"class":96},[90,1709,786],{"class":125},[90,1711,871],{"class":96},[90,1713,874],{"class":125},[90,1715,250],{"class":96},[90,1717,1718],{"class":92,"line":357},[90,1719,965],{"class":96},[90,1721,1722],{"class":92,"line":363},[90,1723,1724],{"class":96},"    datePublished: article.value.createdAt,\n",[90,1726,1727],{"class":92,"line":758},[90,1728,1729],{"class":96},"    dateModified: article.value.updatedAt,\n",[90,1731,1732],{"class":92,"line":764},[90,1733,1734],{"class":96},"    author: [{\n",[90,1736,1737,1739,1741,1744],{"class":92,"line":774},[90,1738,1632],{"class":125},[90,1740,459],{"class":96},[90,1742,1743],{"class":125},"'Person'",[90,1745,250],{"class":96},[90,1747,1748],{"class":92,"line":802},[90,1749,1750],{"class":96},"      name: appConfig.siteMetadata.author,\n",[90,1752,1753],{"class":92,"line":824},[90,1754,1755],{"class":96},"      url: appConfig.siteMetadata.siteAbout\n",[90,1757,1758],{"class":92,"line":830},[90,1759,1760],{"class":96},"    }],\n",[90,1762,1763],{"class":92,"line":840},[90,1764,1765],{"class":96},"    description: article.value.description,\n",[90,1767,1768],{"class":92,"line":879},[90,1769,1770],{"class":96},"  });\n",[10,1772,1773],{},"長くなるので変数定義の部分は割愛しました。記事の前半部分のコードを見れば大体想像できると思います。",[40,1775,1777],{"id":1776},"pagespeed-insightsの結果","PageSpeed Insightsの結果",[10,1779,1780],{},"ここまででの画像最適化、GAの設定、その他head情報記載で画像を表示したページでも97-98点くらいの点数がPageSpeed Insightsで出ます。",[10,1782,1783],{},"ここに自分好みのブログの装飾を色々加えると点数は下がるのですが、それでも90~95点はでます。",[10,1785,1786],{},"以下は目次やら作成日時用のアイコンを追加した際の結果です。",[1788,1789],"img",{"alt":1790,"img-src":1791},"PageSpeed Insights","\u002Fimg\u002Fnuxt-content-seo\u002Fpagespeed.png",[10,1793,1794],{},"ただどうやら文章量が増えるとややスコアが落ち込みます。それでも80点台です。",[399,1796,1797],{"id":1797},"パフォーマンスを下げない工夫",[10,1799,1800],{},"PageSpeed Insightsでいろいろ試してパフォーマンスに影響がでる実装を調査しました。",[10,1802,1803,1804,1807],{},"今の所の検証結果の結論としては",[87,1805,1806],{},"v-if","をなるべく使わないことが大事です。",[10,1809,1810],{},"またv-ifを減らす以外にも子コンポーネントに切り出すも効果がありそうでした。",[10,1812,1813],{},"ただ一番は圧倒的にv-ifです。",[10,1815,1816],{},"v-ifを回避した実装をしようとすると自然と子コンポーネントに切り出すことが増える気がします。",[40,1818,1819],{"id":1819},"まとめ",[10,1821,1822],{},"この記事では、Nuxt Content v2を利用したブログのSEO対策について詳細に説明しました。主に、タイトルタグやメタディスクリプションの適切な設定、canonicalの設定、OGPの設定、Googleアナリティクスの設定、サイトマップの作成、構造化データの定義、画像の最適化について触れてきました。",[10,1824,1825],{},"特に、Nuxt Content v2とNuxt3でのSEO最適化の基本的な設定方法や、v-ifの使用を避けることの重要性について解説しました。また、Page Speed Insightでのパフォーマンス評価においても、適切な最適化を行うことで97-98点のスコアを達成できることが示されました。",[1827,1828,1829],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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 pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":85,"searchDepth":111,"depth":111,"links":1831},[1832,1833,1836,1839,1840,1841,1842,1843,1846],{"id":42,"depth":111,"text":42},{"id":74,"depth":111,"text":75,"children":1834},[1835],{"id":401,"depth":131,"text":402},{"id":570,"depth":111,"text":571,"children":1837},[1838],{"id":1123,"depth":131,"text":1123},{"id":1139,"depth":111,"text":1139},{"id":62,"depth":111,"text":62},{"id":1456,"depth":111,"text":1457},{"id":1550,"depth":111,"text":1551},{"id":1776,"depth":111,"text":1777,"children":1844},[1845],{"id":1797,"depth":131,"text":1797},{"id":1819,"depth":111,"text":1819},"2023-09-29","Nuxt Content v2とNuxt3を使用してブログのSEOを最適化する方法を紹介。タイトルタグ、メタディスクリプション、OGP、画像最適化、Google アナリティクス設定、サイトマップ作成についてのわかりやすく開設します。",false,"md",{},"\u002Fcontents\u002Fnuxt-content-v2seo",{"title":5,"description":1848},"contents\u002Fnuxt-content-v2seo",[1856,1857,1858],"Nuxt","Nuxt Content v2","Blog","\u002Fimg\u002Ftwitter-card.png","LW0Xo8gnuehV39kcHhO7Z47645YoEgRrEO05WQDo8Sc",[1862,1865],{"title":32,"path":1863,"stem":1864,"children":-1},"\u002Fcontents\u002Fnuxt-content-v2","contents\u002Fnuxt-content-v2",{"title":1866,"path":1867,"stem":1868,"children":-1},"【学び】入社１年目のお金の教科書 学校では教えてくれない一番カンタンなお金の増やし方","\u002Fcontents\u002Fokane_huyashikata","contents\u002Fokane_huyashikata",1784936718950]