fix: améliorer la gestion des métadonnées SEO dans plusieurs fichiers de page

This commit is contained in:
2026-01-02 20:27:08 +01:00
parent fb25eddaf0
commit ca5cf60c4a
5 changed files with 70 additions and 13 deletions

View File

@@ -3,13 +3,26 @@ const { data: page } = await useAsyncData('hobbies', () => {
return queryCollection('hobbies').first() return queryCollection('hobbies').first()
}) })
useSeoMeta({ const head = {
title: 'Balance & Perspectives', title: 'Balance & Perspectives',
description: 'Beyond the code. Exploring how competitive sports, motorsports strategy, and cultural experiences fuel my research resilience and cognitive flexibility.', description: 'Beyond the code. Exploring how competitive sports, motorsports strategy, and cultural experiences fuel my research resilience and cognitive flexibility.',
ogTitle: 'Balance & Perspectives • Arthur Danjou', subtitle: ''
ogDescription: 'Beyond the code. Exploring how competitive sports, motorsports strategy, and cultural experiences fuel my research resilience and cognitive flexibility.', }
useSeoMeta({
title: head.title,
description: head.description,
ogTitle: `${head.title} • Arthur Danjou`,
ogDescription: head.description,
twitterCard: 'summary_large_image' twitterCard: 'summary_large_image'
}) })
defineOgImageComponent('NuxtSeo', {
title: head.title,
description: head.description,
subtitle: head.subtitle,
theme: '#F43F5E'
})
</script> </script>
<template> <template>

View File

@@ -1,12 +1,25 @@
<script lang="ts" setup> <script lang="ts" setup>
useSeoMeta({ const head = {
title: 'AI Safety & Applied Mathematics', title: 'AI Safety & Applied Mathematics',
description: 'Research Engineer & Master 2 Student at Paris-Dauphine (ISF). Focusing on AI Alignment, Robustness, and Safe Deep Learning.', description: 'Research Engineer & Master 2 Student at Paris-Dauphine (ISF). Focusing on AI Alignment, Robustness, and Safe Deep Learning.',
ogTitle: 'Arthur Danjou • AI Safety & Applied Mathematics', subtitle: ''
ogDescription: 'Research Engineer & Master 2 Student at Paris-Dauphine (ISF). Focusing on AI Alignment, Robustness, and Safe Deep Learning.', }
useSeoMeta({
title: head.title,
description: head.description,
ogTitle: `Arthur Danjou • ${head.title}`,
ogDescription: head.description,
twitterCard: 'summary_large_image' twitterCard: 'summary_large_image'
}) })
defineOgImageComponent('NuxtSeo', {
title: head.title,
description: head.description,
subtitle: head.subtitle,
theme: '#F43F5E'
})
const { data: page } = await useAsyncData('index', () => { const { data: page } = await useAsyncData('index', () => {
return queryCollection('index').first() return queryCollection('index').first()
}) })

View File

@@ -29,6 +29,13 @@ useSeoMeta({
twitterCard: 'summary_large_image' twitterCard: 'summary_large_image'
}) })
defineOgImageComponent('NuxtSeo', {
title: project.value.title,
description: project.value.description,
subtitle: project.value.type ? `Project Type: ${project.value.type}` : '',
theme: '#F43F5E'
})
const { statusColors, typeColors } = useProjectColors() const { statusColors, typeColors } = useProjectColors()
const formattedDate = computed(() => { const formattedDate = computed(() => {

View File

@@ -7,14 +7,25 @@ const { data: projects } = await useAsyncData('projects', () => {
.all() .all()
}) })
useSeoMeta({ const head = {
title: 'Engineering & Research Labs', title: 'Engineering & Research Labs',
description: 'Bridging the gap between theoretical models and production systems. Explore my experimental labs, open-source contributions, and engineering work.', description: 'Bridging the gap between theoretical models and production systems. Explore my experimental labs, open-source contributions, and engineering work.'
ogTitle: 'Engineering & Research Labs • Arthur Danjou', }
ogDescription: 'Bridging the gap between theoretical models and production systems. Explore my experimental labs, open-source contributions, and engineering work.',
useSeoMeta({
title: head.title,
description: head.description,
ogTitle: `${head.title} • Arthur Danjou`,
ogDescription: head.description,
twitterCard: 'summary_large_image' twitterCard: 'summary_large_image'
}) })
defineOgImageComponent('NuxtSeo', {
title: head.title,
description: head.description,
theme: '#F43F5E'
})
const { statusColors, typeColors } = useProjectColors() const { statusColors, typeColors } = useProjectColors()
const selectedType = ref<string | null>(null) const selectedType = ref<string | null>(null)

View File

@@ -3,13 +3,26 @@ const { data: page } = await useAsyncData('uses', () => {
return queryCollection('uses').first() return queryCollection('uses').first()
}) })
useSeoMeta({ const head = {
title: 'Research Lab & Technical Setup', title: 'Research Lab & Technical Setup',
description: 'A curated list of the hardware, software, and self-hosted infrastructure that powers my mathematical modeling and AI research workflows.', description: 'A curated list of the hardware, software, and self-hosted infrastructure that powers my mathematical modeling and AI research workflows.',
ogTitle: 'Research Lab & Technical Setup • Arthur Danjou', subtitle: 'The gear powering my research & development workflow.'
ogDescription: 'A curated list of the hardware, software, and self-hosted infrastructure that powers my mathematical modeling and AI research workflows.', }
useSeoMeta({
title: head.title,
description: head.description,
ogTitle: `${head.title} • Arthur Danjou`,
ogDescription: head.description,
twitterCard: 'summary_large_image' twitterCard: 'summary_large_image'
}) })
defineOgImageComponent('NuxtSeo', {
title: head.title,
subtitle: head.subtitle,
description: head.description,
theme: '#F43F5E'
})
</script> </script>
<template> <template>