Importation de contenu

Sur cette page

EmDash importe du contenu depuis WordPress et d’autres plateformes. Chaque source d’importation détecte une plateforme, analyse son contenu et le récupère dans votre site.

Sources d’importation

ID de sourcePlateformeSondeOAuthImportation complète
wxrFichier d’export WordPressNonNonOui
wordpress-comWordPress.comOuiOuiOui
wordpress-restWordPress auto-hébergéOuiNonSonde uniquement

Téléchargement de fichier WXR

La méthode d’importation la plus complète. Téléchargez un fichier d’export WordPress eXtended RSS (WXR) directement vers le tableau de bord d’administration.

Capacités :

  • Tous les types de publication (y compris personnalisés)
  • Tous les champs meta
  • Brouillons et publications privées
  • Hiérarchie de taxonomie complète
  • Métadonnées des pièces jointes média

Comment obtenir un fichier WXR :

  1. Dans l’admin WordPress, allez dans Outils → Exporter
  2. Sélectionnez Tout le contenu ou des types de publication spécifiques
  3. Cliquez sur Télécharger le fichier d’export
  4. Téléchargez le fichier .xml vers EmDash

OAuth WordPress.com

Pour les sites hébergés sur WordPress.com, connectez-vous via OAuth pour importer sans exports manuels de fichiers.

  1. Entrez l’URL de votre site WordPress.com
  2. Cliquez sur Se connecter avec WordPress.com
  3. Autorisez EmDash dans la popup WordPress.com
  4. Sélectionnez le contenu à importer

Ce qui est inclus :

  • Contenu publié et brouillons
  • Publications privées (avec autorisation)
  • Fichiers média via API
  • Champs personnalisés exposés à l’API REST

Sonde de l’API REST WordPress

Lorsque vous entrez une URL, EmDash sonde le site pour détecter WordPress et afficher le contenu disponible :

Détecté : WordPress 6.4
├── Publications : 127 (publiées)
├── Pages : 12 (publiées)
└── Médias : 89 fichiers

Remarque : Les brouillons et le contenu privé nécessitent une authentification
ou un export WXR complet.

La sonde REST est informative. Pour des importations complètes, elle suggère de télécharger un fichier WXR ou de se connecter via OAuth (pour WordPress.com).

Flux d’importation

Toutes les sources suivent le même flux :

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  Connecter  │────▶│   Analyser  │────▶│   Préparer  │────▶│   Exécuter  │
│   (sonde/   │     │  (vérifier  │     │   (créer    │     │  (importer  │
│  télécharg.)│     │    schéma)  │     │    schéma)  │     │   contenu)  │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘

Étape 1 : Connecter

Entrez une URL pour sonder ou téléchargez un fichier directement.

Le sondage d’URL exécute toutes les sources enregistrées en parallèle. La correspondance avec la plus haute confiance détermine l’action suggérée suivante :

  • Site WordPress.com → Proposer une connexion OAuth
  • WordPress auto-hébergé → Afficher les instructions d’export
  • Inconnu → Suggérer un téléchargement de fichier

Étape 2 : Analyser

La source analyse le contenu et vérifie la compatibilité du schéma :

Types de publication :
├── post (127) → posts [Nouvelle collection]
├── page (12)  → pages [Existante, compatible]
├── product (45) → products [Ajouter 3 champs]
└── revision (234) → [Ignorer - type interne]

Modifications de schéma requises :
├── Créer la collection : posts
├── Ajouter des champs à pages : featured_image
└── Créer la collection : products

Chaque type de publication affiche son statut :

StatutSignification
PrêtLa collection existe avec des champs compatibles
Nouvelle collectionSera créée automatiquement
Ajouter des champsLa collection existe, des champs manquants sont ajoutés
IncompatibleConflits de type de champ (correction manuelle nécessaire)

Étape 3 : Préparer le schéma

Cliquez sur Créer le schéma et importer pour :

  1. Créer de nouvelles collections
  2. Ajouter les champs manquants avec les types de colonne corrects
  3. Configurer les tables de contenu avec des index

Étape 4 : Exécuter l’importation

Le contenu est importé séquentiellement :

  • Gutenberg/HTML converti en Portable Text
  • Statut WordPress mappé au statut EmDash
  • Auteurs WordPress mappés à la propriété (authorId) et aux signatures de présentation
  • Taxonomies créées et liées
  • Blocs réutilisables (wp_block) importés en tant que Sections
  • Progression affichée en temps réel

Comportement d’importation des auteurs :

  • Si un mappage d’auteur pointe vers un utilisateur EmDash, la propriété est définie sur cet utilisateur et une signature liée est créée/réutilisée pour le même utilisateur.
  • S’il n’y a pas de mappage d’utilisateur, une signature invité est créée/réutilisée à partir de l’identité de l’auteur WordPress.
  • Les entrées importées obtiennent des crédits de signature ordonnés, avec le premier crédit défini comme primaryBylineId.

Étape 5 : Importation de médias (Optionnel)

Après le contenu, importez éventuellement les médias :

  1. Analyse — Affiche le nombre de pièces jointes par type

    Médias trouvés :
    ├── Images : 75 fichiers
    ├── Vidéo : 10 fichiers
    └── Autre : 4 fichiers
  2. Téléchargement — Diffuse depuis les URLs WordPress avec la progression

    Importation des médias...
    ├── 45 sur 89 (50%)
    ├── Actuel : vacation-photo.jpg
    └── Statut : Téléchargement en cours
  3. Réécriture des URLs — Le contenu est automatiquement mis à jour avec les nouvelles URLs

L’importation de médias utilise le hachage de contenu (xxHash64) pour la déduplication. La même image utilisée dans plusieurs publications est stockée une seule fois.

Points de terminaison API

Le système d’importation expose ces points de terminaison :

Sonder une URL

Détectez la plateforme derrière une URL avec une requête de sonde :

POST /_emdash/api/import/probe
Content-Type: application/json

{ "url": "https://example.com" }

La réponse contient la plateforme détectée et l’action suggérée.

Analyser WXR

Téléchargez un fichier WXR pour analyser ses types de publication et sa compatibilité de schéma :

POST /_emdash/api/import/wordpress/analyze
Content-Type: multipart/form-data

file: [Export WordPress .xml]

La réponse contient l’analyse des types de publication avec la compatibilité du schéma.

Préparer le schéma

Créez les collections et les champs pour les types de publication sélectionnés :

POST /_emdash/api/import/wordpress/prepare
Content-Type: application/json

{
  "postTypes": [
    { "name": "post", "collection": "posts", "enabled": true }
  ]
}

Exécuter l’importation

Importez le contenu dans les collections mappées :

POST /_emdash/api/import/wordpress/execute
Content-Type: multipart/form-data

file: [Export WordPress .xml]
config: { "postTypeMappings": { "post": { "collection": "posts" } } }

Importer les médias

Téléchargez et stockez les pièces jointes média référencées par l’importation :

POST /_emdash/api/import/wordpress/media
Content-Type: application/json

{
  "attachments": [{ "id": 123, "url": "https://..." }],
  "stream": true
}

La réponse diffuse les mises à jour de progression NDJSON pendant le téléchargement et l’upload.

Réécrire les URLs

Remplacez les anciennes URLs de médias dans le contenu importé par leurs équivalents stockés :

POST /_emdash/api/import/wordpress/rewrite-urls
Content-Type: application/json

{
  "urlMap": { "https://old.com/image.jpg": "/_emdash/media/abc123" }
}

Gestion des erreurs

Erreurs récupérables

  • Timeout réseau — Réessai avec backoff
  • Échec d’analyse d’un seul élément — Journalisé, ignoré, l’importation continue
  • Échec de téléchargement de média — Marqué pour traitement manuel

Erreurs fatales

  • Format de fichier invalide — L’importation s’arrête avec un message d’erreur
  • Connexion à la base de données perdue — L’importation est mise en pause, permet la reprise
  • Quota de stockage dépassé — L’importation s’arrête, affiche l’utilisation

Rapport d’erreur

Après la fin d’une importation, EmDash affiche un résumé de ce qui a réussi, de ce qui a été ajusté et de ce qui a échoué :

Importation terminée

✓ 125 publications importées
✓ 12 pages importées
✓ 85 références média enregistrées

⚠ 2 éléments ont eu des avertissements :
  - Publication "Special Characters ñ" - encodage du titre corrigé
  - Page "About" - slug dupliqué renommé en "about-1"

✗ 1 élément a échoué :
  - ID de publication 456 - erreur d'analyse de contenu (enregistré comme brouillon)

Les éléments échoués sont enregistrés comme brouillons avec le contenu original dans _importError pour examen.

Sources personnalisées

Pour importer depuis une plateforme que les sources intégrées ne couvrent pas, implémentez l’interface ImportSource et enregistrez-la sur l’intégration :

import { mySource } from "./src/import/custom-source";

export default defineConfig({
	integrations: [
		emdash({
			import: { sources: [mySource] },
		}),
	],
});

L’interface (probe, analyze, fetchContent) et la forme de sortie normalisée sont documentées dans Architecture (internes).

Prochaines étapes