diff --git a/app/app.vue b/app/app.vue
index 15827d6..61ed4b8 100644
--- a/app/app.vue
+++ b/app/app.vue
@@ -1,4 +1,6 @@
diff --git a/app/utils/seo-person.ts b/app/utils/seo-person.ts
new file mode 100644
index 0000000..df55ff5
--- /dev/null
+++ b/app/utils/seo-person.ts
@@ -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
diff --git a/nuxt.config.ts b/nuxt.config.ts
index aa80a2a..cab589d 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -9,6 +9,7 @@ export default defineNuxtConfig({
'@nuxt/eslint',
'@nuxtjs/i18n',
'@nuxtjs/sitemap',
+ 'nuxt-schema-org',
'nuxt-gtag',
],
components: [
@@ -31,6 +32,9 @@ export default defineNuxtConfig({
url: 'https://killiandalcin.fr',
name: "Killian' DAL-CIN - Developpeur Full Stack",
},
+ sitemap: {
+ sources: ['/api/__sitemap__/urls'],
+ },
i18n: {
strategy: 'prefix',
defaultLocale: 'fr',