<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docs on Popular</title><link>https://popular.mariatta.ca/docs/</link><description>Recent content in Docs on Popular</description><generator>Hugo</generator><language>en</language><atom:link href="https://popular.mariatta.ca/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Quick start</title><link>https://popular.mariatta.ca/docs/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/quick-start/</guid><description>&lt;div class="g-fwswitch" role="tablist" aria-label="Framework"&gt;
 &lt;button data-fw="hugo" role="tab"&gt;&lt;i class="fa-solid fa-h" aria-hidden="true"&gt;&lt;/i&gt; Hugo&lt;/button&gt;
 &lt;button data-fw="astro" role="tab"&gt;&lt;i class="fa-solid fa-rocket" aria-hidden="true"&gt;&lt;/i&gt; Astro&lt;/button&gt;
&lt;/div&gt;
&lt;style&gt;
 .g-fwswitch { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-tertiary);
 border: var(--border-width) solid var(--border-subtle); border-radius: var(--radius-pill); margin: 0.4rem 0 1rem; }
 .g-fwswitch button { font-family: var(--font-sans); font-size: var(--text-sm); font-weight: var(--weight-semibold);
 border: none; background: transparent; color: var(--text-muted); padding: 0.45rem 1.1rem;
 border-radius: var(--radius-pill); cursor: pointer; display: inline-flex; gap: 0.45em; align-items: center; }
 .g-fwswitch button.is-active { background: var(--color-primary); color: var(--text-on-brand); }
 .fw-block { display: none; }
 .fw-block.is-active { display: block; }
&lt;/style&gt;
&lt;script&gt;
 (function () {
 if (window.__popularFw) return; window.__popularFw = true;
 function apply(fw) {
 try { localStorage.setItem("popular-fw", fw); } catch (e) {}
 document.querySelectorAll(".g-fwswitch button").forEach(function (b) {
 b.classList.toggle("is-active", b.getAttribute("data-fw") === fw);
 b.setAttribute("aria-selected", b.getAttribute("data-fw") === fw ? "true" : "false");
 });
 document.querySelectorAll(".fw-block").forEach(function (el) {
 el.classList.toggle("is-active", el.getAttribute("data-fw") === fw);
 });
 }
 document.addEventListener("click", function (e) {
 var b = e.target.closest(".g-fwswitch button");
 if (b) apply(b.getAttribute("data-fw"));
 });
 document.addEventListener("DOMContentLoaded", function () {
 var fw = new URLSearchParams(location.search).get("fw");
 try { fw = fw || localStorage.getItem("popular-fw"); } catch (e) {}
 apply(fw === "astro" ? "astro" : "hugo");
 });
 })();
&lt;/script&gt;

&lt;h2 id="1--get-the-theme"&gt;1 · Get the theme&lt;/h2&gt;
&lt;div class="fw-block" data-fw="hugo"&gt;
&lt;p&gt;Add the theme to your Hugo site as a git submodule (or copy the folder into &lt;code&gt;themes/popular&lt;/code&gt;; Hugo Modules users can instead import &lt;code&gt;github.com/Mariatta/hugo-theme-popular&lt;/code&gt;, see the README):&lt;/p&gt;</description></item><item><title>Configuration reference</title><link>https://popular.mariatta.ca/docs/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/configuration/</guid><description>&lt;div class="g-fwswitch" role="tablist" aria-label="Framework"&gt;
 &lt;button data-fw="hugo" role="tab"&gt;&lt;i class="fa-solid fa-h" aria-hidden="true"&gt;&lt;/i&gt; Hugo&lt;/button&gt;
 &lt;button data-fw="astro" role="tab"&gt;&lt;i class="fa-solid fa-rocket" aria-hidden="true"&gt;&lt;/i&gt; Astro&lt;/button&gt;
&lt;/div&gt;
&lt;style&gt;
 .g-fwswitch { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-tertiary);
 border: var(--border-width) solid var(--border-subtle); border-radius: var(--radius-pill); margin: 0.4rem 0 1rem; }
 .g-fwswitch button { font-family: var(--font-sans); font-size: var(--text-sm); font-weight: var(--weight-semibold);
 border: none; background: transparent; color: var(--text-muted); padding: 0.45rem 1.1rem;
 border-radius: var(--radius-pill); cursor: pointer; display: inline-flex; gap: 0.45em; align-items: center; }
 .g-fwswitch button.is-active { background: var(--color-primary); color: var(--text-on-brand); }
 .fw-block { display: none; }
 .fw-block.is-active { display: block; }
&lt;/style&gt;
&lt;script&gt;
 (function () {
 if (window.__popularFw) return; window.__popularFw = true;
 function apply(fw) {
 try { localStorage.setItem("popular-fw", fw); } catch (e) {}
 document.querySelectorAll(".g-fwswitch button").forEach(function (b) {
 b.classList.toggle("is-active", b.getAttribute("data-fw") === fw);
 b.setAttribute("aria-selected", b.getAttribute("data-fw") === fw ? "true" : "false");
 });
 document.querySelectorAll(".fw-block").forEach(function (el) {
 el.classList.toggle("is-active", el.getAttribute("data-fw") === fw);
 });
 }
 document.addEventListener("click", function (e) {
 var b = e.target.closest(".g-fwswitch button");
 if (b) apply(b.getAttribute("data-fw"));
 });
 document.addEventListener("DOMContentLoaded", function () {
 var fw = new URLSearchParams(location.search).get("fw");
 try { fw = fw || localStorage.getItem("popular-fw"); } catch (e) {}
 apply(fw === "astro" ? "astro" : "hugo");
 });
 })();
&lt;/script&gt;

&lt;h2 id="site-identity"&gt;Site identity&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;title&lt;/code&gt;, &lt;code&gt;tagline&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;brandName&lt;/code&gt; + &lt;code&gt;brandSub&lt;/code&gt; (the two-line wordmark in the header), &lt;code&gt;logo&lt;/code&gt;, &lt;code&gt;ogImage&lt;/code&gt;, and &lt;code&gt;landAcknowledgement&lt;/code&gt; (footer slot, leave empty to hide).&lt;/p&gt;</description></item><item><title>Content model</title><link>https://popular.mariatta.ca/docs/content-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/content-model/</guid><description>&lt;div class="g-fwswitch" role="tablist" aria-label="Framework"&gt;
 &lt;button data-fw="hugo" role="tab"&gt;&lt;i class="fa-solid fa-h" aria-hidden="true"&gt;&lt;/i&gt; Hugo&lt;/button&gt;
 &lt;button data-fw="astro" role="tab"&gt;&lt;i class="fa-solid fa-rocket" aria-hidden="true"&gt;&lt;/i&gt; Astro&lt;/button&gt;
&lt;/div&gt;
&lt;style&gt;
 .g-fwswitch { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-tertiary);
 border: var(--border-width) solid var(--border-subtle); border-radius: var(--radius-pill); margin: 0.4rem 0 1rem; }
 .g-fwswitch button { font-family: var(--font-sans); font-size: var(--text-sm); font-weight: var(--weight-semibold);
 border: none; background: transparent; color: var(--text-muted); padding: 0.45rem 1.1rem;
 border-radius: var(--radius-pill); cursor: pointer; display: inline-flex; gap: 0.45em; align-items: center; }
 .g-fwswitch button.is-active { background: var(--color-primary); color: var(--text-on-brand); }
 .fw-block { display: none; }
 .fw-block.is-active { display: block; }
&lt;/style&gt;
&lt;script&gt;
 (function () {
 if (window.__popularFw) return; window.__popularFw = true;
 function apply(fw) {
 try { localStorage.setItem("popular-fw", fw); } catch (e) {}
 document.querySelectorAll(".g-fwswitch button").forEach(function (b) {
 b.classList.toggle("is-active", b.getAttribute("data-fw") === fw);
 b.setAttribute("aria-selected", b.getAttribute("data-fw") === fw ? "true" : "false");
 });
 document.querySelectorAll(".fw-block").forEach(function (el) {
 el.classList.toggle("is-active", el.getAttribute("data-fw") === fw);
 });
 }
 document.addEventListener("click", function (e) {
 var b = e.target.closest(".g-fwswitch button");
 if (b) apply(b.getAttribute("data-fw"));
 });
 document.addEventListener("DOMContentLoaded", function () {
 var fw = new URLSearchParams(location.search).get("fw");
 try { fw = fw || localStorage.getItem("popular-fw"); } catch (e) {}
 apply(fw === "astro" ? "astro" : "hugo");
 });
 })();
&lt;/script&gt;

&lt;h2 id="blog-posts"&gt;Blog posts&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;title&lt;/code&gt;, &lt;code&gt;date&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;image&lt;/code&gt;, &lt;code&gt;tags[]&lt;/code&gt;, plus authorship (see below) and an optional &lt;code&gt;speaker&lt;/code&gt; block (name, title, photo, bio) for recap posts.&lt;/p&gt;</description></item><item><title>Theming</title><link>https://popular.mariatta.ca/docs/theming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/theming/</guid><description>&lt;div class="g-fwswitch" role="tablist" aria-label="Framework"&gt;
 &lt;button data-fw="hugo" role="tab"&gt;&lt;i class="fa-solid fa-h" aria-hidden="true"&gt;&lt;/i&gt; Hugo&lt;/button&gt;
 &lt;button data-fw="astro" role="tab"&gt;&lt;i class="fa-solid fa-rocket" aria-hidden="true"&gt;&lt;/i&gt; Astro&lt;/button&gt;
&lt;/div&gt;
&lt;style&gt;
 .g-fwswitch { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-tertiary);
 border: var(--border-width) solid var(--border-subtle); border-radius: var(--radius-pill); margin: 0.4rem 0 1rem; }
 .g-fwswitch button { font-family: var(--font-sans); font-size: var(--text-sm); font-weight: var(--weight-semibold);
 border: none; background: transparent; color: var(--text-muted); padding: 0.45rem 1.1rem;
 border-radius: var(--radius-pill); cursor: pointer; display: inline-flex; gap: 0.45em; align-items: center; }
 .g-fwswitch button.is-active { background: var(--color-primary); color: var(--text-on-brand); }
 .fw-block { display: none; }
 .fw-block.is-active { display: block; }
&lt;/style&gt;
&lt;script&gt;
 (function () {
 if (window.__popularFw) return; window.__popularFw = true;
 function apply(fw) {
 try { localStorage.setItem("popular-fw", fw); } catch (e) {}
 document.querySelectorAll(".g-fwswitch button").forEach(function (b) {
 b.classList.toggle("is-active", b.getAttribute("data-fw") === fw);
 b.setAttribute("aria-selected", b.getAttribute("data-fw") === fw ? "true" : "false");
 });
 document.querySelectorAll(".fw-block").forEach(function (el) {
 el.classList.toggle("is-active", el.getAttribute("data-fw") === fw);
 });
 }
 document.addEventListener("click", function (e) {
 var b = e.target.closest(".g-fwswitch button");
 if (b) apply(b.getAttribute("data-fw"));
 });
 document.addEventListener("DOMContentLoaded", function () {
 var fw = new URLSearchParams(location.search).get("fw");
 try { fw = fw || localStorage.getItem("popular-fw"); } catch (e) {}
 apply(fw === "astro" ? "astro" : "hugo");
 });
 })();
&lt;/script&gt;

&lt;h2 id="the-one-block-re-brand"&gt;The one-block re-brand&lt;/h2&gt;
&lt;p&gt;Every colour, font and radius in the theme resolves through CSS custom properties (design tokens). The &lt;code&gt;brand&lt;/code&gt; config block overrides the important ones at render time:&lt;/p&gt;</description></item><item><title>Components &amp; shortcodes</title><link>https://popular.mariatta.ca/docs/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/components/</guid><description>&lt;div class="g-fwswitch" role="tablist" aria-label="Framework"&gt;
 &lt;button data-fw="hugo" role="tab"&gt;&lt;i class="fa-solid fa-h" aria-hidden="true"&gt;&lt;/i&gt; Hugo&lt;/button&gt;
 &lt;button data-fw="astro" role="tab"&gt;&lt;i class="fa-solid fa-rocket" aria-hidden="true"&gt;&lt;/i&gt; Astro&lt;/button&gt;
&lt;/div&gt;
&lt;style&gt;
 .g-fwswitch { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-tertiary);
 border: var(--border-width) solid var(--border-subtle); border-radius: var(--radius-pill); margin: 0.4rem 0 1rem; }
 .g-fwswitch button { font-family: var(--font-sans); font-size: var(--text-sm); font-weight: var(--weight-semibold);
 border: none; background: transparent; color: var(--text-muted); padding: 0.45rem 1.1rem;
 border-radius: var(--radius-pill); cursor: pointer; display: inline-flex; gap: 0.45em; align-items: center; }
 .g-fwswitch button.is-active { background: var(--color-primary); color: var(--text-on-brand); }
 .fw-block { display: none; }
 .fw-block.is-active { display: block; }
&lt;/style&gt;
&lt;script&gt;
 (function () {
 if (window.__popularFw) return; window.__popularFw = true;
 function apply(fw) {
 try { localStorage.setItem("popular-fw", fw); } catch (e) {}
 document.querySelectorAll(".g-fwswitch button").forEach(function (b) {
 b.classList.toggle("is-active", b.getAttribute("data-fw") === fw);
 b.setAttribute("aria-selected", b.getAttribute("data-fw") === fw ? "true" : "false");
 });
 document.querySelectorAll(".fw-block").forEach(function (el) {
 el.classList.toggle("is-active", el.getAttribute("data-fw") === fw);
 });
 }
 document.addEventListener("click", function (e) {
 var b = e.target.closest(".g-fwswitch button");
 if (b) apply(b.getAttribute("data-fw"));
 });
 document.addEventListener("DOMContentLoaded", function () {
 var fw = new URLSearchParams(location.search).get("fw");
 try { fw = fw || localStorage.getItem("popular-fw"); } catch (e) {}
 apply(fw === "astro" ? "astro" : "hugo");
 });
 })();
&lt;/script&gt;

&lt;h2 id="callout"&gt;Callout&lt;/h2&gt;
&lt;p&gt;Info, tip and warning boxes with an optional title.&lt;/p&gt;</description></item><item><title>Importing content</title><link>https://popular.mariatta.ca/docs/importing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/importing/</guid><description>&lt;div class="g-fwswitch" role="tablist" aria-label="Framework"&gt;
 &lt;button data-fw="hugo" role="tab"&gt;&lt;i class="fa-solid fa-h" aria-hidden="true"&gt;&lt;/i&gt; Hugo&lt;/button&gt;
 &lt;button data-fw="astro" role="tab"&gt;&lt;i class="fa-solid fa-rocket" aria-hidden="true"&gt;&lt;/i&gt; Astro&lt;/button&gt;
&lt;/div&gt;
&lt;style&gt;
 .g-fwswitch { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-tertiary);
 border: var(--border-width) solid var(--border-subtle); border-radius: var(--radius-pill); margin: 0.4rem 0 1rem; }
 .g-fwswitch button { font-family: var(--font-sans); font-size: var(--text-sm); font-weight: var(--weight-semibold);
 border: none; background: transparent; color: var(--text-muted); padding: 0.45rem 1.1rem;
 border-radius: var(--radius-pill); cursor: pointer; display: inline-flex; gap: 0.45em; align-items: center; }
 .g-fwswitch button.is-active { background: var(--color-primary); color: var(--text-on-brand); }
 .fw-block { display: none; }
 .fw-block.is-active { display: block; }
&lt;/style&gt;
&lt;script&gt;
 (function () {
 if (window.__popularFw) return; window.__popularFw = true;
 function apply(fw) {
 try { localStorage.setItem("popular-fw", fw); } catch (e) {}
 document.querySelectorAll(".g-fwswitch button").forEach(function (b) {
 b.classList.toggle("is-active", b.getAttribute("data-fw") === fw);
 b.setAttribute("aria-selected", b.getAttribute("data-fw") === fw ? "true" : "false");
 });
 document.querySelectorAll(".fw-block").forEach(function (el) {
 el.classList.toggle("is-active", el.getAttribute("data-fw") === fw);
 });
 }
 document.addEventListener("click", function (e) {
 var b = e.target.closest(".g-fwswitch button");
 if (b) apply(b.getAttribute("data-fw"));
 });
 document.addEventListener("DOMContentLoaded", function () {
 var fw = new URLSearchParams(location.search).get("fw");
 try { fw = fw || localStorage.getItem("popular-fw"); } catch (e) {}
 apply(fw === "astro" ? "astro" : "hugo");
 });
 })();
&lt;/script&gt;

&lt;p&gt;Both importers ship in both repos (&lt;code&gt;scripts/&lt;/code&gt; directory), work for either framework (the output format is auto-detected from your site), and follow the same safety rules:&lt;/p&gt;</description></item><item><title>Updating the theme</title><link>https://popular.mariatta.ca/docs/updating/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/updating/</guid><description>&lt;h2 id="hearing-about-releases"&gt;Hearing about releases&lt;/h2&gt;
&lt;p&gt;Popular is released with semver tags (&lt;code&gt;v0.2.0&lt;/code&gt;), in lockstep across the Hugo
and Astro repos: one version number covers both. Three ways to hear about a
new one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Watch the repo&lt;/strong&gt;: on GitHub, Watch → Custom → Releases. You get a
notification per release, nothing else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RSS&lt;/strong&gt;: subscribe to the &lt;a href="https://github.com/Mariatta/hugo-theme-popular/releases.atom"&gt;releases feed&lt;/a&gt;
in any feed reader.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The changelog&lt;/strong&gt;: &lt;a href="https://github.com/Mariatta/hugo-theme-popular/blob/main/CHANGELOG.md"&gt;CHANGELOG.md&lt;/a&gt;
ships in both repos and is the same file in each.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="before-you-update"&gt;Before you update&lt;/h2&gt;
&lt;p&gt;Read the release notes (or the changelog section, same text). During 0.x, a
minor version may contain breaking changes; when one does, the entry says so
and tells you what to change. The 1.0 release will mark the content model and
brand keys stable.&lt;/p&gt;</description></item><item><title>Demos &amp; deployment</title><link>https://popular.mariatta.ca/docs/demos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/demos/</guid><description>&lt;div class="g-fwswitch" role="tablist" aria-label="Framework"&gt;
 &lt;button data-fw="hugo" role="tab"&gt;&lt;i class="fa-solid fa-h" aria-hidden="true"&gt;&lt;/i&gt; Hugo&lt;/button&gt;
 &lt;button data-fw="astro" role="tab"&gt;&lt;i class="fa-solid fa-rocket" aria-hidden="true"&gt;&lt;/i&gt; Astro&lt;/button&gt;
&lt;/div&gt;
&lt;style&gt;
 .g-fwswitch { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-tertiary);
 border: var(--border-width) solid var(--border-subtle); border-radius: var(--radius-pill); margin: 0.4rem 0 1rem; }
 .g-fwswitch button { font-family: var(--font-sans); font-size: var(--text-sm); font-weight: var(--weight-semibold);
 border: none; background: transparent; color: var(--text-muted); padding: 0.45rem 1.1rem;
 border-radius: var(--radius-pill); cursor: pointer; display: inline-flex; gap: 0.45em; align-items: center; }
 .g-fwswitch button.is-active { background: var(--color-primary); color: var(--text-on-brand); }
 .fw-block { display: none; }
 .fw-block.is-active { display: block; }
&lt;/style&gt;
&lt;script&gt;
 (function () {
 if (window.__popularFw) return; window.__popularFw = true;
 function apply(fw) {
 try { localStorage.setItem("popular-fw", fw); } catch (e) {}
 document.querySelectorAll(".g-fwswitch button").forEach(function (b) {
 b.classList.toggle("is-active", b.getAttribute("data-fw") === fw);
 b.setAttribute("aria-selected", b.getAttribute("data-fw") === fw ? "true" : "false");
 });
 document.querySelectorAll(".fw-block").forEach(function (el) {
 el.classList.toggle("is-active", el.getAttribute("data-fw") === fw);
 });
 }
 document.addEventListener("click", function (e) {
 var b = e.target.closest(".g-fwswitch button");
 if (b) apply(b.getAttribute("data-fw"));
 });
 document.addEventListener("DOMContentLoaded", function () {
 var fw = new URLSearchParams(location.search).get("fw");
 try { fw = fw || localStorage.getItem("popular-fw"); } catch (e) {}
 apply(fw === "astro" ? "astro" : "hugo");
 });
 })();
&lt;/script&gt;

&lt;h2 id="the-four-demos"&gt;The four demos&lt;/h2&gt;
&lt;p&gt;All four are complete example sites, every page, guides, blog and events. They exist to prove one claim: &lt;strong&gt;the entire visual difference between them is one config block.&lt;/strong&gt; None is more &amp;ldquo;official&amp;rdquo; than the others.&lt;/p&gt;</description></item><item><title>Migrating images from another theme</title><link>https://popular.mariatta.ca/docs/migrating-images/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/migrating-images/</guid><description>&lt;h2 id="the-short-version"&gt;The short version&lt;/h2&gt;
&lt;p&gt;Popular references images at site-relative paths like &lt;code&gt;/images/hero.png&lt;/code&gt;, and
Hugo serves anything in your &lt;code&gt;static/&lt;/code&gt; directory at the site root. So the
simplest migration is: &lt;strong&gt;put your images in &lt;code&gt;static/images/&lt;/code&gt;&lt;/strong&gt; and reference
them as &lt;code&gt;/images/...&lt;/code&gt;. Nothing else to configure.&lt;/p&gt;
&lt;p&gt;If your old theme kept images somewhere else (an assets pipeline, a
&lt;code&gt;page bundle&lt;/code&gt;, an &lt;code&gt;img/&lt;/code&gt; folder) and you&amp;rsquo;d rather not move them, you can
&lt;em&gt;mount&lt;/em&gt; that directory to &lt;code&gt;/images/&lt;/code&gt; instead.&lt;/p&gt;</description></item><item><title>SEO &amp; structured data</title><link>https://popular.mariatta.ca/docs/seo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/seo/</guid><description>&lt;h2 id="whats-automatic"&gt;What&amp;rsquo;s automatic&lt;/h2&gt;
&lt;p&gt;Every page gets a description, canonical URL, full Open Graph and Twitter card
tags, &lt;code&gt;og:locale&lt;/code&gt;, and a &lt;code&gt;robots.txt&lt;/code&gt; advertising your sitemap. You don&amp;rsquo;t
configure any of it.&lt;/p&gt;
&lt;p&gt;The site also emits &lt;strong&gt;&lt;code&gt;/llms.txt&lt;/code&gt;&lt;/strong&gt;, a short plain-text summary for AI agents:
what the community is, the next upcoming event (regenerated every build so it
stays true), how to join, and links to the key pages and the calendar feed. On
Astro it is always generated; on Hugo add &lt;code&gt;LLMS&lt;/code&gt; to the home page&amp;rsquo;s outputs
(the demos and starter already do).&lt;/p&gt;</description></item><item><title>FAQ sections</title><link>https://popular.mariatta.ca/docs/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/faq/</guid><description>&lt;h2 id="why"&gt;Why&lt;/h2&gt;
&lt;p&gt;First-timers have the same handful of questions: do I need experience, is it
free, how do I find the room. Answer them where people land. The FAQ block
also gives AI answer engines (ChatGPT, Perplexity, AI Overviews) clean
question → answer text to quote.&lt;/p&gt;
&lt;p&gt;Note: classic FAQ &lt;strong&gt;rich results&lt;/strong&gt; are not a goal. Google restricts them to
government and health sites, so don&amp;rsquo;t expect snippets. The value is on-page
clarity and AI-friendliness.&lt;/p&gt;</description></item><item><title>Beyond meetups</title><link>https://popular.mariatta.ca/docs/beyond-meetups/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://popular.mariatta.ca/docs/beyond-meetups/</guid><description>&lt;h2 id="the-theme-is-a-shape-not-a-topic"&gt;The theme is a shape, not a topic&lt;/h2&gt;
&lt;p&gt;Everything in the theme maps to a general community pattern:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Events&lt;/strong&gt; are anything scheduled: talks, watch parties, shifts, recording
sessions, class meetings, gigs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The blog&lt;/strong&gt; is anything published on a cadence: recaps, news, release
notes, episode notes, season announcements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organizers&lt;/strong&gt; are the people behind it: hosts, teachers, crew, captains.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The docs area&lt;/strong&gt; is the group&amp;rsquo;s operating knowledge: a handbook, runbooks,
a code of conduct, house rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your group has &amp;ldquo;things that happen&amp;rdquo;, &amp;ldquo;things you write down&amp;rdquo;, and &amp;ldquo;people
who run it&amp;rdquo;, the theme fits, whatever you call yourselves. The section names
themselves are &lt;a href="https://popular.mariatta.ca/docs/configuration/#renaming-content-sections"&gt;renameable&lt;/a&gt;
(hosts instead of organizers, and so on), so the vocabulary matches your group.&lt;/p&gt;</description></item></channel></rss>