[{"data":1,"prerenderedAt":2421},["ShallowReactive",2],{"navigation":3,"content-listing-page-2":73},[4,25,45,61,65,69],{"title":5,"path":6,"stem":5,"children":7,"page":24},"2024","\u002F2024",[8,12,16,20],{"title":9,"path":10,"stem":11},"Analytics in Bloggrify: Measuring Your Audience Without Tracking Them","\u002F2024\u002Fanalytics","2024\u002Fanalytics",{"title":13,"path":14,"stem":15},"Announcing KaTeX Support: Easily Embed Mathematical Formulas in Bloggrify","\u002F2024\u002Fkatex","2024\u002Fkatex",{"title":17,"path":18,"stem":19},"Announcing Bloggrify 1.0: A New Static Blog Generator Built on Nuxt","\u002F2024\u002Flaunching","2024\u002Flaunching",{"title":21,"path":22,"stem":23},"Writing in Bloggrify: Beyond Basic Markdown","\u002F2024\u002Fmarkdown","2024\u002Fmarkdown",false,{"title":26,"path":27,"stem":26,"children":28,"page":24},"2025","\u002F2025",[29,33,37,41],{"title":30,"path":31,"stem":32},"Introducing a new custom component: listing page","\u002F2025\u002Fnew-custom-component","2025\u002Fnew-custom-component",{"title":34,"path":35,"stem":36},"Announcing Bloggrify 2.0: Enhanced SEO, Analytics, and Developer Experience","\u002F2025\u002Fversion-2-0","2025\u002Fversion-2-0",{"title":38,"path":39,"stem":40},"Announcing Bloggrify 2.1: More Shortcodes and Analytics Integration","\u002F2025\u002Fversion-2-1","2025\u002Fversion-2-1",{"title":42,"path":43,"stem":44},"Announcing Bloggrify 3.0: CLI tools, Nuxt UI integration, and more","\u002F2025\u002Fversion-3-0","2025\u002Fversion-3-0",{"title":46,"path":47,"stem":46,"children":48,"page":24},"2026","\u002F2026",[49,53,57],{"title":50,"path":51,"stem":52},"Should you block AI crawlers on your blog? And does it even work?","\u002F2026\u002Fai-crawlers-and-llms-txt","2026\u002Fai-crawlers-and-llms-txt",{"title":54,"path":55,"stem":56},"The Search Box That Downloaded Itself on Every Page","\u002F2026\u002Floading-search-only-when-readers-need-it","2026\u002Floading-search-only-when-readers-need-it",{"title":58,"path":59,"stem":60},"Announcing Bloggrify 3.2: redesigned minimalist theme, AI crawler controls, and faster pages","\u002F2026\u002Fversion-3-2","2026\u002Fversion-3-2",{"title":62,"path":63,"stem":64},"About","\u002Fabout","about",{"title":66,"path":67,"stem":68},"Bloggrify","\u002F","index",{"title":70,"path":71,"stem":72},"SEO in Bloggrify: How Your Blog Gets Found","\u002Fseo","seo",[74,256,399,1519,1753],{"id":75,"title":34,"alternates":76,"author":77,"body":78,"categories":76,"comments":24,"cover":76,"date":240,"description":241,"draft":24,"extension":242,"hidden":24,"language":76,"layout":76,"links":76,"listed":24,"meta":243,"navigation":244,"nocomments":24,"notoc":24,"pageid":245,"path":35,"readingTime":246,"redirect_to_domain":76,"redirect_to_full_url":76,"robots":76,"schemaOrg":76,"seo":251,"sitemap":252,"stem":36,"table_of_contents":24,"tags":253,"__hash__":255},"page\u002F2025\u002Fversion-2-0.md",null,"hlassiege",{"type":79,"value":80,"toc":227},"minimark",[81,85,90,95,120,124,127,141,145,159,163,177,181,184,194,203,207,216],[82,83,84],"p",{},"We're excited to announce the release of Bloggrify 2.0.0, representing a lot of development and 46 commits. This release focuses on improving SEO capabilities, expanding analytics options, and enhancing the developer experience.",[86,87,89],"h2",{"id":88},"major-improvements","Major Improvements",[91,92,94],"h3",{"id":93},"enhanced-seo-stack","Enhanced SEO Stack",[96,97,98,111,114,117],"ul",{},[99,100,101,102,106,107,110],"li",{},"Integrated ",[103,104,105],"code",{},"nuxtjs\u002Frobots"," and ",[103,108,109],{},"nuxtjs\u002Fsitemap"," modules",[99,112,113],{},"Added Schema.org support with BlogPosting annotations",[99,115,116],{},"Enhanced meta tags and OpenGraph support",[99,118,119],{},"Report reading time in meta tags and schema.org",[91,121,123],{"id":122},"analytics-support","Analytics Support",[82,125,126],{},"Multiple provider support for web analytics:",[96,128,129,132,135,138],{},[99,130,131],{},"Hakanai integration",[99,133,134],{},"Fathom Analytics",[99,136,137],{},"Google Analytics",[99,139,140],{},"Support for multiple providers simultaneously",[91,142,144],{"id":143},"developer-experience","Developer Experience",[96,146,147,150,153,156],{},[99,148,149],{},"Improved error reporting during build",[99,151,152],{},"Simplified template writing",[99,154,155],{},"Better handling of internal links",[99,157,158],{},"Enhanced documentation",[91,160,162],{"id":161},"accessibility-improvements","Accessibility Improvements",[96,164,165,168,171,174],{},[99,166,167],{},"Improved contrast ratios",[99,169,170],{},"Added ARIA labels",[99,172,173],{},"Semantic HTML enhancements",[99,175,176],{},"Table of contents using proper nav elements",[86,178,180],{"id":179},"breaking-changes","Breaking Changes",[82,182,183],{},"If upgrading from 1.x, as a user, impacts are minimal. However, theme developers should be aware of deprecations and changes.",[82,185,186,187],{},"The migration guide is available in the ",[188,189,193],"a",{"href":190,"rel":191},"https:\u002F\u002Fbloggrify.com\u002Fintroduction\u002Fmigration",[192],"nofollow","documentation",[82,195,196,197,202],{},"Full ",[188,198,201],{"href":199,"rel":200},"https:\u002F\u002Fgithub.com\u002Fbloggrify\u002Fbloggrify\u002Freleases\u002Ftag\u002Fv2.0.0",[192],"changelog available on GitHub",".",[86,204,206],{"id":205},"contribute","Contribute",[82,208,209,210,215],{},"Bloggrify is open source. ",[188,211,214],{"href":212,"rel":213},"https:\u002F\u002Fgithub.com\u002Fbloggrify\u002Fbloggrify",[192],"Help us on GitHub",":",[96,217,218,221,224],{},[99,219,220],{},"Report issues",[99,222,223],{},"Submit PRs",[99,225,226],{},"Join discussions",{"title":228,"searchDepth":229,"depth":229,"links":230},"",2,[231,238,239],{"id":88,"depth":229,"text":89,"children":232},[233,235,236,237],{"id":93,"depth":234,"text":94},3,{"id":122,"depth":234,"text":123},{"id":143,"depth":234,"text":144},{"id":161,"depth":234,"text":162},{"id":179,"depth":229,"text":180},{"id":205,"depth":229,"text":206},"2025-01-24","Major release with improved SEO capabilities, multiple analytics providers, and better developer experience. Over 46 commits bringing significant improvements to the framework.","md",{},true,"4",{"text":247,"minutes":248,"time":249,"words":250},"1 min read",0.665,39900,133,{"title":34,"description":241},{"loc":35},[254],"release","kzKJkKBZOt3zQv2uX1wo5MbtR-9wO10m1GSExIc1WNQ",{"id":257,"title":30,"alternates":76,"author":77,"body":258,"categories":76,"comments":24,"cover":76,"date":387,"description":388,"draft":24,"extension":242,"hidden":24,"language":76,"layout":76,"links":76,"listed":24,"meta":389,"navigation":244,"nocomments":24,"notoc":24,"pageid":390,"path":31,"readingTime":391,"redirect_to_domain":76,"redirect_to_full_url":76,"robots":76,"schemaOrg":76,"seo":395,"sitemap":396,"stem":32,"table_of_contents":24,"tags":397,"__hash__":398},"page\u002F2025\u002Fnew-custom-component.md",{"type":79,"value":259,"toc":384},[260,263,270,274,303,306,332,339,357,362,380],[82,261,262],{},"A new custom component has been added to Bloggrify. This component is used to create listing pages.\nIt's more a proof of concept than a real component because the design is very basic.\nIt's a way to show how you can create custom components in Bloggrify.",[264,265,267],"alert",{"type":266},"warning",[82,268,269],{},"It's not possible to use several listing components on the same page. Otherwise, there is a conflict with the pagination.",[86,271,273],{"id":272},"listing","Listing",[275,276,277,284],"mdd",{},[278,279,280],"template",{"v-slot:preview":228},[281,282],"minimalist-listing",{"title":283},"My listing",[278,285,286],{"v-slot:markup":228},[287,288,292],"pre",{"className":289,"code":290,"language":291,"meta":228,"style":228},"language-markdown shiki shiki-themes material-theme-lighter catppuccin-frappe github-dark",":minimalist-listing{title=\"My listing\"}\n\n","markdown",[103,293,294],{"__ignoreMap":228},[295,296,299],"span",{"class":297,"line":298},"line",1,[295,300,302],{"class":301},"s8bja",":minimalist-listing{title=\"My listing\"}\n",[82,304,305],{},"This component accepts several parameters:",[96,307,308,314,320,326],{},[99,309,310,313],{},[103,311,312],{},"title",": The title of the listing.",[99,315,316,319],{},[103,317,318],{},"tag",": The tag to filter the listing.",[99,321,322,325],{},[103,323,324],{},"category",": The category to filter the listing.",[99,327,328,331],{},[103,329,330],{},"prefix",": All articles starting with this prefix will be displayed.",[82,333,334,338],{},[335,336,337],"strong",{},"Example",": how to list all articles with the tag \"markdown\":",[275,340,341,345],{},[278,342,343],{"v-slot:preview":228},[281,344],{"title":283,"tag":291},[278,346,347],{"v-slot:markup":228},[287,348,350],{"className":289,"code":349,"language":291,"meta":228,"style":228},":minimalist-listing{title=\"My listing\" tag=\"markdown\"}\n\n",[103,351,352],{"__ignoreMap":228},[295,353,354],{"class":297,"line":298},[295,355,356],{"class":301},":minimalist-listing{title=\"My listing\" tag=\"markdown\"}\n",[82,358,359,361],{},[335,360,337],{},": how to list all articles by prefix, for example, all articles starting with \"2024\":",[275,363,364,368],{},[278,365,366],{"v-slot:preview":228},[281,367],{"title":283,"prefix":5},[278,369,370],{"v-slot:markup":228},[287,371,373],{"className":289,"code":372,"language":291,"meta":228,"style":228},":minimalist-listing{title=\"My listing\" prefix=\"2024\"}\n\n",[103,374,375],{"__ignoreMap":228},[295,376,377],{"class":297,"line":298},[295,378,379],{"class":301},":minimalist-listing{title=\"My listing\" prefix=\"2024\"}\n",[381,382,383],"style",{},"html pre.shiki code .s8bja, html code.shiki .s8bja{--shiki-light:#90A4AE;--shiki-default:#C6D0F5;--shiki-dark:#E1E4E8}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);}",{"title":228,"searchDepth":229,"depth":229,"links":385},[386],{"id":272,"depth":229,"text":273},"2025-01-21","A new custom component has been added to Bloggrify. This component is used to create listing pages.",{},"11",{"text":247,"minutes":392,"time":393,"words":394},0.625,37500,125,{"title":30,"description":388},{"loc":31},[291],"lrfDihC8hvhvBN0cqrIre-Rl2mttB2huxPWPSHrpVuc",{"id":400,"title":13,"alternates":76,"author":77,"body":401,"categories":76,"comments":24,"cover":76,"date":1507,"description":1508,"draft":24,"extension":242,"hidden":24,"language":76,"layout":76,"links":76,"listed":24,"meta":1509,"navigation":244,"nocomments":24,"notoc":24,"pageid":1510,"path":14,"readingTime":1511,"redirect_to_domain":76,"redirect_to_full_url":76,"robots":76,"schemaOrg":76,"seo":1515,"sitemap":1516,"stem":15,"table_of_contents":24,"tags":1517,"__hash__":1518},"page\u002F2024\u002Fkatex.md",{"type":79,"value":402,"toc":1501},[403,406,409,417,421,425,430,705,710,1315,1320,1491,1495,1498],[82,404,405],{},"Bloggrify now supports KaTeX, so you can embed mathematical formulas and equations directly into your Markdown posts. This is handy for anyone writing technical, scientific, or educational content.",[82,407,408],{},"KaTeX is a fast JavaScript library for TeX math rendering on the web, and a reliable way to render mathematical formulas in your Markdown files.",[82,410,411,412,202],{},"You can find more information on the ",[188,413,416],{"href":414,"rel":415},"https:\u002F\u002Fkatex.org\u002F",[192],"official website",[86,418,420],{"id":419},"getting-started-with-katex","Getting Started with KaTeX",[91,422,424],{"id":423},"mathematical-formulas","Mathematical formulas",[82,426,427],{},[335,428,429],{},"Centered formula",[295,431,434],{"className":432},[433],"katex-display",[295,435,438,498],{"className":436},[437],"katex",[295,439,442],{"className":440},[441],"katex-mathml",[443,444,447],"math",{"xmlns":445,"display":446},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML","block",[448,449,450,493],"semantics",{},[451,452,453,457,461,471,474,482,485],"mrow",{},[454,455,456],"mi",{},"L",[458,459,460],"mo",{},"=",[462,463,464,468],"mfrac",{},[465,466,467],"mn",{},"1",[465,469,470],{},"2",[454,472,473],{},"ρ",[475,476,477,480],"msup",{},[454,478,479],{},"v",[465,481,470],{},[454,483,484],{},"S",[486,487,488,491],"msub",{},[454,489,490],{},"C",[454,492,456],{},[494,495,497],"annotation",{"encoding":496},"application\u002Fx-tex","L = \\frac{1}{2} \\rho v^2 S C_L",[295,499,503,529],{"className":500,"ariaHidden":502},[501],"katex-html","true",[295,504,507,512,517,522,526],{"className":505},[506],"base",[295,508],{"className":509,"style":511},[510],"strut","height:0.6833em;",[295,513,456],{"className":514},[515,516],"mord","mathnormal",[295,518],{"className":519,"style":521},[520],"mspace","margin-right:0.2778em;",[295,523,460],{"className":524},[525],"mrel",[295,527],{"className":528,"style":521},[520],[295,530,532,536,616,619,657,661],{"className":531},[506],[295,533],{"className":534,"style":535},[510],"height:2.0074em;vertical-align:-0.686em;",[295,537,539,544,612],{"className":538},[515],[295,540],{"className":541},[542,543],"mopen","nulldelimiter",[295,545,547],{"className":546},[462],[295,548,552,603],{"className":549},[550,551],"vlist-t","vlist-t2",[295,553,556,598],{"className":554},[555],"vlist-r",[295,557,561,575,586],{"className":558,"style":560},[559],"vlist","height:1.3214em;",[295,562,564,569],{"style":563},"top:-2.314em;",[295,565],{"className":566,"style":568},[567],"pstrut","height:3em;",[295,570,572],{"className":571},[515],[295,573,470],{"className":574},[515],[295,576,578,581],{"style":577},"top:-3.23em;",[295,579],{"className":580,"style":568},[567],[295,582],{"className":583,"style":585},[584],"frac-line","border-bottom-width:0.04em;",[295,587,589,592],{"style":588},"top:-3.677em;",[295,590],{"className":591,"style":568},[567],[295,593,595],{"className":594},[515],[295,596,467],{"className":597},[515],[295,599,602],{"className":600},[601],"vlist-s","​",[295,604,606],{"className":605},[555],[295,607,610],{"className":608,"style":609},[559],"height:0.686em;",[295,611],{},[295,613],{"className":614},[615,543],"mclose",[295,617,473],{"className":618},[515,516],[295,620,622,626],{"className":621},[515],[295,623,479],{"className":624,"style":625},[515,516],"margin-right:0.03588em;",[295,627,630],{"className":628},[629],"msupsub",[295,631,633],{"className":632},[550],[295,634,636],{"className":635},[555],[295,637,640],{"className":638,"style":639},[559],"height:0.8641em;",[295,641,643,647],{"style":642},"top:-3.113em;margin-right:0.05em;",[295,644],{"className":645,"style":646},[567],"height:2.7em;",[295,648,654],{"className":649},[650,651,652,653],"sizing","reset-size6","size3","mtight",[295,655,470],{"className":656},[515,653],[295,658,484],{"className":659,"style":660},[515,516],"margin-right:0.05764em;",[295,662,664,668],{"className":663},[515],[295,665,490],{"className":666,"style":667},[515,516],"margin-right:0.07153em;",[295,669,671],{"className":670},[629],[295,672,674,696],{"className":673},[550,551],[295,675,677,693],{"className":676},[555],[295,678,681],{"className":679,"style":680},[559],"height:0.3283em;",[295,682,684,687],{"style":683},"top:-2.55em;margin-left:-0.0715em;margin-right:0.05em;",[295,685],{"className":686,"style":646},[567],[295,688,690],{"className":689},[650,651,652,653],[295,691,456],{"className":692},[515,516,653],[295,694,602],{"className":695},[601],[295,697,699],{"className":698},[555],[295,700,703],{"className":701,"style":702},[559],"height:0.15em;",[295,704],{},[82,706,707],{},[335,708,709],{},"Using code block",[295,711,713,827],{"className":712},[437],[295,714,716],{"className":715},[441],[443,717,718],{"xmlns":445},[448,719,720,824],{},[451,721,722,765,768,796],{},[475,723,724,763],{},[451,725,726,729,747,753,760],{},[458,727,728],{"fence":502},"(",[730,731,732,735,744],"msubsup",{},[458,733,734],{},"∑",[451,736,737,740,742],{},[454,738,739],{},"k",[458,741,460],{},[465,743,467],{},[454,745,746],{},"n",[486,748,749,751],{},[454,750,188],{},[454,752,739],{},[486,754,755,758],{},[454,756,757],{},"b",[454,759,739],{},[458,761,762],{"fence":502},")",[465,764,470],{},[458,766,767],{},"≤",[451,769,770,772,786,794],{},[458,771,728],{"fence":502},[730,773,774,776,784],{},[458,775,734],{},[451,777,778,780,782],{},[454,779,739],{},[458,781,460],{},[465,783,467],{},[454,785,746],{},[730,787,788,790,792],{},[454,789,188],{},[454,791,739],{},[465,793,470],{},[458,795,762],{"fence":502},[451,797,798,800,814,822],{},[458,799,728],{"fence":502},[730,801,802,804,812],{},[458,803,734],{},[451,805,806,808,810],{},[454,807,739],{},[458,809,460],{},[465,811,467],{},[454,813,746],{},[730,815,816,818,820],{},[454,817,757],{},[454,819,739],{},[465,821,470],{},[458,823,762],{"fence":502},[494,825,826],{"encoding":496},"\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n",[295,828,830,1041],{"className":829,"ariaHidden":502},[501],[295,831,833,837,1032,1035,1038],{"className":832},[506],[295,834],{"className":835,"style":836},[510],"height:1.308em;vertical-align:-0.2997em;",[295,838,841,1007],{"className":839},[840],"minner",[295,842,844,849,918,922,964,1004],{"className":843},[840],[295,845,728],{"className":846,"style":848},[542,847],"delimcenter","top:0em;",[295,850,853,859],{"className":851},[852],"mop",[295,854,734],{"className":855,"style":858},[852,856,857],"op-symbol","small-op","position:relative;top:0em;",[295,860,862],{"className":861},[629],[295,863,865,909],{"className":864},[550,551],[295,866,868,906],{"className":867},[555],[295,869,872,894],{"className":870,"style":871},[559],"height:0.8043em;",[295,873,875,878],{"style":874},"top:-2.4003em;margin-left:0em;margin-right:0.05em;",[295,876],{"className":877,"style":646},[567],[295,879,881],{"className":880},[650,651,652,653],[295,882,884,888,891],{"className":883},[515,653],[295,885,739],{"className":886,"style":887},[515,516,653],"margin-right:0.03148em;",[295,889,460],{"className":890},[525,653],[295,892,467],{"className":893},[515,653],[295,895,897,900],{"style":896},"top:-3.2029em;margin-right:0.05em;",[295,898],{"className":899,"style":646},[567],[295,901,903],{"className":902},[650,651,652,653],[295,904,746],{"className":905},[515,516,653],[295,907,602],{"className":908},[601],[295,910,912],{"className":911},[555],[295,913,916],{"className":914,"style":915},[559],"height:0.2997em;",[295,917],{},[295,919],{"className":920,"style":921},[520],"margin-right:0.1667em;",[295,923,925,928],{"className":924},[515],[295,926,188],{"className":927},[515,516],[295,929,931],{"className":930},[629],[295,932,934,956],{"className":933},[550,551],[295,935,937,953],{"className":936},[555],[295,938,941],{"className":939,"style":940},[559],"height:0.3361em;",[295,942,944,947],{"style":943},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[295,945],{"className":946,"style":646},[567],[295,948,950],{"className":949},[650,651,652,653],[295,951,739],{"className":952,"style":887},[515,516,653],[295,954,602],{"className":955},[601],[295,957,959],{"className":958},[555],[295,960,962],{"className":961,"style":702},[559],[295,963],{},[295,965,967,970],{"className":966},[515],[295,968,757],{"className":969},[515,516],[295,971,973],{"className":972},[629],[295,974,976,996],{"className":975},[550,551],[295,977,979,993],{"className":978},[555],[295,980,982],{"className":981,"style":940},[559],[295,983,984,987],{"style":943},[295,985],{"className":986,"style":646},[567],[295,988,990],{"className":989},[650,651,652,653],[295,991,739],{"className":992,"style":887},[515,516,653],[295,994,602],{"className":995},[601],[295,997,999],{"className":998},[555],[295,1000,1002],{"className":1001,"style":702},[559],[295,1003],{},[295,1005,762],{"className":1006,"style":848},[615,847],[295,1008,1010],{"className":1009},[629],[295,1011,1013],{"className":1012},[550],[295,1014,1016],{"className":1015},[555],[295,1017,1020],{"className":1018,"style":1019},[559],"height:1.0083em;",[295,1021,1023,1026],{"style":1022},"top:-3.2572em;margin-right:0.05em;",[295,1024],{"className":1025,"style":646},[567],[295,1027,1029],{"className":1028},[650,651,652,653],[295,1030,470],{"className":1031},[515,653],[295,1033],{"className":1034,"style":521},[520],[295,1036,767],{"className":1037},[525],[295,1039],{"className":1040,"style":521},[520],[295,1042,1044,1048,1183,1186],{"className":1043},[506],[295,1045],{"className":1046,"style":1047},[510],"height:1.2em;vertical-align:-0.35em;",[295,1049,1051,1059,1119,1122,1177],{"className":1050},[840],[295,1052,1054],{"className":1053,"style":848},[542,847],[295,1055,728],{"className":1056},[1057,1058],"delimsizing","size1",[295,1060,1062,1065],{"className":1061},[852],[295,1063,734],{"className":1064,"style":858},[852,856,857],[295,1066,1068],{"className":1067},[629],[295,1069,1071,1111],{"className":1070},[550,551],[295,1072,1074,1108],{"className":1073},[555],[295,1075,1077,1097],{"className":1076,"style":871},[559],[295,1078,1079,1082],{"style":874},[295,1080],{"className":1081,"style":646},[567],[295,1083,1085],{"className":1084},[650,651,652,653],[295,1086,1088,1091,1094],{"className":1087},[515,653],[295,1089,739],{"className":1090,"style":887},[515,516,653],[295,1092,460],{"className":1093},[525,653],[295,1095,467],{"className":1096},[515,653],[295,1098,1099,1102],{"style":896},[295,1100],{"className":1101,"style":646},[567],[295,1103,1105],{"className":1104},[650,651,652,653],[295,1106,746],{"className":1107},[515,516,653],[295,1109,602],{"className":1110},[601],[295,1112,1114],{"className":1113},[555],[295,1115,1117],{"className":1116,"style":915},[559],[295,1118],{},[295,1120],{"className":1121,"style":921},[520],[295,1123,1125,1128],{"className":1124},[515],[295,1126,188],{"className":1127},[515,516],[295,1129,1131],{"className":1130},[629],[295,1132,1134,1168],{"className":1133},[550,551],[295,1135,1137,1165],{"className":1136},[555],[295,1138,1141,1153],{"className":1139,"style":1140},[559],"height:0.8141em;",[295,1142,1144,1147],{"style":1143},"top:-2.4169em;margin-left:0em;margin-right:0.05em;",[295,1145],{"className":1146,"style":646},[567],[295,1148,1150],{"className":1149},[650,651,652,653],[295,1151,739],{"className":1152,"style":887},[515,516,653],[295,1154,1156,1159],{"style":1155},"top:-3.063em;margin-right:0.05em;",[295,1157],{"className":1158,"style":646},[567],[295,1160,1162],{"className":1161},[650,651,652,653],[295,1163,470],{"className":1164},[515,653],[295,1166,602],{"className":1167},[601],[295,1169,1171],{"className":1170},[555],[295,1172,1175],{"className":1173,"style":1174},[559],"height:0.2831em;",[295,1176],{},[295,1178,1180],{"className":1179,"style":848},[615,847],[295,1181,762],{"className":1182},[1057,1058],[295,1184],{"className":1185,"style":921},[520],[295,1187,1189,1195,1255,1258,1309],{"className":1188},[840],[295,1190,1192],{"className":1191,"style":848},[542,847],[295,1193,728],{"className":1194},[1057,1058],[295,1196,1198,1201],{"className":1197},[852],[295,1199,734],{"className":1200,"style":858},[852,856,857],[295,1202,1204],{"className":1203},[629],[295,1205,1207,1247],{"className":1206},[550,551],[295,1208,1210,1244],{"className":1209},[555],[295,1211,1213,1233],{"className":1212,"style":871},[559],[295,1214,1215,1218],{"style":874},[295,1216],{"className":1217,"style":646},[567],[295,1219,1221],{"className":1220},[650,651,652,653],[295,1222,1224,1227,1230],{"className":1223},[515,653],[295,1225,739],{"className":1226,"style":887},[515,516,653],[295,1228,460],{"className":1229},[525,653],[295,1231,467],{"className":1232},[515,653],[295,1234,1235,1238],{"style":896},[295,1236],{"className":1237,"style":646},[567],[295,1239,1241],{"className":1240},[650,651,652,653],[295,1242,746],{"className":1243},[515,516,653],[295,1245,602],{"className":1246},[601],[295,1248,1250],{"className":1249},[555],[295,1251,1253],{"className":1252,"style":915},[559],[295,1254],{},[295,1256],{"className":1257,"style":921},[520],[295,1259,1261,1264],{"className":1260},[515],[295,1262,757],{"className":1263},[515,516],[295,1265,1267],{"className":1266},[629],[295,1268,1270,1301],{"className":1269},[550,551],[295,1271,1273,1298],{"className":1272},[555],[295,1274,1276,1287],{"className":1275,"style":1140},[559],[295,1277,1278,1281],{"style":1143},[295,1279],{"className":1280,"style":646},[567],[295,1282,1284],{"className":1283},[650,651,652,653],[295,1285,739],{"className":1286,"style":887},[515,516,653],[295,1288,1289,1292],{"style":1155},[295,1290],{"className":1291,"style":646},[567],[295,1293,1295],{"className":1294},[650,651,652,653],[295,1296,470],{"className":1297},[515,653],[295,1299,602],{"className":1300},[601],[295,1302,1304],{"className":1303},[555],[295,1305,1307],{"className":1306,"style":1174},[559],[295,1308],{},[295,1310,1312],{"className":1311,"style":848},[615,847],[295,1313,762],{"className":1314},[1057,1058],[82,1316,1317],{},[335,1318,1319],{},"Inline formula",[82,1321,1322,1323,202],{},"This is an inline formula ",[295,1324,1326,1362],{"className":1325},[437],[295,1327,1329],{"className":1328},[441],[443,1330,1331],{"xmlns":445},[448,1332,1333,1359],{},[451,1334,1335,1341,1344,1350,1352],{},[475,1336,1337,1339],{},[454,1338,188],{},[465,1340,470],{},[458,1342,1343],{},"+",[475,1345,1346,1348],{},[454,1347,757],{},[465,1349,470],{},[458,1351,460],{},[475,1353,1354,1357],{},[454,1355,1356],{},"c",[465,1358,470],{},[494,1360,1361],{"encoding":496},"a^2 + b^2 = c^2",[295,1363,1365,1412,1456],{"className":1364,"ariaHidden":502},[501],[295,1366,1368,1372,1401,1405,1409],{"className":1367},[506],[295,1369],{"className":1370,"style":1371},[510],"height:0.8974em;vertical-align:-0.0833em;",[295,1373,1375,1378],{"className":1374},[515],[295,1376,188],{"className":1377},[515,516],[295,1379,1381],{"className":1380},[629],[295,1382,1384],{"className":1383},[550],[295,1385,1387],{"className":1386},[555],[295,1388,1390],{"className":1389,"style":1140},[559],[295,1391,1392,1395],{"style":1155},[295,1393],{"className":1394,"style":646},[567],[295,1396,1398],{"className":1397},[650,651,652,653],[295,1399,470],{"className":1400},[515,653],[295,1402],{"className":1403,"style":1404},[520],"margin-right:0.2222em;",[295,1406,1343],{"className":1407},[1408],"mbin",[295,1410],{"className":1411,"style":1404},[520],[295,1413,1415,1418,1447,1450,1453],{"className":1414},[506],[295,1416],{"className":1417,"style":1140},[510],[295,1419,1421,1424],{"className":1420},[515],[295,1422,757],{"className":1423},[515,516],[295,1425,1427],{"className":1426},[629],[295,1428,1430],{"className":1429},[550],[295,1431,1433],{"className":1432},[555],[295,1434,1436],{"className":1435,"style":1140},[559],[295,1437,1438,1441],{"style":1155},[295,1439],{"className":1440,"style":646},[567],[295,1442,1444],{"className":1443},[650,651,652,653],[295,1445,470],{"className":1446},[515,653],[295,1448],{"className":1449,"style":521},[520],[295,1451,460],{"className":1452},[525],[295,1454],{"className":1455,"style":521},[520],[295,1457,1459,1462],{"className":1458},[506],[295,1460],{"className":1461,"style":1140},[510],[295,1463,1465,1468],{"className":1464},[515],[295,1466,1356],{"className":1467},[515,516],[295,1469,1471],{"className":1470},[629],[295,1472,1474],{"className":1473},[550],[295,1475,1477],{"className":1476},[555],[295,1478,1480],{"className":1479,"style":1140},[559],[295,1481,1482,1485],{"style":1155},[295,1483],{"className":1484,"style":646},[567],[295,1486,1488],{"className":1487},[650,651,652,653],[295,1489,470],{"className":1490},[515,653],[86,1492,1494],{"id":1493},"conclusion","Conclusion",[82,1496,1497],{},"With KaTeX support, you can write rich technical and educational content without leaving Markdown. Whether you're teaching, studying, or just documenting a formula, it helps you communicate complex ideas clearly.",[82,1499,1500],{},"Share what you build with it, and stay tuned to Bloggrify for more updates.",{"title":228,"searchDepth":229,"depth":229,"links":1502},[1503,1506],{"id":419,"depth":229,"text":420,"children":1504},[1505],{"id":423,"depth":234,"text":424},{"id":1493,"depth":229,"text":1494},"2024-06-08","Bloggrify now supports KaTeX, allowing you to seamlessly embed mathematical formulas and equations directly into your Markdown posts.",{},"6",{"text":247,"minutes":1512,"time":1513,"words":1514},0.64,38400,128,{"title":13,"description":1508},{"loc":14},[291,437],"_fPHJwae6FuhCE4BKaS2rfdrvMegiy63ojBT-KOVI7w",{"id":1520,"title":9,"alternates":76,"author":77,"body":1521,"categories":76,"comments":24,"cover":1738,"date":1739,"description":1740,"draft":24,"extension":242,"hidden":24,"language":76,"layout":76,"links":76,"listed":24,"meta":1741,"navigation":244,"nocomments":24,"notoc":24,"pageid":1742,"path":10,"readingTime":1743,"redirect_to_domain":76,"redirect_to_full_url":76,"robots":76,"schemaOrg":76,"seo":1748,"sitemap":1749,"stem":11,"table_of_contents":24,"tags":1750,"__hash__":1752},"page\u002F2024\u002Fanalytics.md",{"type":79,"value":1522,"toc":1732},[1523,1526,1529,1533,1536,1539,1546,1549,1553,1560,1563,1566,1570,1589,1592,1595,1599,1605,1717,1729],[82,1524,1525],{},"Most blogs want the same two things from analytics: how many people came, and what they read. That is a modest question. The tools people reach for to answer it, led by Google Analytics, tend to collect far more than that, and they hand you a cookie banner and a privacy policy as the price of entry.",[82,1527,1528],{},"Bloggrify encourages you to use privacy-focused analytics providers that take a narrower path on purpose, and this post explains why, and where the sharp edges are.",[86,1530,1532],{"id":1531},"why-cookieless-analytics","Why cookieless analytics",[82,1534,1535],{},"The reason a site needs a cookie banner is not analytics as such, it is the cookies and the personal data. Under the GDPR and the ePrivacy directive, storing a cookie on a reader's device for tracking, or collecting data that identifies them, requires consent. That is what the banner is: a consent prompt the law obliges you to show.",[82,1537,1538],{},"Cookieless analytics sidestep the whole thing. Providers like Hakanai, Pirsch, Plausible, Umami, Fathom and OpenPanel can count visits without storing anything on the reader's device and without building a profile of who they are. They measure page views, referrers and rough geography from data the browser already sends, then aggregate it. No cookie, no personal data, and in the common case no banner to show. The tracking script is also a fraction of the weight of a typical tag manager, so the page stays fast.",[82,1540,1541,1542,1545],{},"None of that is automatic, though. It describes these tools in their default, privacy-preserving mode, not a guarantee they enforce. Most of them also offer opt-in features that set identifiers, follow individuals across sessions or enrich visitor data, and ",[335,1543,1544],{},"the moment you turn those on you are collecting personal data again and back to needing consent",". Whichever provider you pick, check its settings and keep it in the cookieless mode this whole approach depends on.",[82,1547,1548],{},"Bloggrify integrates with these providers directly. You pick one, drop your site code into the config, and the script is added to every page.",[86,1550,1552],{"id":1551},"google-analytics-is-allowed-not-recommended","Google Analytics is allowed, not recommended",[82,1554,1555,1556,1559],{},"Bloggrify does not forbid Google Analytics. If you already run it everywhere and want it here too, the ",[103,1557,1558],{},"google"," provider is there. But it is a deliberate outlier in the list, and worth being honest about.",[82,1561,1562],{},"Google Analytics sets cookies and sends visitor data to Google, which puts it squarely in banner-and-consent territory. It has also been on shaky legal ground in Europe: several national regulators, in Austria, France and Italy among others, have ruled that sending European visitors' data to Google Analytics breached the GDPR. The legal picture keeps shifting, but the direction of travel is clear enough that building a new blog on it in 2024 is a strange choice.",[82,1564,1565],{},"I can't remove it because it's widely used, but I don't recommend it.",[86,1567,1569],{"id":1568},"the-ad-blocker-problem-and-the-honest-way-around-it","The ad blocker problem, and the honest way around it",[82,1571,1572,1573,1576,1577,1580,1581,1584,1585,1588],{},"There is a catch about trackers: a large share of your readers never load it. ",[335,1574,1575],{},"Roughly a third of web users run an ad blocker",", and on a technical blog it is routinely more than half. The default cloud scripts, served from domains like ",[103,1578,1579],{},"plausible.io",", ",[103,1582,1583],{},"cloud.umami.is"," or ",[103,1586,1587],{},"cdn.usefathom.com",", sit on the standard block lists. Those readers are simply missing from your numbers, and the more technical your audience, the more wrong your dashboard is.",[82,1590,1591],{},"The fix that actually works is a proxy. Instead of loading the script from the provider's domain, you serve it from your own, so it is indistinguishable from the rest of your site and slips past the block lists. Most providers document a proxy setup for exactly this reason.",[82,1593,1594],{},"I want to be clear about what that is for. A proxy is a way to count the readers an ad blocker would otherwise hide, not a way to quietly reinstate the tracking those readers were trying to avoid. Routing a cookie-setting, profile-building tracker through your own domain to dodge consent would be the wrong use of it. The combination worth aiming for is a cookieless provider that collects no personal data, proxied through your domain so the counts are honest.",[86,1596,1598],{"id":1597},"setting-it-up","Setting it up",[82,1600,1601,1602,215],{},"The whole configuration is one entry in your ",[103,1603,1604],{},"app.config.ts",[287,1606,1610],{"className":1607,"code":1608,"filename":1604,"language":1609,"meta":228,"style":228},"language-typescript shiki shiki-themes material-theme-lighter catppuccin-frappe github-dark","export default defineAppConfig({\n  analytics: {\n    providers: [\n      { provider: 'hakanai', code: 'YOUR_SITE_ID' },\n    ],\n  },\n})\n","typescript",[103,1611,1612,1631,1643,1653,1693,1702,1708],{"__ignoreMap":228},[295,1613,1614,1618,1621,1625,1627],{"class":297,"line":298},[295,1615,1617],{"class":1616},"sHqub","export",[295,1619,1620],{"class":1616}," default",[295,1622,1624],{"class":1623},"srxfx"," defineAppConfig",[295,1626,728],{"class":301},[295,1628,1630],{"class":1629},"sdvfp","{\n",[295,1632,1633,1637,1640],{"class":297,"line":229},[295,1634,1636],{"class":1635},"sHJOX","  analytics",[295,1638,215],{"class":1639},"s1BmC",[295,1641,1642],{"class":1629}," {\n",[295,1644,1645,1648,1650],{"class":297,"line":234},[295,1646,1647],{"class":1635},"    providers",[295,1649,215],{"class":1639},[295,1651,1652],{"class":301}," [\n",[295,1654,1656,1659,1662,1664,1668,1672,1675,1678,1681,1683,1685,1688,1690],{"class":297,"line":1655},4,[295,1657,1658],{"class":1629},"      {",[295,1660,1661],{"class":1635}," provider",[295,1663,215],{"class":1639},[295,1665,1667],{"class":1666},"srOHQ"," '",[295,1669,1671],{"class":1670},"sw2QF","hakanai",[295,1673,1674],{"class":1666},"'",[295,1676,1677],{"class":1629},",",[295,1679,1680],{"class":1635}," code",[295,1682,215],{"class":1639},[295,1684,1667],{"class":1666},[295,1686,1687],{"class":1670},"YOUR_SITE_ID",[295,1689,1674],{"class":1666},[295,1691,1692],{"class":1629}," },\n",[295,1694,1696,1699],{"class":297,"line":1695},5,[295,1697,1698],{"class":301},"    ]",[295,1700,1701],{"class":1629},",\n",[295,1703,1705],{"class":297,"line":1704},6,[295,1706,1707],{"class":1629},"  },\n",[295,1709,1711,1714],{"class":297,"line":1710},7,[295,1712,1713],{"class":1629},"}",[295,1715,1716],{"class":301},")\n",[82,1718,1719,1720,1722,1723,1728],{},"Swap ",[103,1721,1671],{}," for whichever provider you chose and paste in the site code it gave you. The ",[188,1724,1727],{"href":1725,"rel":1726},"https:\u002F\u002Fbloggrify.com\u002Freference\u002Fanalytics",[192],"analytics reference"," lists every supported provider and the exact code each one expects, along with the proxy setup where it applies.",[381,1730,1731],{},"html pre.shiki code .sHqub, html code.shiki .sHqub{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#CA9EE6;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .srxfx, html code.shiki .srxfx{--shiki-light:#6182B8;--shiki-light-font-style:inherit;--shiki-default:#8CAAEE;--shiki-default-font-style:italic;--shiki-dark:#B392F0;--shiki-dark-font-style:inherit}html pre.shiki code .s8bja, html code.shiki .s8bja{--shiki-light:#90A4AE;--shiki-default:#C6D0F5;--shiki-dark:#E1E4E8}html pre.shiki code .sdvfp, html code.shiki .sdvfp{--shiki-light:#39ADB5;--shiki-default:#949CBB;--shiki-dark:#E1E4E8}html pre.shiki code .sHJOX, html code.shiki .sHJOX{--shiki-light:#E53935;--shiki-default:#C6D0F5;--shiki-dark:#E1E4E8}html pre.shiki code .s1BmC, html code.shiki .s1BmC{--shiki-light:#39ADB5;--shiki-default:#81C8BE;--shiki-dark:#E1E4E8}html pre.shiki code .srOHQ, html code.shiki .srOHQ{--shiki-light:#39ADB5;--shiki-default:#A6D189;--shiki-dark:#9ECBFF}html pre.shiki code .sw2QF, html code.shiki .sw2QF{--shiki-light:#91B859;--shiki-default:#A6D189;--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);}",{"title":228,"searchDepth":229,"depth":229,"links":1733},[1734,1735,1736,1737],{"id":1531,"depth":229,"text":1532},{"id":1551,"depth":229,"text":1552},{"id":1568,"depth":229,"text":1569},{"id":1597,"depth":229,"text":1598},"\u002Fblog\u002Fanalytics.jpg","2024-02-11","How Bloggrify handles analytics: why cookieless providers matter, why Google Analytics is allowed but not recommended, and how to get accurate numbers past ad blockers.",{},"8",{"text":1744,"minutes":1745,"time":1746,"words":1747},"4 min read",3.6,216000,720,{"title":9,"description":1740},{"loc":10},[1751],"analytics","yjGs1m9-7JulBTE3n5OL69angqUSXr7qZGTi_-aMXyE",{"id":1754,"title":70,"alternates":76,"author":77,"body":1755,"categories":76,"comments":24,"cover":76,"date":1739,"description":2410,"draft":24,"extension":242,"hidden":24,"language":76,"layout":76,"links":76,"listed":24,"meta":2411,"navigation":244,"nocomments":24,"notoc":24,"pageid":2412,"path":71,"readingTime":2413,"redirect_to_domain":76,"redirect_to_full_url":76,"robots":76,"schemaOrg":76,"seo":2417,"sitemap":2418,"stem":72,"table_of_contents":244,"tags":2419,"__hash__":2420},"page\u002Fseo.md",{"type":79,"value":1756,"toc":2394},[1757,1760,1764,1767,1779,1782,1786,1790,1955,1958,2017,2021,2024,2107,2111,2114,2117,2120,2123,2126,2146,2149,2153,2157,2160,2169,2183,2189,2206,2212,2226,2231,2248,2251,2255,2258,2285,2288,2302,2305,2316,2320,2323,2331,2335,2338,2349,2353,2374,2376,2382,2391],[82,1758,1759],{},"When you write a blog post, you want it to reach its audience. That's where SEO (Search Engine Optimization) comes in - it's the practice of making your content discoverable by search engines. Let's explore how Bloggrify helps you achieve this without becoming an SEO expert.",[86,1761,1763],{"id":1762},"why-seo-matters-for-your-blog","Why SEO Matters for Your Blog",[82,1765,1766],{},"Think about how you find information online. You probably:",[1768,1769,1770,1773,1776],"ol",{},[99,1771,1772],{},"Type a question in Google",[99,1774,1775],{},"Scan the results",[99,1777,1778],{},"Click on the most relevant one",[82,1780,1781],{},"That's exactly how your potential readers will find your blog. Good SEO means your content appears in these results when it's relevant to the search. But here's the catch: SEO involves dozens of technical details that can be overwhelming.",[86,1783,1785],{"id":1784},"what-bloggrify-does-automatically","What Bloggrify Does Automatically 🤖",[91,1787,1789],{"id":1788},"meta-tags-generation","Meta Tags Generation",[287,1791,1795],{"className":1792,"code":1793,"language":1794,"meta":228,"style":228},"language-html shiki shiki-themes material-theme-lighter catppuccin-frappe github-dark","\u003Cmeta name=\"description\" content=\"Your post description\">\n\u003Cmeta name=\"robots\" content=\"index,follow\">\n\u003Cmeta property=\"og:title\" content=\"Your Post Title\">\n\u003Cmeta property=\"og:description\" content=\"Your post description\">\n\u003Cmeta property=\"og:image\" content=\"your-image.jpg\">\n","html",[103,1796,1797,1835,1865,1896,1925],{"__ignoreMap":228},[295,1798,1799,1802,1806,1810,1812,1815,1818,1820,1823,1825,1827,1830,1832],{"class":297,"line":298},[295,1800,1801],{"class":1639},"\u003C",[295,1803,1805],{"class":1804},"sjqto","meta",[295,1807,1809],{"class":1808},"s3uge"," name",[295,1811,460],{"class":1639},[295,1813,1814],{"class":1666},"\"",[295,1816,1817],{"class":1670},"description",[295,1819,1814],{"class":1666},[295,1821,1822],{"class":1808}," content",[295,1824,460],{"class":1639},[295,1826,1814],{"class":1666},[295,1828,1829],{"class":1670},"Your post description",[295,1831,1814],{"class":1666},[295,1833,1834],{"class":1639},">\n",[295,1836,1837,1839,1841,1843,1845,1847,1850,1852,1854,1856,1858,1861,1863],{"class":297,"line":229},[295,1838,1801],{"class":1639},[295,1840,1805],{"class":1804},[295,1842,1809],{"class":1808},[295,1844,460],{"class":1639},[295,1846,1814],{"class":1666},[295,1848,1849],{"class":1670},"robots",[295,1851,1814],{"class":1666},[295,1853,1822],{"class":1808},[295,1855,460],{"class":1639},[295,1857,1814],{"class":1666},[295,1859,1860],{"class":1670},"index,follow",[295,1862,1814],{"class":1666},[295,1864,1834],{"class":1639},[295,1866,1867,1869,1871,1874,1876,1878,1881,1883,1885,1887,1889,1892,1894],{"class":297,"line":234},[295,1868,1801],{"class":1639},[295,1870,1805],{"class":1804},[295,1872,1873],{"class":1808}," property",[295,1875,460],{"class":1639},[295,1877,1814],{"class":1666},[295,1879,1880],{"class":1670},"og:title",[295,1882,1814],{"class":1666},[295,1884,1822],{"class":1808},[295,1886,460],{"class":1639},[295,1888,1814],{"class":1666},[295,1890,1891],{"class":1670},"Your Post Title",[295,1893,1814],{"class":1666},[295,1895,1834],{"class":1639},[295,1897,1898,1900,1902,1904,1906,1908,1911,1913,1915,1917,1919,1921,1923],{"class":297,"line":1655},[295,1899,1801],{"class":1639},[295,1901,1805],{"class":1804},[295,1903,1873],{"class":1808},[295,1905,460],{"class":1639},[295,1907,1814],{"class":1666},[295,1909,1910],{"class":1670},"og:description",[295,1912,1814],{"class":1666},[295,1914,1822],{"class":1808},[295,1916,460],{"class":1639},[295,1918,1814],{"class":1666},[295,1920,1829],{"class":1670},[295,1922,1814],{"class":1666},[295,1924,1834],{"class":1639},[295,1926,1927,1929,1931,1933,1935,1937,1940,1942,1944,1946,1948,1951,1953],{"class":297,"line":1695},[295,1928,1801],{"class":1639},[295,1930,1805],{"class":1804},[295,1932,1873],{"class":1808},[295,1934,460],{"class":1639},[295,1936,1814],{"class":1666},[295,1938,1939],{"class":1670},"og:image",[295,1941,1814],{"class":1666},[295,1943,1822],{"class":1808},[295,1945,460],{"class":1639},[295,1947,1814],{"class":1666},[295,1949,1950],{"class":1670},"your-image.jpg",[295,1952,1814],{"class":1666},[295,1954,1834],{"class":1639},[82,1956,1957],{},"All these tags are generated automatically from your post's front matter:",[287,1959,1963],{"className":1960,"code":1961,"language":1962,"meta":228,"style":228},"language-yaml shiki shiki-themes material-theme-lighter catppuccin-frappe github-dark","---\ntitle: \"My Amazing Post\"\ndescription: \"A clear description of your post\"\ncover: \"\u002Fimages\u002Fpost-cover.jpg\"\n---\n","yaml",[103,1964,1965,1971,1986,1999,2013],{"__ignoreMap":228},[295,1966,1967],{"class":297,"line":298},[295,1968,1970],{"class":1969},"sIaQ3","---\n",[295,1972,1973,1975,1977,1980,1983],{"class":297,"line":229},[295,1974,312],{"class":1804},[295,1976,215],{"class":1639},[295,1978,1979],{"class":1666}," \"",[295,1981,1982],{"class":1670},"My Amazing Post",[295,1984,1985],{"class":1666},"\"\n",[295,1987,1988,1990,1992,1994,1997],{"class":297,"line":234},[295,1989,1817],{"class":1804},[295,1991,215],{"class":1639},[295,1993,1979],{"class":1666},[295,1995,1996],{"class":1670},"A clear description of your post",[295,1998,1985],{"class":1666},[295,2000,2001,2004,2006,2008,2011],{"class":297,"line":1655},[295,2002,2003],{"class":1804},"cover",[295,2005,215],{"class":1639},[295,2007,1979],{"class":1666},[295,2009,2010],{"class":1670},"\u002Fimages\u002Fpost-cover.jpg",[295,2012,1985],{"class":1666},[295,2014,2015],{"class":297,"line":1695},[295,2016,1970],{"class":1969},[91,2018,2020],{"id":2019},"structured-data","Structured Data",[82,2022,2023],{},"Bloggrify adds JSON-LD data for blog posts:",[287,2025,2027],{"className":1792,"code":2026,"language":1794,"meta":228,"style":228},"\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@type\": \"BlogPosting\",\n  \"headline\": \"Your Post Title\",\n  \"datePublished\": \"2024-01-24\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Your Name\"\n  }\n}\n\u003C\u002Fscript>\n",[103,2028,2029,2050,2054,2059,2064,2069,2074,2079,2085,2091,2097],{"__ignoreMap":228},[295,2030,2031,2033,2036,2039,2041,2043,2046,2048],{"class":297,"line":298},[295,2032,1801],{"class":1639},[295,2034,2035],{"class":1804},"script",[295,2037,2038],{"class":1808}," type",[295,2040,460],{"class":1639},[295,2042,1814],{"class":1666},[295,2044,2045],{"class":1670},"application\u002Fld+json",[295,2047,1814],{"class":1666},[295,2049,1834],{"class":1639},[295,2051,2052],{"class":297,"line":229},[295,2053,1630],{"class":301},[295,2055,2056],{"class":297,"line":234},[295,2057,2058],{"class":301},"  \"@type\": \"BlogPosting\",\n",[295,2060,2061],{"class":297,"line":1655},[295,2062,2063],{"class":301},"  \"headline\": \"Your Post Title\",\n",[295,2065,2066],{"class":297,"line":1695},[295,2067,2068],{"class":301},"  \"datePublished\": \"2024-01-24\",\n",[295,2070,2071],{"class":297,"line":1704},[295,2072,2073],{"class":301},"  \"author\": {\n",[295,2075,2076],{"class":297,"line":1710},[295,2077,2078],{"class":301},"    \"@type\": \"Person\",\n",[295,2080,2082],{"class":297,"line":2081},8,[295,2083,2084],{"class":301},"    \"name\": \"Your Name\"\n",[295,2086,2088],{"class":297,"line":2087},9,[295,2089,2090],{"class":301},"  }\n",[295,2092,2094],{"class":297,"line":2093},10,[295,2095,2096],{"class":301},"}\n",[295,2098,2100,2103,2105],{"class":297,"line":2099},11,[295,2101,2102],{"class":1639},"\u003C\u002F",[295,2104,2035],{"class":1804},[295,2106,1834],{"class":1639},[91,2108,2110],{"id":2109},"technical-optimizations-your-sites-foundation","Technical Optimizations: Your Site's Foundation",[82,2112,2113],{},"SEO relies on many technical elements that are crucial for search engines but can be tedious to implement. Bloggrify automates all these essential aspects for you.",[82,2115,2116],{},"Your site automatically gets a sitemap.xml - think of it as a roadmap that search engines use to discover and index your content. The robots.txt file is also configured to guide crawlers to your important content and away from technical pages they don't need to see.",[82,2118,2119],{},"To avoid duplicate content issues that can harm your rankings, Bloggrify automatically generates canonical URLs. The URL structure is kept clean and consistent - no more incomprehensible URLs filled with parameters!",[82,2121,2122],{},"An RSS feed is also generated automatically. Not only does it allow readers to follow your blog, but it also helps search engines discover your new content quickly.",[82,2124,2125],{},"Here's an overview of these technical optimizations:",[96,2127,2128,2131,2134,2137,2140,2143],{},[99,2129,2130],{},"Automatic sitemap.xml generation",[99,2132,2133],{},"Robots.txt configuration",[99,2135,2136],{},"Canonical URLs",[99,2138,2139],{},"Clean URL structure",[99,2141,2142],{},"RSS feed generation",[99,2144,2145],{},"Optimized page titles",[82,2147,2148],{},"You don't need to worry about these technical aspects - you can focus on writing your content while Bloggrify handles your site's SEO foundation.",[86,2150,2152],{"id":2151},"best-practices-built-in","Best Practices Built-In 📝",[91,2154,2156],{"id":2155},"performance-built-on-modern-foundations","Performance: Built on Modern Foundations",[82,2158,2159],{},"Website performance is crucial for SEO, and Bloggrify leverages cutting-edge technologies to deliver exceptional speed. Built on Nuxt and Nuxt Content, it benefits from advanced performance optimizations:",[82,2161,2162,2165,2168],{},[335,2163,2164],{},"Static Site Generation (SSG)",[2166,2167],"br",{},"\nYour entire blog is pre-rendered at build time into static HTML. This means:",[96,2170,2171,2174,2177,2180],{},[99,2172,2173],{},"No server-side rendering delays",[99,2175,2176],{},"Fast page loads straight from a CDN",[99,2178,2179],{},"No database queries slowing things down",[99,2181,2182],{},"Strong Lighthouse scores out of the box",[82,2184,2185,2188],{},[335,2186,2187],{},"Nuxt Content's Architecture","\nUnder the hood, Nuxt Content provides several performance benefits:",[96,2190,2191,2194,2197,2200,2203],{},[99,2192,2193],{},"Built-in file-system caching",[99,2195,2196],{},"Automatic code splitting",[99,2198,2199],{},"Component lazy-loading",[99,2201,2202],{},"Efficient parsing through Nitro engine",[99,2204,2205],{},"Built-in search with no external dependencies",[82,2207,2208,2211],{},[335,2209,2210],{},"Image Optimization","\nImages are often the heaviest part of a blog. Bloggrify integrates with Nuxt Image, so when you opt in you get:",[96,2213,2214,2217,2220,2223],{},[99,2215,2216],{},"Modern formats such as WebP and AVIF",[99,2218,2219],{},"Responsive, viewport-aware image sizing",[99,2221,2222],{},"Lazy loading for offscreen images",[99,2224,2225],{},"A pipeline that plugs into your image CDN of choice",[82,2227,2228],{},[335,2229,2230],{},"Modern Performance Features:",[96,2232,2233,2236,2239,2242,2245],{},[99,2234,2235],{},"Route prefetching for instant navigation",[99,2237,2238],{},"Automatic chunk splitting",[99,2240,2241],{},"Tree-shaking of unused code",[99,2243,2244],{},"Asset optimization",[99,2246,2247],{},"Efficient resource hints",[82,2249,2250],{},"All of this happens automatically. You write your content, and Bloggrify ensures it's delivered to your readers in the most efficient way possible.",[91,2252,2254],{"id":2253},"internal-linking-the-backbone-of-seo","Internal Linking: The Backbone of SEO",[82,2256,2257],{},"While Bloggrify provides the technical foundation for great SEO, writing well-structured content remains in your hands.\nHowever, Bloggrify includes a powerful link validation system while keeping the writing experience simple:",[287,2259,2262],{"className":2260,"code":2261,"language":242,"meta":228,"style":228},"language-md shiki shiki-themes material-theme-lighter catppuccin-frappe github-dark","[Link to another post](\u002Fblog\u002Fanother-post)\n",[103,2263,2264],{"__ignoreMap":228},[295,2265,2266,2270,2274,2277,2279,2283],{"class":297,"line":298},[295,2267,2269],{"class":2268},"sz0Ad","[",[295,2271,2273],{"class":2272},"sndso","Link to another post",[295,2275,2276],{"class":2268},"]",[295,2278,728],{"class":1629},[295,2280,2282],{"class":2281},"sSGpH","\u002Fblog\u002Fanother-post",[295,2284,1716],{"class":1629},[82,2286,2287],{},"At build time, Bloggrify automatically verifies all internal links. If a link is broken:",[96,2289,2290,2293,2296,2299],{},[99,2291,2292],{},"The build process fails",[99,2294,2295],{},"You get clear error messages showing the broken links",[99,2297,2298],{},"The exact location of the issue is highlighted",[99,2300,2301],{},"No risk of deploying with dead links",[82,2303,2304],{},"This automatic validation ensures your internal linking structure remains solid, but remember that creating a meaningful linking strategy is still up to you:",[96,2306,2307,2310,2313],{},[99,2308,2309],{},"Choose relevant connections between posts",[99,2311,2312],{},"Place links naturally in your content",[99,2314,2315],{},"Write descriptive anchor text",[91,2317,2319],{"id":2318},"clean-urls-the-first-impression","Clean URLs: The First Impression",[82,2321,2322],{},"Bloggrify automatically creates clean URLs:",[287,2324,2329],{"className":2325,"code":2327,"language":2328},[2326],"language-text","✅ \u002Fblog\u002Fseo-friendly-urls\n❌ \u002Fblog\u002Fpost?id=123\n","text",[103,2330,2327],{"__ignoreMap":228},[86,2332,2334],{"id":2333},"monitoring-your-seo","Monitoring Your SEO",[82,2336,2337],{},"Bloggrify integrates with privacy-focused analytics to track:",[96,2339,2340,2343,2346],{},[99,2341,2342],{},"Search traffic",[99,2344,2345],{},"Popular pages",[99,2347,2348],{},"Rankings performance",[86,2350,2352],{"id":2351},"seo-checklist-for-each-post","SEO Checklist for Each Post",[82,2354,2355,2356,2358,2359,2361,2362,2364,2365,2367,2368,2370,2371,2373],{},"✅ Write a compelling title (50-60 characters)",[2166,2357],{},"\n✅ Add a clear meta description",[2166,2360],{},"\n✅ Include relevant images with alt text",[2166,2363],{},"\n✅ Use descriptive headings",[2166,2366],{},"\n✅ Add internal links to related content",[2166,2369],{},"\n✅ Include relevant tags",[2166,2372],{},"\n✅ Ensure content is readable and valuable",[86,2375,1494],{"id":1493},[82,2377,2378,2379,2381],{},"Remember: The best SEO strategy is to write valuable content for your readers. ",[2166,2380],{},"\nBloggrify handles the technical complexities so you can focus on what matters - creating great content.",[82,2383,2384,2385,2390],{},"Need more details? Check our ",[188,2386,2389],{"href":2387,"rel":2388},"https:\u002F\u002Fbloggrify.com\u002Freference\u002Fseo",[192],"SEO documentation"," or join our community discussions.",[381,2392,2393],{},"html pre.shiki code .s1BmC, html code.shiki .s1BmC{--shiki-light:#39ADB5;--shiki-default:#81C8BE;--shiki-dark:#E1E4E8}html pre.shiki code .sjqto, html code.shiki .sjqto{--shiki-light:#E53935;--shiki-default:#8CAAEE;--shiki-dark:#85E89D}html pre.shiki code .s3uge, html code.shiki .s3uge{--shiki-light:#9C3EDA;--shiki-default:#E5C890;--shiki-dark:#B392F0}html pre.shiki code .srOHQ, html code.shiki .srOHQ{--shiki-light:#39ADB5;--shiki-default:#A6D189;--shiki-dark:#9ECBFF}html pre.shiki code .sw2QF, html code.shiki .sw2QF{--shiki-light:#91B859;--shiki-default:#A6D189;--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 .sIaQ3, html code.shiki .sIaQ3{--shiki-light:#E2931D;--shiki-default:#F4B8E4;--shiki-dark:#B392F0}html pre.shiki code .s8bja, html code.shiki .s8bja{--shiki-light:#90A4AE;--shiki-default:#C6D0F5;--shiki-dark:#E1E4E8}html pre.shiki code .sz0Ad, html code.shiki .sz0Ad{--shiki-light:#39ADB5;--shiki-default:#BABBF1;--shiki-dark:#E1E4E8}html pre.shiki code .sndso, html code.shiki .sndso{--shiki-light:#91B859;--shiki-light-text-decoration:inherit;--shiki-default:#BABBF1;--shiki-default-text-decoration:inherit;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline}html pre.shiki code .sdvfp, html code.shiki .sdvfp{--shiki-light:#39ADB5;--shiki-default:#949CBB;--shiki-dark:#E1E4E8}html pre.shiki code .sSGpH, html code.shiki .sSGpH{--shiki-light:#E53935;--shiki-light-text-decoration:underline;--shiki-default:#8CAAEE;--shiki-default-text-decoration:inherit;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline}",{"title":228,"searchDepth":229,"depth":229,"links":2395},[2396,2397,2402,2407,2408,2409],{"id":1762,"depth":229,"text":1763},{"id":1784,"depth":229,"text":1785,"children":2398},[2399,2400,2401],{"id":1788,"depth":234,"text":1789},{"id":2019,"depth":234,"text":2020},{"id":2109,"depth":234,"text":2110},{"id":2151,"depth":229,"text":2152,"children":2403},[2404,2405,2406],{"id":2155,"depth":234,"text":2156},{"id":2253,"depth":234,"text":2254},{"id":2318,"depth":234,"text":2319},{"id":2333,"depth":229,"text":2334},{"id":2351,"depth":229,"text":2352},{"id":1493,"depth":229,"text":1494},"Discover how Bloggrify automatically optimizes your blog for search engines and learn best practices to improve your content visibility",{},"3",{"text":1744,"minutes":2414,"time":2415,"words":2416},3.68,220800,736,{"title":70,"description":2410},{"loc":71},[72],"Jrj5Hv13Q19s2Z0RGM4Md5NYQwYZ3eCja8aETEXftdY",1784539639484]