Google Indexing API para Magento 2
Requer alterações no modelo
Não
Pequenas alterações
Alterações significativas
Requer conhecimentos de programação
Não
Básico
Avançado
Dificuldade de configuração
Impacto no desempenho
Conformidade com os padrões do Magento
Informar o Google mais rapidamente sobre alterações na loja
O módulo Kowal Google Indexing API para Magento 2 ajuda a comunicar ao Google, de forma mais eficiente, os URLs que foram adicionados, alterados ou que devem ser removidos do índice. Em vez de esperar apenas pela revisita padrão da página pelo robô do Google, o administrador pode enviar URLs selecionados para a fila gerida pelo Google Indexing API.
A solução é especialmente útil em lojas onde conteúdos, oferta, disponibilidade de produtos, páginas CMS, landing pages ou artigos de blog mudam com frequência. O módulo organiza todo o processo: recolhe URLs de diferentes áreas do Magento, verifica-os, remove duplicados, controla os limites e guarda o histórico de comunicação com o Google.
O Google Indexing API destina-se oficialmente sobretudo a páginas com dados estruturados
JobPostingeBroadcastEvent. O envio de um URL via API não garante indexação, posições nos resultados nem a aceitação de todos os endereços pelo Google. O módulo é uma ferramenta de apoio ao envio técnico de URLs, e não um substituto de SEO técnico correto, sitemap XML, canonicals, robots, hreflang e linking interno.
Principais vantagens
Melhor controlo sobre o envio de endereços
O módulo oferece ao administrador um único local para gerir os URLs que aguardam envio para o Google. Produtos, categorias, páginas CMS, importação manual de URLs e futuras fontes podem usar a mesma fila. Assim, não é necessário criar integrações separadas para cada tipo de conteúdo.
Menos trabalho manual após alterações na loja
Os endereços podem ser adicionados à fila diretamente a partir do painel de administração do Magento. O módulo disponibiliza ações em massa e botões nos ecrãs de edição de entidades selecionadas, permitindo ao administrador solicitar rapidamente a indexação de uma página individual ou de um grupo maior de URLs.
Utilização mais segura dos limites da API
O Google Indexing API funciona com limites. O módulo considera os limites diários e por minuto, o tamanho do lote processado pelo cron e o atraso de envio. Desta forma, os URLs não são enviados de forma caótica e é mais fácil reduzir o risco de consumo desnecessário do limite disponível.
Menos duplicados e envios repetidos
Antes de guardar um endereço, o módulo normaliza o URL, valida-o e verifica se o mesmo endereço já não está na fila ativa. Se já existir um envio semelhante, o sistema pode atualizá-lo ou marcá-lo como deduplicado. Isto reduz a desorganização na fila e diminui o número de requests desnecessários para o Google.
Maior transparência para a equipa
Cada envio tem estado, origem, ação, prioridade, número de tentativas, data de envio planeada e informações sobre a resposta do Google. O administrador vê quais os endereços que estão pendentes, quais foram enviados com sucesso, quais requerem nova tentativa e quais terminaram com erro permanente.
Diagnóstico de problemas mais simples
O módulo guarda logs da comunicação com o Google API, incluindo tipo de request, endereço do endpoint, payload, estado HTTP, conteúdo da resposta e duração. Isto facilita a análise de erros de configuração, permissões, limites ou dos próprios URLs enviados.
Preparado para o crescimento da loja
A arquitetura do módulo baseia-se num scheduler comum e numa fila. Novas fontes de URLs não precisam de comunicar diretamente com o Google. Basta encaminharem os endereços para a fila, e o processador existente tratará da validação, agendamento, limites, novas tentativas e logging.
Como o módulo funciona na prática
O módulo funciona como uma camada intermédia entre o Magento e o Google Indexing API.
- O administrador ou a integração seleciona os URLs a enviar.
- O módulo normaliza e valida os URLs, incluindo esquema, host e fontes permitidas.
- Os endereços válidos entram na fila central com o respetivo estado, ação e data de envio.
- O cron do Magento recolhe ciclicamente os registos prontos para processamento.
- O processador da fila respeita limites, prioridades, atrasos e bloqueios dos registos.
- O módulo envia o pedido para o Google Indexing API ou executa o processamento em modo dry-run.
- A resposta do Google é guardada no registo da fila e nos logs da API.
- Em caso de erros temporários, o módulo pode agendar nova tentativa com atraso.
Assim, o envio de URLs não depende de um único clique nem de um request direto a partir do painel de administração. Todo o processo é colocado em fila, auditável e mais resistente a problemas temporários da API.
Principais funcionalidades
- fila central de URLs para diferentes fontes de conteúdo,
- suporte para as ações
URL_UPDATEDeURL_DELETED, - importação manual de vários URLs a partir do painel de administração,
- ações em massa para produtos e páginas CMS,
- botões para envio de indexação nos ecrãs de edição de produto, categoria e página CMS,
- integração opcional com Amasty Blog como módulo separado,
- normalização e validação de URLs,
- whitelist de hosts permitidos,
- suporte de store view e identificação da origem do envio,
- deduplicação de envios ativos,
- atraso de envio, ou seja, indexing lag,
- prioridades e ação
Transmit Now, - processamento por cron,
- controlo do limite diário e por minuto,
- nova tentativa de erros temporários com atraso,
- estados da fila:
scheduled,pending,processing,success,retry,failed_permanent,cancelled, - modo dry-run para testes seguros sem enviar requests reais,
- logs da API e retenção de logs,
- test credentials e metadata no assistente de configuração.
Para quem é este módulo
O módulo é indicado para lojas Magento 2 que:
- atualizam frequentemente a oferta de produtos,
- publicam ou alteram muitas páginas CMS,
- desenvolvem ações de SEO em vários tipos de conteúdo,
- precisam de controlo sobre quais URLs foram enviados ao Google,
- querem reduzir a gestão manual dos envios,
- trabalham em ambiente multistore ou multilanguage,
- precisam de uma auditoria clara aos requests enviados ao Google.
Esta solução é especialmente valiosa para equipas de e-commerce, SEO e administração que pretendem ter um processo comum e organizado para comunicar alterações da loja ao Google.
Exemplos de utilização
Produtos novos ou alterados
Depois de adicionar um novo produto ou de efetuar uma alteração relevante num produto existente, o administrador pode encaminhar o respetivo endereço para a fila. O módulo trata do registo do envio, do atraso adequado, da deduplicação e do envio posterior.
Atualização de páginas CMS e landing pages
Quando a equipa de marketing publica uma nova campanha, promoção ou página informativa, o URL pode ser adicionado à fila sem trabalho manual fora do Magento.
Organização de endereços após alterações no site
O módulo suporta não só envios de atualização, mas também a ação URL_DELETED. Assim, é possível comunicar ao Google os endereços que devem ser removidos do índice, desde que esse cenário esteja de acordo com as regras de utilização da API.
Ações SEO em massa
Em alterações maiores na loja, como atualização de muitos produtos, migração de conteúdos ou renovação de categorias, o administrador pode utilizar ações em massa e acompanhar o progresso na fila.
Impacto no negócio
A implementação do módulo dá à equipa maior controlo sobre o envio técnico de alterações ao Google. Em vez de ações dispersas, manuais e difíceis de verificar, passa a existir um único processo: o endereço entra na fila, é validado, enviado com respeito pelos limites e o resultado fica visível no painel de administração.
O principal valor do módulo é organizar o trabalho em torno da indexação: menos requests aleatórios, menos duplicados, melhor diagnóstico e responsabilidade mais clara sobre o que foi enviado ao Google.
Google Indexing API para Magento 2 - instalação e configuração
1. Informações importantes antes da implementação
O módulo integra o Magento 2 com o Google Indexing API e permite adicionar URLs a uma fila central de envios. A fila é processada pelo cron do Magento, e cada envio é validado, deduplicado, sujeito a limites e registado em log.
De acordo com a documentação do Google, o Indexing API destina-se oficialmente principalmente a páginas com dados estruturados:
JobPosting,BroadcastEventincorporado emVideoObject.
A utilização da API para produtos, categorias, páginas CMS ou artigos de blog não garante indexação nem posições nos resultados de pesquisa. O módulo deve ser tratado como uma ferramenta técnica para enviar URLs, e não como substituto de sitemap XML, canonicals corretos, robots, hreflang, linking interno e qualidade geral de SEO.
Materiais oficiais do Google:
- https://developers.google.com/search/apis/indexing-api/v3/quickstart
- https://developers.google.com/search/apis/indexing-api/v3/prereqs
- https://developers.google.com/search/apis/indexing-api/v3/using-api
- https://developers.google.com/search/apis/indexing-api/v3/quota-pricing
2. Requisitos
Antes da instalação, certifique-se de que o ambiente cumpre os requisitos:
- Magento 2.4.x,
- PHP 8.1 ou mais recente,
- Composer,
- cron do Magento funcional,
- possibilidade de instalar o pacote
google/apiclient, - acesso administrativo ao Magento,
- projeto Google Cloud com Indexing API ativado,
- propriedade no Google Search Console verificada para o domínio da loja,
- conta de serviço Google adicionada como proprietária no Google Search Console.
O módulo requer o pacote:
google/apiclient:^2.16O pacote está declarado no composer.json do módulo, por isso o Composer deve instalá-lo automaticamente.
3. Instalação do módulo
3.1. Instalação via Composer a partir de repositório VCS
Se o módulo for instalado a partir de um repositório Git privado ou público, adicione o repositório ao projeto Magento:
composer config repositories.kowal.google.indexing.api vcs https://github.com/kowalco/google-indexing-apiSe o repositório for privado, configure o token GitHub:
composer config --global --auth github-oauth.github.com Instale o pacote:
composer require kowal/module-google-indexing-apiAtive o módulo:
bin/magento module:enable Kowal_GoogleIndexingApiExecute a atualização do esquema da base de dados:
bin/magento setup:upgradeLimpe a cache:
bin/magento cache:flushEm modo de produção, execute adicionalmente:
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.2. Instalação local em app/code
Se o módulo for instalado sem Composer como código local, coloque-o no diretório:
app/code/Kowal/GoogleIndexingApiEm seguida, instale a dependência Google API Client no projeto Magento:
composer require google/apiclient:^2.16Ative o módulo e execute os comandos padrão do Magento:
bin/magento module:enable Kowal_GoogleIndexingApibin/magento setup:upgradebin/magento cache:flushPara produção:
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.3. Verificação da instalação
Verifique se o módulo está ativo:
bin/magento module:status Kowal_GoogleIndexingApiApós a instalação correta, no painel de administração deverão estar disponíveis:
Stores > Configuration > Kowal > Google Indexing API,- menu administrativo
Google Indexing API > Indexing Queue, Google Indexing API > Import URLs,Google Indexing API > API Logs,Google Indexing API > Setup Assistant.
Na base de dados deverão ser criadas as tabelas:
kowal_google_indexing_queue,kowal_google_indexing_api_log.
4. Preparação do Google Cloud e Search Console
4.1. Criar o projeto Google Cloud
- Aceda ao Google Cloud Console.
- Crie um novo projeto ou selecione um projeto existente usado para a loja.
- Ative a API:
Indexing APISem a API ativada, o módulo não poderá enviar os pedidos corretamente.
4.2. Criar a conta de serviço
- No Google Cloud, aceda a
IAM & Admin > Service Accounts. - Crie uma nova conta de serviço.
- Gere uma chave em formato JSON.
- Transfira o ficheiro JSON e guarde-o em segurança.
O módulo exige que o JSON contenha, no mínimo, os campos:
type,project_id,private_key,client_email.
O campo type deve ter o valor:
service_account4.3. Adicionar a conta de serviço como proprietária no Search Console
- Abra o Google Search Console.
- Selecione a propriedade correspondente ao domínio da loja.
- Certifique-se de que a propriedade está verificada.
- Adicione o endereço
client_emaildo ficheiro JSON como proprietário da propriedade.
Exemplo de endereço da conta de serviço:
my-service-account@project-name.iam.gserviceaccount.comSe a conta de serviço não for proprietária da propriedade do Search Console, o Google poderá devolver erros de permissões, por exemplo, ausência de confirmação de propriedade do URL.
5. Configuração do módulo no Magento
A configuração encontra-se em:
Stores > Configuration > Kowal > Google Indexing APIA configuração suporta os âmbitos do Magento:
- Default Config,
- Website,
- Store View.
Assim, é possível ter definições separadas para diferentes lojas ou vistas de loja, caso o projeto o exija.
6. Secção General
Enable
Predefinição:
NoAtiva ou desativa o funcionamento do módulo.
Quando o campo tem o valor No, o cron não processa a fila. Os endereços podem existir na base de dados, mas o processador da fila não os enviará ao Google.
Recomendação:
- durante a configuração inicial, defina
Noou mantenhaDry Run = Yes, - após testes bem-sucedidos, defina
Yes.
Dry Run
Predefinição:
YesModo de teste. Quando Dry Run está ativo, o módulo processa os registos da fila, guarda estados e logs, mas não envia pedidos reais ao Google.
Este é o modo mais seguro para o primeiro arranque, testes de configuração e verificação de que os URLs entram na fila conforme esperado.
Recomendação:
- faça sempre os primeiros testes com
Dry Run = Yes, - desative
Dry Runapenas depois de verificar credentials, allowed hosts, fila e logs.
7. Secção Google Access Credentials
Credentials Source
Predefinição:
Encrypted configuration valueDefine de onde o módulo obtém o JSON da conta de serviço Google.
Opções disponíveis:
| Opção | Valor técnico | Descrição |
|---|---|---|
Encrypted configuration value | config | O JSON é colado na configuração do Magento e guardado como valor cifrado sensitive config. |
Uploaded JSON file | file | O JSON é carregado como ficheiro e guardado fora do diretório pub, em var/google-indexing. |
Recomendação:
- para implementações simples pode usar-se o valor cifrado na configuração,
- para ambientes com controlo de acesso a ficheiros, o upload do ficheiro JSON pode ser mais prático.
Service Account JSON
Visível quando Credentials Source = Encrypted configuration value.
Neste campo deve ser colado o conteúdo completo do ficheiro JSON da conta de serviço Google.
O módulo valida o JSON antes de o guardar. São verificados:
- correção do formato JSON,
- presença dos campos
type,project_id,private_key,client_email, - valor
type = service_account.
O valor é guardado como configuração cifrada do Magento.
Service Account JSON File
Visível quando Credentials Source = Uploaded JSON file.
Permite carregar o ficheiro JSON da conta de serviço Google.
O módulo:
- aceita apenas ficheiros com extensão
.json, - valida o conteúdo do ficheiro,
- verifica os campos obrigatórios
type,project_id,private_key,client_email, - guarda o ficheiro fora do diretório público, em
var/google-indexing, - tenta definir as permissões do ficheiro para
0600, se o driver de ficheiros o permitir.
O ficheiro é guardado com um nome dependente do âmbito de configuração, por exemplo, para o âmbito global:
var/google-indexing/service-account-default-0.jsonGoogle Cloud Project ID
Campo de texto para o identificador do projeto Google Cloud.
Na implementação atual do módulo, a autorização principal baseia-se nos dados do JSON da conta de serviço. O campo Google Cloud Project ID desempenha uma função informativa e ajuda a organizar a configuração, especialmente quando a loja usa vários ambientes ou vários projetos Google Cloud.
Recomendação:
- introduza o valor
project_iddo ficheiro JSON, - use projetos Google Cloud separados para ambientes de produção e de teste, caso essa separação exista no projeto.
8. Secção Queue and Limits
Daily Publish Limit
Predefinição:
200Define o número máximo de envios publish que o módulo pode executar por dia.
O limitador conta requests do tipo:
publish,publish_dry_run.
Se o limite for atingido, o processador da fila não recolherá novos registos para envio até à janela diária seguinte.
Recomendação:
- mantenha
200se o projeto usar o limite de onboarding padrão do Google, - aumente o valor apenas se o projeto Google Cloud tiver um limite superior aprovado,
- a definição
0bloqueia o envio, porque o número de slots disponíveis será0.
Requests Per Minute Limit
Predefinição:
60Define o número máximo de requests publish por minuto.
O módulo compara este valor com o número de requests guardados nos logs do último minuto. Se o limite por minuto for atingido, o cron não processará mais registos nessa execução.
Recomendação:
- para uma implementação típica, mantenha o valor predefinido,
- reduza o valor se quiser carregar a API de forma mais conservadora,
- não defina
0, a menos que queira parar temporariamente o envio.
Cron Batch Size
Predefinição:
20Define o número máximo de registos da fila processados numa única execução do cron.
O número real de registos processados é também limitado por:
Daily Publish Limit,Requests Per Minute Limit,- número de registos prontos para envio,
- estado e data
scheduled_at.
Recomendação:
20é um valor inicial seguro,- em filas grandes, o valor pode ser aumentado, mas apenas tendo em conta os limites do Google.
Default Indexing Lag minutes
Predefinição:
15Define o atraso predefinido entre a adição de um URL à fila e o momento a partir do qual pode ser enviado.
O atraso ajuda a:
- reduzir duplicados,
- evitar envios após cada pequena alteração,
- dar ao administrador tempo para corrigir conteúdos,
- gerir melhor o limite da API.
Na implementação atual, esta definição é usada quando o envio não tem o seu próprio atraso.
Manual Form Indexing Lag minutes
Predefinição:
15Define o atraso para URLs adicionados através do formulário:
Google Indexing API > Import URLsSe o administrador colar manualmente uma lista de URLs, cada endereço válido será agendado com este atraso.
Recomendação:
- defina
0se a importação manual tiver de entrar imediatamente na fila, - mantenha
15se quiser preservar uma margem para deduplicação e controlo dos envios.
Mass Action Indexing Lag minutes
Predefinição:
15Define o atraso para URLs adicionados através de:
- ações em massa de produtos,
- ações em massa de páginas CMS,
- botões de envio de indexação nos ecrãs de edição de produto, categoria e página CMS.
Recomendação:
- para operações em massa, mantenha o valor
15ou superior, - para lojas pequenas e trabalho administrativo manual, pode considerar um valor mais baixo.
Max Attempts
Predefinição:
5Define o número máximo de tentativas de envio de um único registo da fila.
Se o Google devolver um erro temporário, o módulo definirá o estado retry, desde que o número de tentativas seja inferior a Max Attempts. Após ultrapassar o limite, o registo receberá o estado failed_permanent.
Erros tratados como temporários:
408,409,412,429,500,502,503,504.
Retry Delay minutes
Predefinição:
15Atraso base antes da próxima tentativa de envio após erro temporário.
O cron usa um atraso progressivo. O multiplicador depende do número de tentativas e está limitado no máximo a 24. Assim, as tentativas seguintes não são executadas de forma demasiado agressiva.
Exemplo para o valor 15:
| Tentativa | Atraso aproximado |
|---|---|
| 1 | 15 minutos |
| 2 | 30 minutos |
| 3 | 60 minutos |
| 4 | 120 minutos |
Allowed Source Types
Predefinição:
manual,product,category,cms_page,amasty_blog_postLista de tipos de fonte permitidos, separados por vírgulas.
Valores suportados:
| Valor | Significado |
|---|---|
manual | URL adicionado manualmente através do formulário de importação. |
product | URL do produto. |
category | URL da categoria. |
cms_page | URL da página CMS. |
amasty_blog_post | URL de artigo do Amasty Blog, se for usado o módulo de integração separado. |
Se o tipo de fonte não estiver na lista, o scheduler ignorará o envio e marcá-lo-á como skipped.
Recomendação:
- mantenha os valores predefinidos se a loja usar todas as fontes padrão,
- remova as fontes que não quer permitir na fila.
Allowed URL Hosts
Predefinição:
vazioLista de hosts URL permitidos, separados por vírgulas.
Exemplo:
example.com,www.example.comSe a lista estiver preenchida, o módulo aceitará apenas endereços pertencentes aos hosts indicados. Se o URL tiver outro host, a validação devolverá o erro:
host_not_allowedRecomendação:
- em produção, preencha sempre esta lista,
- adicione todos os hosts usados pela loja, por exemplo, o domínio principal, a versão
www, domínios de store view e domínios de idioma, - não adicione domínios de teste à configuração de produção.
Require HTTPS URLs
Predefinição:
YesImpõe que os URLs enviados usem o esquema https.
Se o campo estiver ativado, um endereço com http será rejeitado com o erro:
https_requiredRecomendação:
- para lojas de produção, mantenha
Yes, - use
Noapenas em ambientes de teste excecionais.
9. Secção Auto-Indexing
Enable Auto-Indexing
Predefinição:
NoO campo está preparado para integrações automáticas de gravação ou remoção de entidades e providers adicionais de URLs.
No âmbito atual do módulo, estão disponíveis mecanismos manuais e administrativos para adicionar URLs à fila, incluindo importação de URLs, Mass Actions e botões nos formulários de edição.
Recomendação:
- mantenha
Nose o auto-indexing não tiver sido implementado no projeto, - ative apenas quando o projeto incluir suporte para eventos automáticos de entidades que usem esta configuração.
10. Secção Logs
API Log Retention Days
Predefinição:
90Define o número de dias de retenção dos logs da API.
O cron de limpeza de logs corre diariamente às:
03:15Remove registos mais antigos do que o número de dias definido neste campo.
Recomendação:
90dias é um valor razoável para diagnóstico,- com um número elevado de requests, pode reduzir a retenção,
- em auditorias SEO, pode aumentar a retenção, tendo em conta o tamanho da tabela de logs.
11. Assistente de instalação e configuração
O assistente encontra-se em:
Google Indexing API > Setup AssistantO seu objetivo é verificar rapidamente se a configuração do lado do Magento e do Google está pronta para o primeiro teste.
11.1. Secção Current Status
O assistente mostra o estado atual dos elementos mais importantes:
| Campo | Significado |
|---|---|
Module | Informa se o módulo está ativado na configuração. |
Dry Run | Informa se o modo de teste sem envio real ao Google está ativo. |
Credentials | Mostra se o módulo consegue ler e fazer parse dos credentials do Google. |
Service Account Email | Apresenta o client_email do JSON da conta de serviço. Este endereço deve ser adicionado como proprietário no Search Console. |
Allowed Hosts | Mostra a lista de hosts permitidos na configuração. |
Queue | Mostra o número de registos nos estados scheduled, pending, retry e failed_permanent. |
Se Credentials tiver o estado Missing or invalid, deve voltar à configuração e corrigir o JSON ou o ficheiro de credentials.
Se Allowed Hosts mostrar Not configured, o módulo não limita os hosts. Tecnicamente pode funcionar, mas em produção é recomendável indicar explicitamente os hosts da loja.
11.2. Secção Setup Steps
O assistente apresenta a lista de passos necessários antes do primeiro request real:
- Criar ou selecionar um projeto Google Cloud.
- Ativar o Indexing API e criar uma JSON key para a conta de serviço.
- Colar o JSON ou carregar o ficheiro JSON na configuração do Magento.
- Adicionar o service account email como proprietário no Google Search Console.
- Executar testes e, em seguida, importar um URL com
Dry Runativo.
O assistente inclui links para:
- Google Cloud para Indexing API,
- configuração do módulo no Magento,
- Google Search Console.
11.3. Test Google Credentials
O botão:
Test Google Credentialsverifica se o Magento consegue usar os dados da conta de serviço para obter um token OAuth para o âmbito:
https://www.googleapis.com/auth/indexingUm resultado positivo significa que:
- o JSON está correto,
- a chave privada pode ser usada,
- o Google emitiu um token OAuth.
Um resultado negativo pode significar:
- JSON incorreto,
private_keyinválido ou corrompido,- ausência de um campo obrigatório no JSON,
- problema de comunicação com o Google,
- utilização de uma chave que não é uma chave de conta de serviço.
Este teste ainda não confirma que a conta de serviço tem acesso de proprietário ao domínio no Search Console. Para isso, é necessário um teste de URL metadata ou um envio real de um URL de teste.
11.4. Test URL Metadata
O formulário:
Test URL Metadatapermite introduzir um URL público de um host permitido e executar um request metadata ao Google Indexing API.
Antes de enviar o request, o módulo:
- normaliza o URL,
- verifica se o URL é absoluto,
- verifica o esquema
httpouhttps, - com
Require HTTPS URLsativo, exigehttps, - verifica
Allowed URL Hosts, se estiverem configurados.
Resultados possíveis:
| Resultado | Significado |
|---|---|
| Sucesso HTTP 2xx | O Google devolveu metadata para o URL. |
| HTTP 404 | Muitas vezes significa que o URL ainda não teve um envio bem-sucedido anterior através do Indexing API. Isto não tem necessariamente de significar configuração incorreta. |
| Erro de validação antes do request | O URL não cumpre as condições do módulo, por exemplo, host incorreto, ausência de HTTPS ou endereço não absoluto. |
| Erro HTTP diferente de 404 | Deve verificar a mensagem do Google, permissões do Search Console, credentials e limites. |
O teste metadata não cria um novo envio publish. Serve para diagnóstico da ligação e do estado do URL.
12. Primeiro arranque passo a passo
Ordem recomendada para o primeiro arranque:
- Instale o módulo e execute
setup:upgrade. - No Magento, aceda a
Stores > Configuration > Kowal > Google Indexing API. - Defina
Enable = Yes. - Mantenha
Dry Run = Yes. - Selecione a origem dos credentials.
- Cole o JSON da conta de serviço ou carregue o ficheiro JSON.
- Preencha
Google Cloud Project IDcom o valorproject_iddo JSON. - Preencha
Allowed URL Hosts, por exemplo,example.com,www.example.com. - Mantenha os limites predefinidos, se o Google não tiver aprovado limites superiores.
- Guarde a configuração e limpe a cache.
- Aceda a
Google Indexing API > Setup Assistant. - Verifique se o assistente mostra os credentials como prontos.
- Clique em
Test Google Credentials. - Adicione o service account email como proprietário no Google Search Console, caso isso ainda não tenha sido feito.
- Execute
Test URL Metadatapara um URL público de um host permitido. - Aceda a
Google Indexing API > Import URLs. - Adicione um URL de teste com a ação
URL_UPDATED. - Execute o cron do Magento:
bin/magento cron:run- Verifique
Google Indexing API > Indexing Queue. - Verifique
Google Indexing API > API Logs. - Se tudo estiver a funcionar corretamente, desative
Dry Run. - Adicione novamente um URL de teste e verifique a resposta real do Google.
13. Importação de URLs a partir do painel de administração
A importação manual encontra-se em:
Google Indexing API > Import URLsO formulário inclui os campos:
| Campo | Descrição |
|---|---|
Action | Tipo de envio para o Google: adição/atualização ou remoção. |
Store View | Store view à qual o envio será atribuído. Está também disponível a opção global Use global/no store. |
URLs | Lista de URLs absolutos, um endereço por linha. |
Ações disponíveis:
| Ação no formulário | Valor da API | Significado |
|---|---|---|
Submit URLs for indexing | URL_UPDATED | Informa o Google de que o URL foi adicionado ou atualizado. |
Delete URLs from indexing | URL_DELETED | Informa o Google de que o URL foi removido e pode ser retirado do índice. |
Após o envio do formulário, o módulo mostrará um resumo:
- adicionados,
- atualizados,
- deduplicados,
- inválidos,
- ignorados.
As primeiras 10 mensagens de validação são mostradas como notice no painel de administração.
14. Fila de indexação
A fila encontra-se em:
Google Indexing API > Indexing QueueCada registo da fila contém, entre outros:
- URL,
- hash do URL,
- store ID,
- website ID,
- tipo de fonte,
- ID da entidade de origem,
- origem do request,
- ação
URL_UPDATEDouURL_DELETED, - estado,
- prioridade,
- número de tentativas,
- número máximo de tentativas,
- data de envio planeada,
- data de processamento,
- último código de erro,
- último motivo do erro,
- última mensagem de erro,
- resposta do Google,
- informação
created_by.
Estados da fila
| Estado | Significado |
|---|---|
scheduled | O URL está agendado, mas ainda aguarda a data scheduled_at. |
pending | O URL está pronto para ser processado pelo cron. |
processing | O URL está atualmente a ser processado. |
success | O Google devolveu uma resposta de sucesso. |
retry | Ocorreu um erro temporário e o registo aguarda nova tentativa. |
failed_permanent | O envio terminou de forma permanente ou foi excedido o número máximo de tentativas. |
cancelled | O registo foi cancelado manualmente. |
Ações sobre os registos da fila
| Ação | Funcionamento |
|---|---|
Transmit Now | Define o registo como urgente, bloqueia-o, envia-o imediatamente através do cliente Google e guarda o resultado. |
Retry | Define o registo como pending, limpa o bloqueio e agenda uma nova tentativa imediata. |
Cancel | Define o estado cancelled e limpa o bloqueio. |
Nota: Transmit Now executa um request real se Dry Run = No. Com Dry Run = Yes, será guardado um log dry-run sem envio real ao Google.
15. Cron
O módulo adiciona duas tarefas cron no grupo default.
Processamento da fila
kowal_google_indexing_process_queueAgendamento:
*/5 * * * *A tarefa executa o processador da fila a cada 5 minutos.
O processador:
- Verifica se o módulo está ativado.
- Liberta bloqueios antigos de registos
processingcom mais de 30 minutos. - Move os registos
scheduledparapendingsescheduled_at <= now. - Verifica os slots disponíveis nos limites diários e por minuto.
- Recolhe registos
pendingeretry. - Ordena-os por prioridade e data de envio planeada.
- Envia o request ao Google ou executa dry-run.
- Guarda a resposta, o estado e o log da API.
Limpeza de logs
kowal_google_indexing_cleanup_logsAgendamento:
15 3 * * *A tarefa remove logs da API mais antigos do que o número de dias definido no campo:
API Log Retention Days16. Logs da API
Os logs estão disponíveis em:
Google Indexing API > API LogsO log inclui:
- ID do registo da fila,
- store ID,
- tipo de request,
- URL do endpoint,
- payload,
- estado HTTP,
- body da resposta,
- duração do request,
- data de criação do log.
Tipos de request:
| Tipo | Significado |
|---|---|
publish | Envio real do URL ao Google. |
publish_dry_run | Processamento em modo dry-run sem request real ao Google. |
metadata | Teste de metadata para o URL. |
17. Mass Actions e botões administrativos
O módulo adiciona mecanismos para enviar URLs a partir do painel de administração.
Produtos
Na grelha de produtos está disponível uma ação em massa que adiciona os URLs dos produtos à fila.
O módulo ignora produtos:
- desativados,
- não visíveis individualmente.
Os URLs são gerados com base em URL rewrites para store view ativos.
Páginas CMS
Na grelha de páginas CMS está disponível uma ação em massa que adiciona os URLs das páginas à fila.
O módulo ignora páginas inativas.
Se a página CMS estiver atribuída a todos os store view, o módulo resolve os URLs para todos os store view.
Produto, categoria e página CMS - botões no formulário de edição
O módulo adiciona botões de envio de indexação nos ecrãs de edição de:
- produto,
- categoria,
- página CMS.
O botão resolve os URLs da entidade para store view e adiciona-os à fila como URL_UPDATED.
18. Configuração inicial recomendada
Para a primeira implementação em produção:
| Campo | Recomendação |
|---|---|
Enable | Yes após guardar credentials e allowed hosts. |
Dry Run | Yes durante os testes, depois No. |
Credentials Source | Encrypted configuration value ou Uploaded JSON file, de acordo com a política do projeto. |
Google Cloud Project ID | project_id do JSON. |
Daily Publish Limit | 200, salvo se o Google tiver aprovado um limite superior. |
Requests Per Minute Limit | 60 ou menos numa implementação cautelosa. |
Cron Batch Size | 20. |
Default Indexing Lag | 15. |
Manual Form Indexing Lag | 0-15, consoante a forma de trabalho dos administradores. |
Mass Action Indexing Lag | 15. |
Max Attempts | 5. |
Retry Delay | 15. |
Allowed Source Types | manual,product,category,cms_page,amasty_blog_post. |
Allowed URL Hosts | Todos os hosts de produção da loja. |
Require HTTPS URLs | Yes. |
Enable Auto-Indexing | No, salvo se o projeto implementar providers automáticos. |
API Log Retention Days | 90. |
19. Problemas comuns e diagnóstico
Credentials test failed
Verifique:
- se o JSON está correto,
- se o JSON provém de uma conta de serviço,
- se contém
private_keyeclient_email, - se o campo
typetem o valorservice_account, - se o ficheiro JSON não foi corrompido ao ser colado.
O Google devolve erro de permissões
Verifique:
- se o domínio está verificado no Search Console,
- se o
client_emailda conta de serviço foi adicionado como proprietário, - se o URL testado pertence à mesma propriedade do Search Console,
- se está a usar o projeto Google Cloud correto e o JSON correto.
O URL é rejeitado antes do envio
Verifique a mensagem de validação:
| Mensagem | Causa |
|---|---|
empty_url | URL vazio. |
url_too_long | O URL tem mais de 2048 caracteres. |
url_not_absolute | O URL não tem esquema ou host. |
https_required | O requisito HTTPS está ativo e o URL usa HTTP. |
invalid_scheme | O esquema não é http nem https. |
host_not_allowed | O host do URL não está em Allowed URL Hosts. |
A fila não é processada
Verifique:
- se
Enable = Yes, - se o cron do Magento está a funcionar,
- se os registos têm estado
pendingouretry, - se
scheduled_atnão está no futuro, - se os limites diários ou por minuto não foram atingidos,
- se
Daily Publish LimiteRequests Per Minute Limitnão estão definidos como0.
Os registos passam para retry
Verifique:
- o estado HTTP no registo da fila,
- o log da API,
- a resposta do Google,
- se não existe o limite
429, - se não existem erros temporários
5xx, - se
Max AttemptseRetry Delayestão definidos conforme esperado.
20. Integração opcional com Amasty Blog
A integração com Amasty Blog está prevista como módulo separado:
Kowal_GoogleIndexingApiAmastyBlogPacote:
kowal/module-google-indexing-api-amasty-blogEste módulo não é necessário para o funcionamento da integração principal. Deve ser instalado apenas em projetos que usem amasty/blog e precisem de ação em massa para artigos de blog.
Write Your Own Review




















