feat(07-01): wire global schema.org Person + WebSite and sitemap sources

- nuxt.config.ts: register 'nuxt-schema-org' module + sitemap.sources=['/api/__sitemap__/urls']
- app/utils/seo-person.ts: KILLIAN_PERSON_ID + killianPerson (derived from siteConfig, email excluded)
- app/app.vue: useSchemaOrg([definePerson(killianPerson), defineWebSite({name, inLanguage})]) appended (D-12)
- Verified SSR: /fr emits JSON-LD Person @id=#killian + WebSite (curl, pas d'hydratation)
This commit is contained in:
2026-04-22 11:13:51 +02:00
parent 17420afefe
commit 654842ba44
3 changed files with 32 additions and 0 deletions
+10
View File
@@ -1,4 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { killianPerson } from '~/utils/seo-person'
const { locale } = useI18n() const { locale } = useI18n()
const head = useLocaleHead({ seo: true }) const head = useLocaleHead({ seo: true })
@@ -7,6 +9,14 @@ useHead({
link: computed(() => head.value.link || []), link: computed(() => head.value.link || []),
meta: computed(() => head.value.meta || []), meta: computed(() => head.value.meta || []),
}) })
useSchemaOrg([
definePerson(killianPerson),
defineWebSite({
name: "Killian' Dal-Cin — Hytale Plugin Developer",
inLanguage: ['fr-FR', 'en-US'],
}),
])
</script> </script>
<template> <template>
+18
View File
@@ -0,0 +1,18 @@
/**
* Global Person identity for schema.org (Killian Dal-Cin).
* Consumed by: app/app.vue (definePerson global) and app/pages/blog/[slug].vue (author/publisher @id ref).
* Derives URLs from siteConfig — single source of truth.
*/
import { siteConfig } from '~/data/site'
export const KILLIAN_PERSON_ID = '#killian'
export const killianPerson = {
'@id': KILLIAN_PERSON_ID,
name: "Killian' Dal-Cin",
url: siteConfig.url,
jobTitle: siteConfig.jobTitle,
sameAs: siteConfig.social
.filter((s) => s.name !== 'Email')
.map((s) => s.url),
} as const
+4
View File
@@ -9,6 +9,7 @@ export default defineNuxtConfig({
'@nuxt/eslint', '@nuxt/eslint',
'@nuxtjs/i18n', '@nuxtjs/i18n',
'@nuxtjs/sitemap', '@nuxtjs/sitemap',
'nuxt-schema-org',
'nuxt-gtag', 'nuxt-gtag',
], ],
components: [ components: [
@@ -31,6 +32,9 @@ export default defineNuxtConfig({
url: 'https://killiandalcin.fr', url: 'https://killiandalcin.fr',
name: "Killian' DAL-CIN - Developpeur Full Stack", name: "Killian' DAL-CIN - Developpeur Full Stack",
}, },
sitemap: {
sources: ['/api/__sitemap__/urls'],
},
i18n: { i18n: {
strategy: 'prefix', strategy: 'prefix',
defaultLocale: 'fr', defaultLocale: 'fr',