--- name: rank-math description: Gestão programática do Rank Math SEO (Free e PRO) via WP-CLI em servidores CWP. Cobre auditoria SEO, meta em massa, schema markup, redirects, sitemaps, Instant Indexing, Analytics PRO, hooks/filtros, taxonomias WooCommerce, News/Video Sitemap, validação e rollback. Usar quando "rank math", "seo cli", "schema markup", "redirects seo", "instant indexing", "indexnow", "seo bulk", "rankmath pro". layer: wiki --- # /rank-math — Gestão Programática Rank Math SEO via WP-CLI Operações SEO WordPress completas via WP-CLI no servidor CWP. Free + PRO. **Manual completo:** `Hub/06-Operacoes/Documentacao/Manuais/WP-CLI/Rank-Math-WP-CLI-Manual-Definitivo.md` **Quick Reference:** `Hub/06-Operacoes/Documentacao/Quick-Reference/QR-RankMath-WP-CLI.md` **Pesquisa Claude:** `Hub/06-Operacoes/Documentacao/Manuais/WP-CLI/Rank-Math-SEO-WP-CLI-Skils-Pesquisa-Claude.md` **Pesquisa Gemini:** `Hub/06-Operacoes/Documentacao/Manuais/WP-CLI/Rank-Math-SEO-WP-CLI-Skills-Pesquisa-Gemini.md` **NotebookLM:** [WordPress Config CLI](https://notebooklm.google.com/notebook/fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d) **Skill relacionada:** `/seo-post` — optimizar posts individuais com pipeline completo --- ## Contexto NotebookLM ANTES de executar, consultar notebooks para contexto especializado: | Notebook | ID | Consultar quando | |----------|-----|-----------------| | WordPress e Elementor | 5be0d1a6 | Sempre | | Marketing Digital PT | 4c595973 | Para contexto SEO | ``` mcp__notebooklm__notebook_query({ notebook_id: "5be0d1a6-00f2-4cd9-b835-978cb7721601", query: "" }) ``` --- ## Uso ``` /rank-math audit SITE_PATH /rank-math update-meta SITE_PATH /rank-math sitemap SITE_PATH /rank-math redirects SITE_PATH /rank-math schema post ID SITE_PATH /rank-math indexing SITE_PATH [URL|bulk] /rank-math analytics SITE_PATH /rank-math taxonomy SITE_PATH /rank-math hooks SITE_PATH /rank-math backup SITE_PATH /rank-math provision SITE_PATH ``` --- ## Contexto CWP — sempre obrigatorio ```bash # Formato base (PHP 8.3) /opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=/home/USER/public_html # Alias wp83 --allow-root --path=/home/USER/public_html ``` **Acesso via MCP SSH:** ``` servidor: server.descomplicar.pt (176.9.3.158) | porta: 9443 | user: root ``` **Prefixo de tabelas:** Sites podem ter prefixo custom (ex: `wpah_` em vez de `wp_`). Detectar primeiro: ```bash PREFIX=$(wp db prefix --allow-root --path=$PATH) # Usar $PREFIX em todas as queries SQL: ${PREFIX}posts, ${PREFIX}postmeta, etc. ``` **Unico comando nativo Rank Math:** ```bash wp rankmath sitemap generate --allow-root --path=$PATH ``` Tudo o resto usa `wp post meta`, `wp option patch`, `wp eval` ou `wp db query`. **Options com defaults:** Muitas sub-keys (title_separator, strip_category_base, homepage_title, knowledgegraph_type) podem nao existir na BD se nunca foram alteradas — o Rank Math usa valores por defeito internos. `wp option pluck` retorna exit code 1 neste caso. Nao e erro — significa valor default. --- ## Decision tree — qual comando usar | Operacao | Comando | |----------|---------| | Alterar meta de 1 post | `wp post meta update` | | Alterar sub-key em option serializada | `wp option patch update` | | Ler sub-key de option | `wp option pluck` | | Schema complexo | `wp eval` com PHP | | Redirects | `wp eval` com `\RankMath\Redirections\DB` | | Bulk simples | shell loop com `wp post list \| while read` | | Bulk complexo | `wp eval-file` com script PHP | | SQL directo | apenas auditorias (seguido de `wp cache flush`) | | Regenerar sitemap | `wp rankmath sitemap generate` | | Instant Indexing | `wp eval` com IndexNow API ou classes RM | | Side-effects RM | `wp eval` com `update_option()` (dispara hooks) | --- ## 1. Auditoria SEO (/rank-math audit) ### Passo 1 — diagnostico rapido ```bash PATH=/home/USER/public_html PREFIX=$(wp db prefix --allow-root --path=$PATH) # Posts sem titulo SEO wp db query "SELECT p.ID, p.post_title FROM ${PREFIX}posts p LEFT JOIN ${PREFIX}postmeta pm ON p.ID=pm.post_id AND pm.meta_key='rank_math_title' WHERE p.post_type='post' AND p.post_status='publish' AND (pm.meta_value IS NULL OR pm.meta_value='');" --allow-root --path=$PATH # Posts sem descricao SEO wp db query "SELECT p.ID, p.post_title FROM ${PREFIX}posts p LEFT JOIN ${PREFIX}postmeta pm ON p.ID=pm.post_id AND pm.meta_key='rank_math_description' WHERE p.post_type='post' AND p.post_status='publish' AND (pm.meta_value IS NULL OR pm.meta_value='');" --allow-root --path=$PATH # Distribuicao de SEO scores wp db query "SELECT CASE WHEN CAST(meta_value AS UNSIGNED) >= 80 THEN 'Bom (80-100)' WHEN CAST(meta_value AS UNSIGNED) >= 50 THEN 'OK (50-79)' ELSE 'Fraco (0-49)' END AS faixa, COUNT(*) AS total FROM ${PREFIX}postmeta WHERE meta_key = 'rank_math_seo_score' GROUP BY faixa;" --allow-root --path=$PATH # Top 404s (ultimos 30 dias) wp db query "SELECT uri, SUM(times_acce