---
page: contenu
sous-page: import-export
route: /contenu/import-export
statut: draft
version: 0.1
transverse-liées: [conventions, queue-workers (TBD), i18n, design-system]
date: 2026-06-03
---

# CdC — `contenu/import-export`

> **Inventaire de contenu** à l'import (pages existantes du site via **sitemap / Firecrawl**), **briefs / calendrier** à l'export. Moins « multi-sources » que keywords/backlink, mais mêmes **conventions** (R1/R2) et mêmes **jobs async**.

## 1. Objectif

Peupler `online` avec l'**inventaire des pages existantes** d'un site (sans tout ressaisir), et **sortir** briefs et calendrier éditorial pour le travail externe.

## 2. Périmètre

- **Dans** : **import inventaire** (sitemap + scan **Firecrawl** → `online_page`) ; (option) import d'un **export CMS** (WordPress XML…) ; **export** des **briefs (EEAT)**, du **calendrier éditorial** (CSV/ICS), des **plans** ; jobs async ; dry-run.
- **Hors** : connexion CMS temps réel (→ **D2**) ; métriques multi-fournisseurs (≠ keywords/backlink).

## 3. User stories *(persona : SEO / éditeur)*

- J'importe l'**inventaire** de mon site (sitemap) → mes pages live apparaissent dans `online`.
- J'**exporte mes briefs** et mon **calendrier** pour les partager.

## 4. Fonctionnalités

- F1 — **Import inventaire** : sitemap + **scan Firecrawl** → `online_page` (statut `live`).
- F2 — (option) **Import CMS** : export WordPress/autre → contenu/online.
- F3 — **Export** : briefs EEAT, calendrier éditorial (CSV/ICS), plans.
- F4 — **Auto-détection** (R1) si import d'un format connu ; **destination au choix** (online / planning).
- F5 — **Jobs async** + dry-run/validation.

## 5. UI / écrans

- Assistant import (source → scan/upload → preview → commit) ; liste des jobs ; assistant export. Conventions **R1/R2**. Tokens `design.md`.

## 6. Données & actions

- **Actions** : importer l'inventaire (sitemap/Firecrawl), importer un export CMS, exporter briefs/calendrier/plans.

## 7. Modèle de données *(réutilise)*

- Crée des `online_page` (inventaire). `import_job` / `export_job` (cf `keywords/export-import`).

## 8. API Hono

- `POST /sites/:siteId/content/imports` *(sitemap | firecrawl | cms-export)* → job
- `GET /sites/:siteId/content/imports/:jobId` · `/preview` · `POST /commit`
- `POST /sites/:siteId/content/exports` *(briefs | calendrier | plans)* → job

## 9. Capacités requises *(fonctionnel — mapping modules TBD)*

Découverte d'inventaire (sitemap/Firecrawl) · import CMS (option) · export multi-format · jobs async.

## 10. Tools / capacités MCP

- `content_import_inventory` (write) · `content_import_status` (read) · `content_export` (write)

> Privé vs public-limité : **TBD**.

## 11. i18n

- UI localisée ; locale des pages conservée.

## 12. Qualité *(réf. fiches des 128 par slug)*

- **Sécu** : validation fichiers, isolation **par site**, auth. **Perf** : scans/streaming en **jobs**. **A11y** : assistant clavier. **Indexation** : noindex.

## 13. Critères d'acceptation

- [ ] Importer le **sitemap** d'un site crée les `online_page` correspondantes.
- [ ] Un **scan Firecrawl** renseigne titre/last_updated.
- [ ] **Exporter** les briefs/calendrier produit les fichiers attendus.
- [ ] Le **switch de site** isole tout.

## 14. Dépendances & risques · questions ouvertes

- **Dépend de** : **Firecrawl**, `contenu/online` (cible inventaire), `_transverse/queue-workers`, `_transverse/conventions`.
- **Questions ouvertes** : formats d'export CMS à supporter ? calendrier en ICS ?
