Files
Claude Code 4a55d51329 feat(wordpress): EMCP Tools workflow skills + widget catalogs + pending wordpress skills
- emcp-page-building, emcp-content-ops, emcp-site-audit: EMCP Tools MCP
  workflows verified live (atomic/legacy interplay, apply-template overwrite
  risk, create-theme-template goes live immediately, false-positive malware
  pattern in scan-security, change ledger + rollback)
- elementor-pro-widgets: 30+5 native Elementor Pro widgets (curated catalog)
- elementskit-widgets / powerpack-widgets: 42 + 97 third-party widgets,
  widgetType extracted from plugin source (not guessed by convention)
- plugin.json bumped 1.2.0 -> 1.3.0, keywords + description updated
- commits pending wordpress skills already present as untracked files
  (emcp-tools, wordfence, wp-activity-log, seguranca-descomplicar,
  webp-express, wp-fastest-cache, wp-font-perf, wp-meteor,
  wp-activity-log, redis-object-cache, app-for-cloudflare) and pending
  edits (rank-math, wp-cli, wp-content-seo-gate)
2026-08-19 03:44:00 +01:00

7.4 KiB

name, description, layer
name description layer
emcp-content-ops Gestão de conteúdo WordPress (posts/pages/CPTs, taxonomias, media, menus, redirects, blocos Gutenberg, pesquisa de conteúdo) via qualquer ligação MCP EMCP Tools — distinto de construção de páginas Elementor (ver emcp-page-building) ou auditoria de segurança/performance (ver emcp-site-audit). Usar quando "gerir conteúdo wordpress via mcp", "emcp posts", "upload media mcp", "menus wordpress mcp", "redirects mcp", "blocos gutenberg mcp". wiki

/emcp-content-ops — Operações de Conteúdo WordPress via EMCP Tools

Aplica-se a qualquer ligação MCP EMCP Tools. Confirma sempre o site alvo com core/get-site-info — nunca assumir pelo nome da ligação.

Posts / Pages / CPTs

  • list-post-types primeiro num site desconhecido — os CPTs variam muito (visto ao vivo: e-landing-page, podcast, elementor_library, elementskit_content/elementskit_template além dos standard post/page).
  • create-post({ post_type, title, content, status, slug, author, date, parent, terms, meta, featured_image }) escreve post_content (HTML clássico ou markup de blocos Gutenberg) — não dados Elementor. Para uma página construída em Elementor usar create-page (ver emcp-page-building); create-post explicitamente não toca em dados Elementor.
  • get-post/list-posts/update-post/delete-post/set-post-terms. is_elementor em get-post/list-posts diz qual editor é dono de determinada página — nunca editar o conteúdo de uma página Elementor via update-post.
  • delete-post vai para o Lixo por omissão (reversível); force:true para eliminação permanente. Devolve também um redirect_suggestion a lembrar de chamar create-redirect para o URL agora morto — agir sobre isso em conteúdo publicado, ignorar em rascunhos/conteúdo de teste.
  • set-post-terms({ mode: replace|append|remove, create_missing }) — create_missing:true deixa um termo de taxonomia permanente se não houver tool de eliminação de termos montada na ligação (comummente o caso). Confirmar nomes de termos antes de usar em conteúdo descartável.

Media

  • list-media/get-media para a biblioteca existente (pesquisa por título/alt/legenda/descrição) antes de recorrer a fotos de stock — reutilizar o que já existe.
  • upload-media({ filename, data: base64, alt, title, caption, description }) — bytes vindos do cliente, não de um URL. sideload-image(url) — o servidor vai buscar um URL que consegue alcançar. Casos de uso diferentes, não confundir.
  • search-images/add-stock-image (Unsplash/Pexels/Pixabay) exigem uma chave API do provedor configurada em EMCP Tools → Connection nesse site específico — verificar que está configurada antes de planear um workflow em torno disso; um site sem nenhuma configurada devolve um erro simples "sem chave API", não é uma falha da tool em si.
  • delete-media está comummente no deny-list (destrutivo, o WordPress ignora o Lixo para media por omissão). Se não estiver montada para esta ligação, qualquer upload é efectivamente permanente via MCP — obter confirmação explícita antes de fazer upload, e verificar primeiro se está montada.
  • update-media para correcções de alt text/título/legenda/descrição — seguro, não-destrutivo, boa opção por omissão para passagens de limpeza de acessibilidade/SEO.

Menus

menu-read/menu-write são tools despachadoras — chamar sem argumento operation primeiro para obter a lista de operações de leitura/escrita disponíveis e as formas exactas de argumento para a versão do plugin nessa ligação, depois chamar de novo com { operation, arguments }. Não adivinhar nomes de operação.

Redirects

list-redirects/find-broken-links são só-leitura e comummente activas por omissão. create-redirect/update-redirect/delete-redirect estão comummente no deny-list em sites de produção (mutação de routing com impacto directo em SEO) — verificar se estão montadas antes de assumir que se pode agir sobre um achado de link partido; se não estiverem, reportar o achado e deixar o utilizador criar o redirect via wp-admin ou um canal WP-CLI.

find-broken-links é só-leitura e seguro de correr a qualquer momento — propõe correcções, não muda nada. Bom primeiro passo antes de qualquer trabalho de redirects.

Blocos Gutenberg (independente do Elementor)

  • list-blocks/get-block-schema (batch via names[]) → add-block (markup bruto, position.mode: append|prepend|before|after|inside) é o padrão descobrir → schema → aplicar.
  • get-post-blocks devolve um PATH em índice por bloco (ex. [2,1]) — chamar sempre isto imediatamente antes de update-block/remove-block/move-block/duplicate-block para obter os paths actuais; os paths mudam após cada edição, não fazer cache entre chamadas.
  • list-patterns/insert-pattern para composições de blocos pré-construídas.
  • Estas tools operam sobre post_content, por isso são a camada certa para posts/CPTs clássicos que não usam Elementor — não para páginas Elementor (is_elementor: true), que não têm árvore de blocos Gutenberg significativa.

Pesquisa/reutilização de conteúdo

search-content(query) — pesquisa tipo linguagem natural sobre páginas/templates/widgets/estilos globais, ordenada por relevância. Faz correspondência a substrings/tokens literais no conteúdo indexado, não pesquisa semântica difusa — uma query com uma palavra ausente verbatim de qualquer título/conteúdo devolve zero resultados mesmo que o conceito esteja presente. Se os resultados parecerem desactualizados (edições recentes não reflectidas), chamar reindex-search primeiro — o índice também actualiza incrementalmente ao gravar, por isso um reindex completo só é preciso na primeira construção ou para forçar um refresh. Usar isto antes de construir conteúdo novo, para encontrar e reutilizar/clonar uma página/template/widget existente em vez de duplicar trabalho.

Plugins / Temas / Utilizadores / Definições (nível só-leitura, quase universal)

  • list-plugins/search-plugins, list-themes/search-themes, list-users/get-user — listagem e pesquisa comummente activas; instalar/activar/desactivar/actualizar/eliminar plugins ou temas, e criar/actualizar utilizadores, estão comummente no deny-list (categorias de maior risco depois de execução de código). Verificar o que está realmente montado antes de prometer que uma mutação é possível.
  • get-settings/update-settings — um subconjunto curado e allowlisted de definições WordPress (Geral/Leitura/Escrita/Discussão/Media/Permalinks), não wp_options bruto. update-settings reporta chaves ignoradas (skipped) com a razão (só-leitura, não allowlisted, valor inválido) em vez de falhar todo o lote — verificar o array skipped, não assumir que todas as chaves passadas foram aplicadas.
  • theme-read/theme-write e leitores específicos de framework (ex. astra-read, quando o Astra é o tema activo — só regista se esse tema estiver activo) são tools despachadoras também: chamar sem operation primeiro para descobrir o que está disponível no tema específico desse site.

Referência cruzada

  • emcp-page-building — construção/edição específica de Elementor (atómico + legacy).
  • emcp-site-audit — scan de segurança, análise de performance, acesso só-leitura a BD/filesystem, ledger de mudanças + rollback.