📝 Introdução
Ao trabalhar com grandes volumes de posts e projetos de SEO em larga escala dentro do WordPress, me deparei com uma limitação importante:
O Rank Math SEO, apesar de ser um dos plugins mais robustos do mercado, não oferece endpoints nativos na REST API para atualização automática de seus metadados — especialmente para a palavra-chave de foco.
Foi a partir dessa limitação que nasceu o desafio:
-
Como criar um mecanismo capaz de automatizar a atualização de metadados de SEO no WordPress de forma programática e segura?
-
Como permitir a integração com ferramentas de automação como o n8n?
-
Como estender o próprio WordPress e o Rank Math para trabalhar em escala?
🚩 O Problema
O Rank Math salva suas informações principais de SEO como Custom Fields (post meta) no banco de dados do WordPress. Exemplos:
rank_math_title (Título SEO)
rank_math_description (Descrição SEO)
rank_math_focus_keyword (Palavra-chave de foco)
rank_math_canonical_url (Canonical URL)
📋 Pré-Requisitos
Antes de aplicar esta solução, você deve ter no seu WordPress:
1️⃣ Plugin oficial do Rank Math SEO instalado
-
O plugin
seo-by-rank-math
deve estar ativo.
2️⃣ Plugin personalizado desenvolvido neste artigo
-
O
Rank Math API Manager Extended
, que cria a extensão da REST API. -
Como veremos abaixo, você mesmo pode criar o plugin facilmente.
🔬 O Processo de Pesquisa
Durante semanas pesquisei materiais, incluindo:
-
Documentação oficial do WordPress REST API.
-
Estrutura de custom fields do Rank Math.
-
Arquivos internos do plugin Rank Math (
wpml-config.xml
). -
Fóruns da comunidade Rank Math:
-
Artigo técnico da TorqueMag sobre manipulação de custom fields via REST API:
Essas referências foram essenciais para entender que:
-
É possível registrar os meta fields do Rank Math na REST API usando o hook
register_post_meta
. -
É possível criar um endpoint personalizado usando o
register_rest_route
.
🔧 A Solução Técnica
A solução final foi criar um plugin próprio para WordPress, estendendo a API REST para incluir os campos desejados do Rank Math.
Assim, qualquer sistema externo (ex.: n8n, Zapier, Make, scripts próprios) pode consumir este endpoint para atualizar os metadados de SEO automaticamente.
🖥️ O Código Completo do Plugin
Crie um diretório no WordPress:
wp-content/plugins/rank-math-api/
E dentro dele, o arquivo:
rank-math-api.php
Com o seguinte código:
'Rank Math SEO Title',
'rank_math_description' => 'Rank Math SEO Description',
'rank_math_canonical_url' => 'Rank Math Canonical URL',
'rank_math_focus_keyword' => 'Rank Math Focus Keyword'
];
foreach ($meta_fields as $key => $description) {
register_post_meta('post', $key, [
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'auth_callback' => [$this, 'check_update_permission'],
'description' => $description,
]);
}
}
public function register_api_routes() {
register_rest_route('rank-math-api/v1', '/update-meta', [
'methods' => 'POST',
'callback' => [$this, 'update_rank_math_meta'],
'permission_callback' => [$this, 'check_update_permission'],
'args' => [
'post_id' => [
'required' => true,
'validate_callback' => function($param) {
return is_numeric($param) && get_post($param);
}
],
'rank_math_title' => [
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field',
],
'rank_math_description' => [
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field',
],
'rank_math_canonical_url' => [
'type' => 'string',
'sanitize_callback' => 'esc_url_raw',
],
'rank_math_focus_keyword' => [
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field',
],
],
]);
}
public function update_rank_math_meta(WP_REST_Request $request) {
$post_id = $request->get_param('post_id');
$fields = ['rank_math_title', 'rank_math_description', 'rank_math_canonical_url', 'rank_math_focus_keyword'];
$result = [];
foreach ($fields as $field) {
$value = $request->get_param($field);
if ($value !== null) {
$update_result = update_post_meta($post_id, $field, $value);
$result[$field] = $update_result ? 'updated' : 'failed';
}
}
if (empty($result)) {
return new WP_Error('no_update', 'No metadata was updated', ['status' => 400]);
}
return new WP_REST_Response($result, 200);
}
public function check_update_permission() {
return current_user_can('edit_posts');
}
}
new Rank_Math_API_Manager_Extended();
🌐 O Novo Endpoint Criado
Agora o WordPress possui o seguinte endpoint:
POST https://seudominio.com/wp-json/rank-math-api/v1/update-meta
🔐 Permissões
-
Apenas usuários autenticados com capacidade de
edit_posts
podem executar o endpoint. -
A autenticação pode ser feita via:
-
Application Passwords do WordPress (recomendado)
-
JWT Auth plugins
-
OAuth (para ambientes empresariais)
-
⚙️ Exemplo de Requisição HTTP no n8n
No n8n, o node de HTTP Request deve conter:
-
Método:
POST
-
URL:
https://seudominio.com/wp-json/rank-math-api/v1/update-meta
-
Auth: Basic Auth (com Application Password)
-
Body (JSON):
{
"post_id": "1437",
"rank_math_title": "Novo título SEO",
"rank_math_description": "Descrição otimizada",
"rank_math_canonical_url": "https://seudominio.com/post-canonical/",
"rank_math_focus_keyword": "Palavra-chave principal"
}
Pronto: o SEO do post é atualizado via API.
🚀 Os Benefícios
-
✅ Automatização de SEO em massa.
-
✅ Integração com IA (ex: gerar títulos via GPT-4 ou Perplexity e atualizar o WordPress automaticamente).
-
✅ Escalabilidade para grandes blogs, portais de notícias e e-commerces.
-
✅ Liberdade total de personalização da automação.
💡 Por que disponibilizei isso publicamente?
Após todo esse trabalho, tomei a decisão de:
-
Publicar o conhecimento como conhecimento aberto (Open Knowledge).
Acredito que:
Quanto mais gente tiver acesso, mais melhorias serão criadas a partir desse ponto de partida.
Quem quiser, pode usar, adaptar, melhorar e redistribuir, mantendo a referência de autoria da modificação.
📚 Referências Técnicas
🎥 Vídeo Explicativo
📺 Para quem deseja entender em detalhes como identifiquei o problema, fiz a pesquisa, desenvolvi e testei a solução, preparei um vídeo completo mostrando todo o processo na prática.
🔗 [Clique aqui para assistir ao vídeo completo.] (em breve…)
🖋️ Conclusão pessoal
Durante o desenvolvimento dessa solução, aprendi que muitos dos limites que as ferramentas impõem são superáveis com:
-
Estudo da arquitetura.
-
Coragem para explorar o core do WordPress.
-
Desenvolvimento incremental e seguro.
Espero que este conhecimento ajude outros desenvolvedores, SEOs e profissionais de automação a criarem soluções ainda mais criativas.