feat: intégration plugin Kirby SEO
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s

- Ajout de tobimori/kirby-seo via Composer
- snippet('seo/head') dans header.php (remplace les meta manuels)
- snippet('seo/schemas') dans footer.php pour JSON-LD
- Onglet SEO ajouté dans site.yml et tous les blueprints de pages
- Configuration SEO dans config.php (sitemap, robots, canonicalBase TODO)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-03-25 12:59:18 +01:00
parent baab2fb3a1
commit 58c31ea391
133 changed files with 9201 additions and 253 deletions

View file

@ -500,4 +500,26 @@ return array(
'Whoops\\Util\\SystemFacade' => $vendorDir . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
'Whoops\\Util\\TemplateHelper' => $vendorDir . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
'claviska\\SimpleImage' => $vendorDir . '/claviska/simpleimage/src/claviska/SimpleImage.php',
'tobimori\\Seo\\Ai' => $baseDir . '/site/plugins/kirby-seo/classes/Ai.php',
'tobimori\\Seo\\Ai\\Chunk' => $baseDir . '/site/plugins/kirby-seo/classes/Ai/Chunk.php',
'tobimori\\Seo\\Ai\\Content' => $baseDir . '/site/plugins/kirby-seo/classes/Ai/Content.php',
'tobimori\\Seo\\Ai\\Driver' => $baseDir . '/site/plugins/kirby-seo/classes/Ai/Driver.php',
'tobimori\\Seo\\Ai\\Drivers\\Anthropic' => $baseDir . '/site/plugins/kirby-seo/classes/Ai/Drivers/Anthropic.php',
'tobimori\\Seo\\Ai\\Drivers\\Gemini' => $baseDir . '/site/plugins/kirby-seo/classes/Ai/Drivers/Gemini.php',
'tobimori\\Seo\\Ai\\Drivers\\OpenAi' => $baseDir . '/site/plugins/kirby-seo/classes/Ai/Drivers/OpenAi.php',
'tobimori\\Seo\\Ai\\SseStream' => $baseDir . '/site/plugins/kirby-seo/classes/Ai/SseStream.php',
'tobimori\\Seo\\AltText' => $baseDir . '/site/plugins/kirby-seo/classes/AltText.php',
'tobimori\\Seo\\Buttons\\RobotsViewButton' => $baseDir . '/site/plugins/kirby-seo/classes/Buttons/RobotsViewButton.php',
'tobimori\\Seo\\Buttons\\UtmShareViewButton' => $baseDir . '/site/plugins/kirby-seo/classes/Buttons/UtmShareViewButton.php',
'tobimori\\Seo\\Dialogs\\UtmShareDialog' => $baseDir . '/site/plugins/kirby-seo/classes/Dialogs/UtmShareDialog.php',
'tobimori\\Seo\\Field\\AltTextField' => $baseDir . '/site/plugins/kirby-seo/classes/Field/AltTextField.php',
'tobimori\\Seo\\GoogleSearchConsole' => $baseDir . '/site/plugins/kirby-seo/classes/GoogleSearchConsole.php',
'tobimori\\Seo\\IndexNow' => $baseDir . '/site/plugins/kirby-seo/classes/IndexNow.php',
'tobimori\\Seo\\Jobs\\GenerateAltTextJob' => $baseDir . '/site/plugins/kirby-seo/classes/Jobs/GenerateAltTextJob.php',
'tobimori\\Seo\\Meta' => $baseDir . '/site/plugins/kirby-seo/classes/Meta.php',
'tobimori\\Seo\\SchemaSingleton' => $baseDir . '/site/plugins/kirby-seo/classes/SchemaSingleton.php',
'tobimori\\Seo\\Seo' => $baseDir . '/site/plugins/kirby-seo/classes/Seo.php',
'tobimori\\Seo\\Sitemap\\Sitemap' => $baseDir . '/site/plugins/kirby-seo/classes/Sitemap/Sitemap.php',
'tobimori\\Seo\\Sitemap\\SitemapIndex' => $baseDir . '/site/plugins/kirby-seo/classes/Sitemap/SitemapIndex.php',
'tobimori\\Seo\\Sitemap\\SitemapUrl' => $baseDir . '/site/plugins/kirby-seo/classes/Sitemap/SitemapUrl.php',
);

View file

@ -6,6 +6,7 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'tobimori\\Seo\\' => array($baseDir . '/site/plugins/kirby-seo/classes'),
'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'),
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),

View file

@ -17,6 +17,10 @@ class ComposerStaticInitda1c3a8eb3e9e3b252ad405f32a3f585
);
public static $prefixLengthsPsr4 = array (
't' =>
array (
'tobimori\\Seo\\' => 13,
),
'W' =>
array (
'Whoops\\' => 7,
@ -54,6 +58,10 @@ class ComposerStaticInitda1c3a8eb3e9e3b252ad405f32a3f585
);
public static $prefixDirsPsr4 = array (
'tobimori\\Seo\\' =>
array (
0 => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes',
),
'Whoops\\' =>
array (
0 => __DIR__ . '/..' . '/filp/whoops/src/Whoops',
@ -621,6 +629,28 @@ class ComposerStaticInitda1c3a8eb3e9e3b252ad405f32a3f585
'Whoops\\Util\\SystemFacade' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/SystemFacade.php',
'Whoops\\Util\\TemplateHelper' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Util/TemplateHelper.php',
'claviska\\SimpleImage' => __DIR__ . '/..' . '/claviska/simpleimage/src/claviska/SimpleImage.php',
'tobimori\\Seo\\Ai' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai.php',
'tobimori\\Seo\\Ai\\Chunk' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai/Chunk.php',
'tobimori\\Seo\\Ai\\Content' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai/Content.php',
'tobimori\\Seo\\Ai\\Driver' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai/Driver.php',
'tobimori\\Seo\\Ai\\Drivers\\Anthropic' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai/Drivers/Anthropic.php',
'tobimori\\Seo\\Ai\\Drivers\\Gemini' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai/Drivers/Gemini.php',
'tobimori\\Seo\\Ai\\Drivers\\OpenAi' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai/Drivers/OpenAi.php',
'tobimori\\Seo\\Ai\\SseStream' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Ai/SseStream.php',
'tobimori\\Seo\\AltText' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/AltText.php',
'tobimori\\Seo\\Buttons\\RobotsViewButton' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Buttons/RobotsViewButton.php',
'tobimori\\Seo\\Buttons\\UtmShareViewButton' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Buttons/UtmShareViewButton.php',
'tobimori\\Seo\\Dialogs\\UtmShareDialog' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Dialogs/UtmShareDialog.php',
'tobimori\\Seo\\Field\\AltTextField' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Field/AltTextField.php',
'tobimori\\Seo\\GoogleSearchConsole' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/GoogleSearchConsole.php',
'tobimori\\Seo\\IndexNow' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/IndexNow.php',
'tobimori\\Seo\\Jobs\\GenerateAltTextJob' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Jobs/GenerateAltTextJob.php',
'tobimori\\Seo\\Meta' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Meta.php',
'tobimori\\Seo\\SchemaSingleton' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/SchemaSingleton.php',
'tobimori\\Seo\\Seo' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Seo.php',
'tobimori\\Seo\\Sitemap\\Sitemap' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Sitemap/Sitemap.php',
'tobimori\\Seo\\Sitemap\\SitemapIndex' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Sitemap/SitemapIndex.php',
'tobimori\\Seo\\Sitemap\\SitemapUrl' => __DIR__ . '/../..' . '/site/plugins/kirby-seo/classes/Sitemap/SitemapUrl.php',
);
public static function getInitializer(ClassLoader $loader)

View file

@ -1289,6 +1289,77 @@
}
],
"install-path": "../symfony/yaml"
},
{
"name": "tobimori/kirby-seo",
"version": "2.0.0-beta.3",
"version_normalized": "2.0.0.0-beta3",
"source": {
"type": "git",
"url": "https://github.com/tobimori/kirby-seo.git",
"reference": "c16472022f53eba9c58ec73b10926129f889f86d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tobimori/kirby-seo/zipball/c16472022f53eba9c58ec73b10926129f889f86d",
"reference": "c16472022f53eba9c58ec73b10926129f889f86d",
"shasum": ""
},
"require": {
"getkirby/composer-installer": "^1.2.1",
"php": ">=8.3.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.48",
"getkirby/cli": "^1.8.0",
"getkirby/cms": "^5.0.0",
"spatie/schema-org": "^3.23",
"tobimori/kirby-queues": "^1.0.0-beta.1"
},
"suggest": {
"ext-imagick": "Rasterize non-resizable images (SVG, etc.) for AI alt text generation",
"getkirby/cli": "Enable background processing support",
"spatie/schema-org": "Enable the Schema.org support",
"tobimori/kirby-queues": "Enable background processing support"
},
"time": "2026-03-10T23:31:27+00:00",
"type": "kirby-plugin",
"extra": {
"kirby-cms-path": false
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"tobimori\\Seo\\": "classes"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"proprietary"
],
"authors": [
{
"name": "Tobias Möritz",
"email": "tobias@moeritz.io"
}
],
"description": "The default choice for SEO on Kirby: Implement technical SEO & Meta best practices with ease and provide an easy-to-use editor experience",
"homepage": "https://github.com/tobimori/kirby-seo#readme",
"support": {
"issues": "https://github.com/tobimori/kirby-seo/issues",
"source": "https://github.com/tobimori/kirby-seo/tree/2.0.0-beta.3"
},
"funding": [
{
"url": "https://plugins.andkindness.com/seo/preorder",
"type": "custom"
},
{
"url": "https://github.com/tobimori",
"type": "github"
}
],
"install-path": "../../site/plugins/kirby-seo"
}
],
"dev": true,

View file

@ -3,7 +3,7 @@
'name' => 'getkirby/plainkit',
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => '3cafcf3167251bbbfd64183de5da67c4a488fa7d',
'reference' => 'baab2fb3a185748e0bcff713054202f27b550ac6',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@ -67,7 +67,7 @@
'getkirby/plainkit' => array(
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => '3cafcf3167251bbbfd64183de5da67c4a488fa7d',
'reference' => 'baab2fb3a185748e0bcff713054202f27b550ac6',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@ -193,5 +193,14 @@
'aliases' => array(),
'dev_requirement' => false,
),
'tobimori/kirby-seo' => array(
'pretty_version' => '2.0.0-beta.3',
'version' => '2.0.0.0-beta3',
'reference' => 'c16472022f53eba9c58ec73b10926129f889f86d',
'type' => 'kirby-plugin',
'install_path' => __DIR__ . '/../../site/plugins/kirby-seo',
'aliases' => array(),
'dev_requirement' => false,
),
),
);

View file

@ -4,8 +4,8 @@
$issues = array();
if (!(PHP_VERSION_ID >= 80200)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.';
if (!(PHP_VERSION_ID >= 80300)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.3.0". You are running ' . PHP_VERSION . '.';
}
if ($issues) {