feat: improve SEO

This commit is contained in:
2025-11-05 17:41:27 +04:00
parent 0609bcceb5
commit 002377a9d3
10 changed files with 301 additions and 6 deletions
+11 -1
View File
@@ -37,11 +37,21 @@
### Améliorations techniques ### Améliorations techniques
- ✅ Temps de build ultra-rapide (~60ms) - ✅ Temps de build ultra-rapide (~60ms)
- ✅ Hot reload pour le développement - ✅ Hot reload pour le développement
- ✅ SEO optimisé
- ✅ Performance améliorée - ✅ Performance améliorée
- ✅ Code maintenable et modulaire - ✅ Code maintenable et modulaire
- ✅ Licence libre AGPL-V3 - ✅ Licence libre AGPL-V3
### SEO & Référencement
- ✅ Meta tags Open Graph pour Facebook et LinkedIn
- ✅ Twitter Cards pour un meilleur partage sur X/Twitter
- ✅ JSON-LD avec Schema.org (Organization)
- ✅ Sitemap.xml avec URLs principales
- ✅ Robots.txt configuré
- ✅ Balises canonical pour éviter le contenu dupliqué
- ✅ Meta descriptions personnalisées par page
- ✅ Mots-clés optimisés (Fédiverse, logiciel libre, Guadeloupe, etc.)
- ✅ Structured data avec adresse et contacts
### Fichiers principaux ### Fichiers principaux
- `eleventy.config.js` - Configuration 11ty - `eleventy.config.js` - Configuration 11ty
- `src/_data/` - Données du site (services, projets, valeurs, etc.) - `src/_data/` - Données du site (services, projets, valeurs, etc.)
+1 -1
View File
@@ -1,6 +1,6 @@
# Guide de contribution # Guide de contribution
Merci de votre intérêt pour contribuer au site de l'Organisation Ka Internationale ! Merci de votre intérêt pour contribuer au site dE l'ORGANISATION KA INTERNATIONALE !
## Ajouter du contenu ## Ajouter du contenu
+10 -1
View File
@@ -106,10 +106,19 @@ Les styles sont dans `src/assets/css/styles.css`. La charte graphique est basée
- ✅ Effets hover interactifs - ✅ Effets hover interactifs
- ✅ Easter egg Konami Code - ✅ Easter egg Konami Code
- ✅ Performance optimisée - ✅ Performance optimisée
- ✅ SEO friendly
- ✅ Logo et favicon intégrés - ✅ Logo et favicon intégrés
- ✅ Charte graphique basée sur le logo officiel - ✅ Charte graphique basée sur le logo officiel
### SEO & Référencement
- ✅ Meta tags Open Graph (Facebook, LinkedIn)
- ✅ Twitter Cards
- ✅ JSON-LD Structured Data (Schema.org)
- ✅ Sitemap.xml
- ✅ Robots.txt
- ✅ Balises canonical
- ✅ Meta description personnalisées
- ✅ Mots-clés pertinents
## Sections du site ## Sections du site
1. **Hero** - Présentation de l'organisation 1. **Hero** - Présentation de l'organisation
+188
View File
@@ -0,0 +1,188 @@
# Guide SEO - o-k-i.net
Ce document décrit l'optimisation SEO mise en place sur le site o-k-i.net V2.
## 📋 Fichiers SEO
### 1. robots.txt
**Emplacement :** `src/robots.txt`
Permet aux moteurs de recherche d'indexer tout le contenu du site et indique l'emplacement du sitemap.
```
User-agent: *
Allow: /
Sitemap: https://o-k-i.net/sitemap.xml
```
### 2. sitemap.xml
**Emplacement :** `src/sitemap.xml`
Liste toutes les pages du site avec leurs priorités et fréquences de mise à jour.
**Pages incluses :**
- Page d'accueil (priorité 1.0, hebdomadaire)
- Mentions légales (priorité 0.3, mensuelle)
**À mettre à jour :** Lors de l'ajout de nouvelles pages.
## 🏷️ Meta Tags
### Meta Tags de base
Définis dans `src/_includes/layouts/base.njk` :
- **Title** : Dynamique selon la page
- **Description** : Personnalisable par page via front matter
- **Keywords** : OKI, Fédiverse, PeerTube, Pleroma, Funkwhale, Castopod, Guadeloupe, logiciel libre, GAFAM
- **Author** : Organisation Ka Internationale
- **Canonical URL** : Évite le contenu dupliqué
### Open Graph (Facebook, LinkedIn)
```html
<meta property="og:type" content="website">
<meta property="og:url" content="https://o-k-i.net">
<meta property="og:title" content="...">
<meta property="og:description" content="...">
<meta property="og:image" content="https://o-k-i.net/assets/images/logo-512x512.png">
<meta property="og:locale" content="fr_FR">
```
### Twitter Cards
```html
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="...">
<meta name="twitter:description" content="...">
<meta name="twitter:image" content="...">
```
## 📊 Structured Data (JSON-LD)
### Organization Schema
Données structurées conformes à Schema.org pour améliorer l'affichage dans les résultats de recherche.
**Type :** Organization
**Informations incluses :**
- Nom : ORGANISATION KA INTERNATIONALE
- Nom alternatif : OKI
- URL : https://o-k-i.net
- Logo
- Description
- Adresse physique (Basse-Terre, Guadeloupe)
- Email de contact
- Liens vers les plateformes sociales (GADE, BOKANTAJ, MIZIK, KUTE, Codeberg, Liberapay)
- Statut : Organisation à but non lucratif
## 🔍 Optimisations par page
### Page d'accueil
- **Title :** "ORGANISATION KA INTERNATIONALE | OKI"
- **Description :** Reprend site.description
- **Keywords :** Fédiverse, logiciel libre, alternatives GAFAM, Guadeloupe
### Mentions légales
- **Title :** "Mentions Légales | ORGANISATION KA INTERNATIONALE"
- **Description :** "Mentions légales et informations juridiques de l'Organisation Ka Internationale (OKI) - Hébergement, RGPD, licence AGPL-V3"
## 🎯 Bonnes pratiques
### Ajouter une nouvelle page
1. Créer le fichier `.njk` dans `src/`
2. Ajouter le front matter avec title et description personnalisés
3. Mettre à jour `src/sitemap.xml`
4. Ajouter un lien dans la navigation si nécessaire
### Personnaliser les meta tags
Dans le front matter de la page :
```yaml
---
layout: layouts/base.njk
title: Titre de la page
description: Description spécifique à cette page
---
```
## 🚀 Tests et validation
### Outils recommandés
1. **Google Search Console** - Soumettre le sitemap
2. **Facebook Sharing Debugger** - Tester les meta Open Graph
- URL : https://developers.facebook.com/tools/debug/
3. **Twitter Card Validator** - Tester les Twitter Cards
- URL : https://cards-dev.twitter.com/validator
4. **Schema Markup Validator** - Valider le JSON-LD
- URL : https://validator.schema.org/
5. **Google Rich Results Test** - Tester les données structurées
- URL : https://search.google.com/test/rich-results
### Commandes utiles
```bash
# Vérifier robots.txt
curl http://localhost:8080/robots.txt
# Vérifier sitemap.xml
curl http://localhost:8080/sitemap.xml
# Vérifier les meta tags
curl http://localhost:8080/ | grep -E "(og:|twitter:)"
```
## 📈 Suivi et amélioration
### Métriques à surveiller
- Position dans les résultats de recherche Google
- Taux de clics (CTR) depuis les résultats de recherche
- Nombre de pages indexées
- Erreurs d'exploration
### Améliorations futures possibles
- [ ] Ajouter un blog/actualités avec articles optimisés SEO
- [ ] Créer des pages dédiées pour chaque service Fédiverse
- [ ] Ajouter des FAQ avec Schema.org FAQPage
- [ ] Optimiser les images avec attributs alt descriptifs
- [ ] Ajouter breadcrumbs avec données structurées
- [ ] Implémenter AMP (Accelerated Mobile Pages) si nécessaire
- [ ] Ajouter hreflang pour versions multilingues (créole, anglais, etc.)
## 🌍 Mots-clés ciblés
### Primaires
- Organisation Ka Internationale
- OKI
- Fédiverse Guadeloupe
- PeerTube Guadeloupe
- Alternatives GAFAM
### Secondaires
- Pleroma
- Funkwhale
- Castopod
- Logiciel libre Antilles
- Médias libres Caraïbes
- Hébergement éthique
- Langues créoles
- Réseau social libre
### Longue traîne
- "alternative libre à YouTube Guadeloupe"
- "hébergement PeerTube Martinique"
- "réseau social décentralisé Antilles"
- "promotion langues créoles numérique"
## 📝 Checklist SEO
- [x] Robots.txt configuré
- [x] Sitemap.xml créé et soumis
- [x] Meta description sur toutes les pages
- [x] Balises title optimisées
- [x] URL canoniques
- [x] Open Graph tags
- [x] Twitter Cards
- [x] JSON-LD Organization
- [x] Logo haute résolution (512x512)
- [ ] Images avec attributs alt
- [ ] Performance optimale (Lighthouse score)
- [ ] Mobile-friendly (déjà responsive)
- [ ] HTTPS activé (à configurer en production)
- [ ] Google Search Console configuré
- [ ] Analytics installé (optionnel, respectueux RGPD)
+4
View File
@@ -2,6 +2,10 @@ module.exports = function(eleventyConfig) {
// Copy assets folders to output // Copy assets folders to output
eleventyConfig.addPassthroughCopy("src/assets"); eleventyConfig.addPassthroughCopy("src/assets");
// Copy SEO files
eleventyConfig.addPassthroughCopy("src/robots.txt");
eleventyConfig.addPassthroughCopy("src/sitemap.xml");
// Watch CSS files for changes // Watch CSS files for changes
eleventyConfig.addWatchTarget("src/assets/css/"); eleventyConfig.addWatchTarget("src/assets/css/");
+2 -2
View File
@@ -1,14 +1,14 @@
{ {
"name": "o-k-i.net-v2", "name": "o-k-i.net-v2",
"version": "1.0.0", "version": "1.0.0",
"description": "Site web de l'Organisation Ka Internationale (OKI) - V2", "description": "Site web de l'ORGANISATION KA INTERNATIONALE (OKI) - V2",
"scripts": { "scripts": {
"start": "eleventy --serve", "start": "eleventy --serve",
"build": "eleventy", "build": "eleventy",
"clean": "rm -rf _site" "clean": "rm -rf _site"
}, },
"keywords": [], "keywords": [],
"author": "Organisation Ka Internationale", "author": "ORGANISATION KA INTERNATIONALE",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"devDependencies": { "devDependencies": {
"@11ty/eleventy": "^3.1.2" "@11ty/eleventy": "^3.1.2"
+64
View File
@@ -3,12 +3,76 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Title & Description -->
<title>{% if title %}{{ title }} | {{ site.name }}{% else %}{{ site.name }} | {{ site.shortName }}{% endif %}</title> <title>{% if title %}{{ title }} | {{ site.name }}{% else %}{{ site.name }} | {{ site.shortName }}{% endif %}</title>
<meta name="description" content="{{ description or site.description }}"> <meta name="description" content="{{ description or site.description }}">
<meta name="keywords" content="OKI, ORGANISATION KA INTERNATIONALE, Fédiverse, PeerTube, Pleroma, Funkwhale, Castopod, Guadeloupe, Martinique, logiciel libre, GAFAM, alternatives libres, langues créoles, médias libres">
<meta name="author" content="{{ site.name }}">
<!-- Canonical URL -->
<link rel="canonical" href="https://o-k-i.net{{ page.url or '/' }}">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://o-k-i.net{{ page.url or '/' }}">
<meta property="og:title" content="{% if title %}{{ title }}{% else %}{{ site.name }}{% endif %}">
<meta property="og:description" content="{{ description or site.description }}">
<meta property="og:image" content="https://o-k-i.net/assets/images/logo-512x512.png">
<meta property="og:image:width" content="512">
<meta property="og:image:height" content="512">
<meta property="og:locale" content="fr_FR">
<meta property="og:site_name" content="{{ site.name }}">
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://o-k-i.net{{ page.url or '/' }}">
<meta name="twitter:title" content="{% if title %}{{ title }}{% else %}{{ site.name }}{% endif %}">
<meta name="twitter:description" content="{{ description or site.description }}">
<meta name="twitter:image" content="https://o-k-i.net/assets/images/logo-512x512.png">
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico"> <link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico">
<link rel="icon" type="image/png" sizes="512x512" href="/assets/images/logo-512x512.png"> <link rel="icon" type="image/png" sizes="512x512" href="/assets/images/logo-512x512.png">
<link rel="apple-touch-icon" href="/assets/images/logo-512x512.png"> <link rel="apple-touch-icon" href="/assets/images/logo-512x512.png">
<!-- Stylesheet -->
<link rel="stylesheet" href="/assets/css/styles.css"> <link rel="stylesheet" href="/assets/css/styles.css">
<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "{{ site.name }}",
"alternateName": "{{ site.shortName }}",
"url": "https://o-k-i.net",
"logo": "https://o-k-i.net/assets/images/logo-512x512.png",
"description": "{{ site.description }}",
"address": {
"@type": "PostalAddress",
"streetAddress": "36 Rue Lethière",
"addressLocality": "Basse-Terre",
"postalCode": "97100",
"addressCountry": "GP"
},
"contactPoint": {
"@type": "ContactPoint",
"email": "kontak@o-k-i.net",
"contactType": "customer service"
},
"sameAs": [
"https://gade.o-k-i.net/",
"https://bokantaj.o-k-i.net/",
"https://mizik.o-k-i.net/",
"https://kute.o-k-i.net/",
"https://codeberg.org/OKI",
"https://liberapay.com/OKI/donate"
],
"foundingDate": "2024",
"nonprofitStatus": "NonprofitANBI"
}
</script>
</head> </head>
<body> <body>
{% include "partials/nav.njk" %} {% include "partials/nav.njk" %}
+2 -1
View File
@@ -1,6 +1,7 @@
--- ---
layout: layouts/base.njk layout: layouts/base.njk
title: Mentions Légales title: Mentions Légales
description: Mentions légales et informations juridiques de l'ORGANISATION KA INTERNATIONALE (OKI) - Hébergement, RGPD, licence AGPL-V3
--- ---
<section style="padding: 8rem 2rem 4rem; min-height: 100vh; background: linear-gradient(135deg, var(--noir-profond) 0%, var(--gris-sombre) 100%);"> <section style="padding: 8rem 2rem 4rem; min-height: 100vh; background: linear-gradient(135deg, var(--noir-profond) 0%, var(--gris-sombre) 100%);">
@@ -69,7 +70,7 @@ title: Mentions Légales
3. Description des services fournis 3. Description des services fournis
</h2> </h2>
<p style="line-height: 1.6;"> <p style="line-height: 1.6;">
Le site <strong>o-k-i.net</strong> a pour objet de fournir une information concernant l'ensemble des activités de l'Organisation Ka Internationale. Le site <strong>o-k-i.net</strong> a pour objet de fournir une information concernant l'ensemble des activités de l'ORGANISATION KA INTERNATIONALE.
</p> </p>
<p style="margin-top: 1rem; line-height: 1.6;"> <p style="margin-top: 1rem; line-height: 1.6;">
ORGANISATION KA INTERNATIONALE s'efforce de fournir des informations aussi précises que possible. ORGANISATION KA INTERNATIONALE s'efforce de fournir des informations aussi précises que possible.
+4
View File
@@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://o-k-i.net/sitemap.xml
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://o-k-i.net/</loc>
<lastmod>2025-01-05</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://o-k-i.net/mentions-legales/</loc>
<lastmod>2025-01-05</lastmod>
<changefreq>monthly</changefreq>
<priority>0.3</priority>
</url>
</urlset>