Inhaltsimport

Auf dieser Seite

EmDash importiert Inhalte aus WordPress und anderen Plattformen. Jede Importquelle erkennt eine Plattform, analysiert deren Inhalte und lädt sie in Ihre Website.

Importquellen

Quell-IDPlattformProbeOAuthVollständiger Import
wxrWordPress-ExportdateiNeinNeinJa
wordpress-comWordPress.comJaJaJa
wordpress-restSelbst gehostetes WordPressJaNeinNur Probe

WXR-Datei-Upload

Die vollständigste Importmethode. Laden Sie eine WordPress eXtended RSS (WXR) Exportdatei direkt in das Admin-Dashboard hoch.

Funktionen:

  • Alle Beitragstypen (einschließlich benutzerdefinierter)
  • Alle Meta-Felder
  • Entwürfe und private Beiträge
  • Vollständige Taxonomie-Hierarchie
  • Medienanhang-Metadaten

So erhalten Sie eine WXR-Datei:

  1. Gehen Sie im WordPress-Admin zu Werkzeuge → Exportieren
  2. Wählen Sie Alle Inhalte oder bestimmte Beitragstypen aus
  3. Klicken Sie auf Exportdatei herunterladen
  4. Laden Sie die .xml-Datei in EmDash hoch

WordPress.com OAuth

Für auf WordPress.com gehostete Websites verbinden Sie sich über OAuth, um ohne manuelle Dateiexporte zu importieren.

  1. Geben Sie Ihre WordPress.com-Website-URL ein
  2. Klicken Sie auf Mit WordPress.com verbinden
  3. Autorisieren Sie EmDash im WordPress.com-Popup
  4. Wählen Sie die zu importierenden Inhalte aus

Was enthalten ist:

  • Veröffentlichte und Entwurfsinhalte
  • Private Beiträge (mit Autorisierung)
  • Mediendateien über API
  • Benutzerdefinierte Felder, die für REST API verfügbar sind

WordPress REST API Probe

Wenn Sie eine URL eingeben, prüft EmDash die Website, um WordPress zu erkennen und verfügbare Inhalte anzuzeigen:

Erkannt: WordPress 6.4
├── Beiträge: 127 (veröffentlicht)
├── Seiten: 12 (veröffentlicht)
└── Medien: 89 Dateien

Hinweis: Entwürfe und private Inhalte erfordern Authentifizierung
oder einen vollständigen WXR-Export.

Die REST-Probe ist informativ. Für vollständige Importe schlägt sie das Hochladen einer WXR-Datei oder die Verbindung über OAuth vor (für WordPress.com).

Import-Ablauf

Alle Quellen folgen demselben Ablauf:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Verbinden │────▶│ Analysieren │────▶│ Vorbereiten │────▶│  Ausführen  │
│  (Probe/    │     │  (Schema    │     │  (Schema    │     │  (Inhalt    │
│   Upload)   │     │   Prüfung)  │     │  erstellen) │     │ importieren)│
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘

Schritt 1: Verbinden

Geben Sie eine URL ein, um zu prüfen, oder laden Sie eine Datei direkt hoch.

URL-Prüfung führt alle registrierten Quellen parallel aus. Die Übereinstimmung mit der höchsten Konfidenz bestimmt die vorgeschlagene nächste Aktion:

  • WordPress.com-Website → OAuth-Verbindung anbieten
  • Selbst gehostetes WordPress → Export-Anweisungen anzeigen
  • Unbekannt → Datei-Upload vorschlagen

Schritt 2: Analysieren

Die Quelle analysiert Inhalte und prüft die Schema-Kompatibilität:

Beitragstypen:
├── post (127) → posts [Neue Sammlung]
├── page (12)  → pages [Vorhanden, kompatibel]
├── product (45) → products [3 Felder hinzufügen]
└── revision (234) → [Überspringen - interner Typ]

Erforderliche Schema-Änderungen:
├── Sammlung erstellen: posts
├── Felder zu pages hinzufügen: featured_image
└── Sammlung erstellen: products

Jeder Beitragstyp zeigt seinen Status:

StatusBedeutung
BereitSammlung existiert mit kompatiblen Feldern
Neue SammlungWird automatisch erstellt
Felder hinzufügenSammlung existiert, fehlende Felder werden hinzugefügt
InkompatibelFeldtypkonflikte (manuelle Behebung erforderlich)

Schritt 3: Schema vorbereiten

Klicken Sie auf Schema erstellen & importieren, um:

  1. Neue Sammlungen zu erstellen
  2. Fehlende Felder mit korrekten Spaltentypen hinzuzufügen
  3. Inhaltstabellen mit Indizes einzurichten

Schritt 4: Import ausführen

Inhalte werden sequenziell importiert:

  • Gutenberg/HTML wird in Portable Text konvertiert
  • WordPress-Status wird auf EmDash-Status abgebildet
  • WordPress-Autoren werden auf Eigentümerschaft (authorId) und Präsentations-Bylines abgebildet
  • Taxonomien werden erstellt und verknüpft
  • Wiederverwendbare Blöcke (wp_block) werden als Abschnitte importiert
  • Fortschritt wird in Echtzeit angezeigt

Verhalten beim Autorenimport:

  • Wenn eine Autorenzuordnung auf einen EmDash-Benutzer verweist, wird die Eigentümerschaft auf diesen Benutzer festgelegt und eine verknüpfte Byline für denselben Benutzer erstellt/wiederverwendet.
  • Wenn keine Benutzerzuordnung vorhanden ist, wird eine Gast-Byline aus der WordPress-Autorenidentität erstellt/wiederverwendet.
  • Importierte Einträge erhalten geordnete Byline-Credits, wobei der erste Credit als primaryBylineId festgelegt wird.

Schritt 5: Medienimport (Optional)

Nach dem Inhalt können Sie optional Medien importieren:

  1. Analyse — Zeigt Anhanganzahl nach Typ an

    Gefundene Medien:
    ├── Bilder: 75 Dateien
    ├── Video: 10 Dateien
    └── Andere: 4 Dateien
  2. Download — Streamt von WordPress-URLs mit Fortschrittsanzeige

    Medien werden importiert...
    ├── 45 von 89 (50%)
    ├── Aktuell: vacation-photo.jpg
    └── Status: Hochladen
  3. URLs umschreiben — Inhalt wird automatisch mit neuen URLs aktualisiert

Der Medienimport verwendet Content-Hashing (xxHash64) zur Deduplizierung. Dasselbe Bild, das in mehreren Beiträgen verwendet wird, wird nur einmal gespeichert.

API-Endpunkte

Das Importsystem stellt diese Endpunkte bereit:

URL prüfen

Erkennen Sie die Plattform hinter einer URL mit einer Prüfanfrage:

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

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

Die Antwort enthält die erkannte Plattform und die vorgeschlagene Aktion.

WXR analysieren

Laden Sie eine WXR-Datei hoch, um ihre Beitragstypen und Schema-Kompatibilität zu analysieren:

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

file: [WordPress export .xml]

Die Antwort enthält die Beitragstyp-Analyse mit Schema-Kompatibilität.

Schema vorbereiten

Erstellen Sie die Sammlungen und Felder für die ausgewählten Beitragstypen:

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

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

Import ausführen

Importieren Sie den Inhalt in die zugeordneten Sammlungen:

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

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

Medien importieren

Laden Sie die vom Import referenzierten Medienanhänge herunter und speichern Sie sie:

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

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

Die Antwort streamt NDJSON-Fortschrittsaktualisierungen während des Downloads und Uploads.

URLs umschreiben

Ersetzen Sie alte Medien-URLs in importierten Inhalten durch ihre gespeicherten Äquivalente:

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

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

Fehlerbehandlung

Behebbare Fehler

  • Netzwerk-Timeout — Mit Backoff wiederholt
  • Einzelner Element-Parse-Fehler — Protokolliert, übersprungen, Import wird fortgesetzt
  • Medien-Download-Fehler — Für manuelle Behandlung markiert

Fatale Fehler

  • Ungültiges Dateiformat — Import stoppt mit Fehlermeldung
  • Datenbankverbindung verloren — Import pausiert, erlaubt Wiederaufnahme
  • Speicherkontingent überschritten — Import stoppt, zeigt Nutzung an

Fehlerbericht

Nach Abschluss eines Imports zeigt EmDash eine Zusammenfassung von Erfolgen, Anpassungen und Fehlern:

Import abgeschlossen

✓ 125 Beiträge importiert
✓ 12 Seiten importiert
✓ 85 Medienreferenzen aufgezeichnet

⚠ 2 Elemente hatten Warnungen:
  - Beitrag "Special Characters ñ" - Titelkodierung behoben
  - Seite "About" - Doppelter Slug in "about-1" umbenannt

✗ 1 Element fehlgeschlagen:
  - Beitrags-ID 456 - Inhalts-Parse-Fehler (als Entwurf gespeichert)

Fehlgeschlagene Elemente werden als Entwürfe mit dem ursprünglichen Inhalt in _importError zur Überprüfung gespeichert.

Benutzerdefinierte Quellen

Um von einer Plattform zu importieren, die die integrierten Quellen nicht abdecken, implementieren Sie die ImportSource-Schnittstelle und registrieren Sie sie in der Integration:

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

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

Die Schnittstelle (probe, analyze, fetchContent) und die normalisierte Ausgabeform sind in Architektur (Internes) dokumentiert.

Nächste Schritte