Files
oki-foundation/SEO.md
T
sucupira 30858926fa docs+fix: nettoyage post-migration et conformité svelte-autofixer
- CONTRIBUTING.md et SEO.md réécrits pour la structure SvelteKit
- README : section documents de référence (charte, recette, AGENTS.md, guides Svelte 5)
- Liens internes via resolve()/asset() de $app/paths, externes en rel="external"
- Seo.svelte : JSON-LD construits dans le script (</script> échappé)
- Titres de sections : {' '} remplacé par &#32;
- Renommage svelte_core_bestpractices.md
- Passe svelte-autofixer : 0 issue restante hors {@html} first-party assumés
2026-07-21 08:41:55 -04:00

132 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Guide SEO - o-k-i.net
Ce document décrit l'optimisation SEO du site o-k-i.net (V3, SvelteKit statique).
## 📋 Fichiers SEO
### 1. robots.txt
**Emplacement :** `static/robots.txt` (servi à `/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 :** `static/sitemap.xml` (servi à `/sitemap.xml`)
Liste les 8 pages du site avec priorités et fréquences :
- `/` et `/en/` (priorité 1.0, hebdomadaire)
- `/dons/` et `/en/donate/` (0.6, mensuelle)
- `/presse/` et `/en/press/` (0.5, mensuelle)
- `/mentions-legales/` et `/en/legal-notice/` (0.3, mensuelle)
**À mettre à jour :** lors de l'ajout de nouvelles pages.
## 🏷️ Meta Tags
Tous les meta tags sont centralisés dans le composant **`src/lib/components/Seo.svelte`**, alimenté par `src/lib/i18n/{locale}/site.json`. Chaque page l'invoque avec ses props :
```svelte
<Seo title="Titre de la page" description="Description spécifique" path="/ma-page/" locale="fr" />
```
- **Title** : `Titre | ORGANISATION KA INTERNATIONALE` (home : `… | OKI`)
- **Description** : par page, sinon `site.description`
- **Keywords** : `site.keywords` · **Author** : `site.name`
- **Canonical URL** : `https://o-k-i.net{path}` — évite le contenu dupliqué
- **Hreflang** : `fr`, `en`, `x-default`, calculés via `alternatePath()` (`src/lib/i18n/index.ts`)
### Open Graph (10 balises)
```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/images/logo-512x512.png">
<meta property="og:image:width" content="512">
<meta property="og:image:height" content="512">
<meta property="og:image:alt" content="…">
<meta property="og:locale" content="fr_FR">
<meta property="og:site_name" content="ORGANISATION KA INTERNATIONALE">
```
### Twitter Cards
`summary_large_image` + url, title, description, image, image:alt — self-hébergées comme tout le reste.
## 📊 Structured Data (JSON-LD)
Deux blocs injectés par `Seo.svelte` sur toutes les pages :
1. **Organization** : nom (OKI), URL, logo, description, adresse (36 Rue Lethière, Basse-Terre 97100, GP), contact (kontak@o-k-i.net), sameAs (niyaj, kute, labola, liberapay), `foundingDate: 2024`, `nonprofitStatus`.
2. **MusicGroup** : DJANGOKAM (genres Reggae/Zouk/Konpa/K-pop, djangokam.pawol.nu, membre OKI).
## 🔍 Attributs lang
L'attribut `lang` du `<html>` est posé au prerender par `src/hooks.server.ts` (`fr` par défaut, `en` sous `/en/`), et `data-locale` pilote la redirection de langue (`static/lang-redirect.js`). Les microcopies en kréyòl (404, hors-ligne) portent `lang="gcf"`.
## 🎯 Bonnes pratiques
### Ajouter une nouvelle page
1. Créer `src/routes/ma-page/+page.svelte` avec `<Seo>` renseigné
2. Ajouter la paire FR↔EN dans `PATH_PAIRS` (`src/lib/i18n/index.ts`)
3. Mettre à jour `static/sitemap.xml`
4. Ajouter un lien dans `src/lib/i18n/*/navigation.json` si nécessaire
## 🚀 Tests et validation
### Outils recommandés
1. **Google Search Console** - Soumettre le sitemap
2. **Facebook Sharing Debugger** - https://developers.facebook.com/tools/debug/
3. **Schema Markup Validator** - https://validator.schema.org/
4. **Google Rich Results Test** - https://search.google.com/test/rich-results
### Commandes utiles (sur `npm run preview`)
```bash
curl http://localhost:4173/robots.txt
curl http://localhost:4173/sitemap.xml
curl http://localhost:4173/ | grep -oE '(property|name)="(og:|twitter:)[^"]*"'
```
## 📈 Suivi et amélioration
### Améliorations futures possibles
- [ ] Pages dédiées pour chaque service Fédiverse
- [ ] FAQ avec Schema.org FAQPage
- [ ] Breadcrumbs avec données structurées
- [ ] Hreflang pour d'autres langues (créole…)
## 🌍 Mots-clés ciblés
### Primaires
- Organisation Ka Internationale · OKI · Fédiverse Guadeloupe · Alternatives GAFAM
### Secondaires
- PeerTube / Mastodon / Nextcloud / Castopod Guadeloupe · Logiciel libre Antilles · Médias libres Caraïbes · Hébergement éthique · Langues créoles
### 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 (8 URLs, dates à jour)
- [x] Meta description sur toutes les pages
- [x] Balises title optimisées
- [x] URL canoniques
- [x] Open Graph (10 balises, og:image self-hébergée)
- [x] Twitter Cards
- [x] JSON-LD Organization + MusicGroup
- [x] Logo haute résolution (512×512)
- [x] Images avec attributs alt
- [x] Performance (Lighthouse mobile ≥ 90, mesuré à 91)
- [x] Mobile-friendly (responsive, vérifié Lighthouse)
- [x] HTTPS activé et HSTS configuré
- [x] Hreflang FR/EN/x-default
- [ ] Google Search Console configuré
- [ ] Analytics installé (optionnel, respectueux RGPD — rester sans tiers)