O EmDash importa conteúdo do WordPress e outras plataformas. Cada fonte de importação detecta uma plataforma, analisa seu conteúdo e o busca para o seu site.
Fontes de Importação
| ID da Fonte | Plataforma | Sonda | OAuth | Importação Completa |
|---|---|---|---|---|
wxr | Arquivo de exportação WordPress | Não | Não | Sim |
wordpress-com | WordPress.com | Sim | Sim | Sim |
wordpress-rest | WordPress auto-hospedado | Sim | Não | Apenas sonda |
Upload de Arquivo WXR
O método de importação mais completo. Faça o upload de um arquivo de exportação WordPress eXtended RSS (WXR) diretamente para o painel administrativo.
Capacidades:
- Todos os tipos de post (incluindo personalizados)
- Todos os campos meta
- Rascunhos e posts privados
- Hierarquia completa de taxonomia
- Metadados de anexos de mídia
Como obter um arquivo WXR:
- No admin do WordPress, vá para Ferramentas → Exportar
- Selecione Todo o conteúdo ou tipos de post específicos
- Clique em Baixar Arquivo de Exportação
- Faça upload do arquivo
.xmlpara o EmDash
OAuth do WordPress.com
Para sites hospedados no WordPress.com, conecte via OAuth para importar sem exportações manuais de arquivo.
- Digite a URL do seu site WordPress.com
- Clique em Conectar com WordPress.com
- Autorize o EmDash no popup do WordPress.com
- Selecione o conteúdo para importar
O que está incluído:
- Conteúdo publicado e rascunhos
- Posts privados (com autorização)
- Arquivos de mídia via API
- Campos personalizados expostos à API REST
Sonda da API REST do WordPress
Quando você digita uma URL, o EmDash sonda o site para detectar o WordPress e mostrar o conteúdo disponível:
Detectado: WordPress 6.4
├── Posts: 127 (publicados)
├── Páginas: 12 (publicadas)
└── Mídia: 89 arquivos
Nota: Rascunhos e conteúdo privado requerem autenticação
ou uma exportação WXR completa.
A sonda REST é informativa. Para importações completas, sugere fazer upload de um arquivo WXR ou conectar via OAuth (para WordPress.com).
Fluxo de Importação
Todas as fontes seguem o mesmo fluxo:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Conectar │────▶│ Analisar │────▶│ Preparar │────▶│ Executar │
│ (sondar/ │ │ (verificar │ │ (criar │ │ (importar │
│ upload) │ │ esquema) │ │ esquema) │ │ conteúdo) │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
Passo 1: Conectar
Digite uma URL para sondar ou faça upload de um arquivo diretamente.
A sondagem de URL executa todas as fontes registradas em paralelo. A correspondência com maior confiança determina a próxima ação sugerida:
- Site WordPress.com → Oferecer conexão OAuth
- WordPress auto-hospedado → Mostrar instruções de exportação
- Desconhecido → Sugerir upload de arquivo
Passo 2: Analisar
A fonte analisa o conteúdo e verifica a compatibilidade do esquema:
Tipos de Post:
├── post (127) → posts [Nova coleção]
├── page (12) → pages [Existente, compatível]
├── product (45) → products [Adicionar 3 campos]
└── revision (234) → [Pular - tipo interno]
Alterações de Esquema Necessárias:
├── Criar coleção: posts
├── Adicionar campos a pages: featured_image
└── Criar coleção: products
Cada tipo de post mostra seu status:
| Status | Significado |
|---|---|
| Pronto | Coleção existe com campos compatíveis |
| Nova coleção | Será criada automaticamente |
| Adicionar campos | Coleção existe, campos faltantes são adicionados |
| Incompatível | Conflitos de tipo de campo (correção manual necessária) |
Passo 3: Preparar Esquema
Clique em Criar Esquema e Importar para:
- Criar novas coleções
- Adicionar campos faltantes com os tipos de coluna corretos
- Configurar tabelas de conteúdo com índices
Passo 4: Executar Importação
O conteúdo é importado sequencialmente:
- Gutenberg/HTML convertido para Portable Text
- Status do WordPress mapeado para status do EmDash
- Autores do WordPress mapeados para propriedade (
authorId) e assinaturas de apresentação - Taxonomias criadas e vinculadas
- Blocos reutilizáveis (
wp_block) importados como Seções - Progresso mostrado em tempo real
Comportamento de importação de autores:
- Se um mapeamento de autor aponta para um usuário EmDash, a propriedade é definida para esse usuário e uma assinatura vinculada é criada/reutilizada para o mesmo usuário.
- Se não houver mapeamento de usuário, uma assinatura convidada é criada/reutilizada da identidade do autor do WordPress.
- Entradas importadas recebem créditos de assinatura ordenados, com o primeiro crédito definido como
primaryBylineId.
Passo 5: Importação de Mídia (Opcional)
Após o conteúdo, opcionalmente importe mídia:
-
Análise — Mostra contagens de anexos por tipo
Mídia encontrada: ├── Imagens: 75 arquivos ├── Vídeo: 10 arquivos └── Outro: 4 arquivos -
Download — Transmite de URLs do WordPress com progresso
Importando mídia... ├── 45 de 89 (50%) ├── Atual: vacation-photo.jpg └── Status: Enviando -
Reescrever URLs — Conteúdo atualizado automaticamente com novas URLs
A importação de mídia usa hash de conteúdo (xxHash64) para deduplicação. A mesma imagem usada em vários posts é armazenada uma vez.
Endpoints da API
O sistema de importação expõe estes endpoints:
Sondar URL
Detecte a plataforma por trás de uma URL com uma solicitação de sonda:
POST /_emdash/api/import/probe
Content-Type: application/json
{ "url": "https://example.com" }
A resposta contém a plataforma detectada e a ação sugerida.
Analisar WXR
Faça upload de um arquivo WXR para analisar seus tipos de post e compatibilidade de esquema:
POST /_emdash/api/import/wordpress/analyze
Content-Type: multipart/form-data
file: [Exportação WordPress .xml]
A resposta contém a análise dos tipos de post com compatibilidade de esquema.
Preparar Esquema
Crie as coleções e campos para os tipos de post selecionados:
POST /_emdash/api/import/wordpress/prepare
Content-Type: application/json
{
"postTypes": [
{ "name": "post", "collection": "posts", "enabled": true }
]
}
Executar Importação
Importe o conteúdo para as coleções mapeadas:
POST /_emdash/api/import/wordpress/execute
Content-Type: multipart/form-data
file: [Exportação WordPress .xml]
config: { "postTypeMappings": { "post": { "collection": "posts" } } }
Importar Mídia
Baixe e armazene os anexos de mídia referenciados pela importação:
POST /_emdash/api/import/wordpress/media
Content-Type: application/json
{
"attachments": [{ "id": 123, "url": "https://..." }],
"stream": true
}
A resposta transmite atualizações de progresso NDJSON durante o download e upload.
Reescrever URLs
Substitua URLs de mídia antigas no conteúdo importado por seus equivalentes armazenados:
POST /_emdash/api/import/wordpress/rewrite-urls
Content-Type: application/json
{
"urlMap": { "https://old.com/image.jpg": "/_emdash/media/abc123" }
}
Tratamento de Erros
Erros Recuperáveis
- Timeout de rede — Retentado com backoff
- Falha de análise de item único — Registrado, pulado, importação continua
- Falha de download de mídia — Marcado para tratamento manual
Erros Fatais
- Formato de arquivo inválido — Importação para com mensagem de erro
- Conexão com banco de dados perdida — Importação pausa, permite retomada
- Cota de armazenamento excedida — Importação para, mostra uso
Relatório de Erros
Após uma importação ser concluída, o EmDash mostra um resumo do que teve sucesso, do que foi ajustado e do que falhou:
Importação Concluída
✓ 125 posts importados
✓ 12 páginas importadas
✓ 85 referências de mídia registradas
⚠ 2 itens tiveram avisos:
- Post "Special Characters ñ" - codificação do título corrigida
- Página "About" - slug duplicado renomeado para "about-1"
✗ 1 item falhou:
- ID do Post 456 - erro de análise de conteúdo (salvo como rascunho)
Itens que falharam são salvos como rascunhos com o conteúdo original em _importError para revisão.
Fontes personalizadas
Para importar de uma plataforma que as fontes integradas não cobrem, implemente a interface ImportSource e registre-a na integração:
import { mySource } from "./src/import/custom-source";
export default defineConfig({
integrations: [
emdash({
import: { sources: [mySource] },
}),
],
});
A interface (probe, analyze, fetchContent) e a forma de saída normalizada estão documentadas em Arquitetura (internos).
Próximos Passos
- Migração do WordPress — Guia completo de migração do WordPress
- Porte de Plugins — Porte plugins do WordPress para EmDash