diff --git a/_data/site.js b/_data/site.js index 0f4b389..56b3522 100644 --- a/_data/site.js +++ b/_data/site.js @@ -10,10 +10,22 @@ function parseSocialLinks(envVar) { if (!envVar) return []; return envVar.split(",").map((link) => { const [name, url, icon] = link.split("|").map((s) => s.trim()); - return { name, url, rel: "me", icon: icon || name.toLowerCase() }; + // Bluesky requires "me atproto" for verification + const rel = url.includes("bsky.app") ? "me atproto" : "me"; + return { name, url, rel, icon: icon || name.toLowerCase() }; }); } +// Get Mastodon handle for fediverse:creator meta tag +function getMastodonHandle() { + const instance = process.env.MASTODON_INSTANCE?.replace("https://", "") || ""; + const user = process.env.MASTODON_USER || ""; + if (instance && user) { + return `@${user}@${instance}`; + } + return ""; +} + // Default social links if none configured const defaultSocial = [ { @@ -63,4 +75,7 @@ export default { webmentions: { domain: process.env.SITE_URL?.replace("https://", "").replace("http://", "") || "example.com", }, + + // Fediverse creator for meta tag (e.g., @rmdes@mstdn.social) + fediverseCreator: getMastodonHandle(), }; diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index d69d58a..a1c4a0d 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -68,9 +68,15 @@ + {# Fediverse creator meta tag for Mastodon verification #} + {% if site.fediverseCreator %} + + {% endif %} + {# IndieAuth rel="me" links for identity verification #} + {# Note: Bluesky links use "me atproto" for verification #} {% for social in site.social %} - + {% endfor %}