Porque o processamento de vídeo no Google Merchant Center bloqueia e como resolver no WooCommerce
Os vídeos de demonstração de produtos tornaram-se num dos fatores determinantes para as decisões de compra no comércio eletrónico contemporâneo. O Google Shopping e as fichas de produto gratuitas no motor de busca destacam ativamente ofertas enriquecidas com demonstrações práticas, testes de utilização e apresentações em 360 graus. A Google descreve sem rodeios a finalidade do novo atributo: os vídeos de produto mostram os artigos em uso ou de vários ângulos e servem para melhorar a forma como os produtos são apresentados na Google (atualização da especificação de dados de produtos do Merchant Center 2026).
Apesar destas vantagens evidentes, muitos gestores de lojas baseadas em WooCommerce deparam-se com um obstáculo técnico frustrante. Após a submissão dos endereços de vídeo nos atributos do feed, o painel do Google Merchant Center mantém o estado em processamento durante vários dias seguidos, acabando o vídeo por desaparecer ou ser rejeitado sem qualquer justificação clara. Em catálogos com centenas ou milhares de produtos, os vídeos simplesmente nunca aparecem e o estado não dá qualquer pista sobre a causa.
Este guia técnico analisa em detalhe o funcionamento do fluxo de processamento de multimédia da Google, disseca a estrutura interna dos contentores MP4, explica como ultrapassar bloqueios de WAF e CDN e disponibiliza implementações completas em PHP para dados estruturados e feeds dinâmicos em WooCommerce.
Porque o processamento de vídeo no Google Merchant Center fica bloqueado
Quando uma loja envia um URL de vídeo através do feed XML ou da Merchant API, o Google Merchant Center não se limita a embutir a ligação externa na interface de pesquisa. Em vez disso, inicia um pipeline automatizado de ingestão de multimédia. O primeiro passo é uma transferência: a página de ajuda do atributo exige que o Googlebot consiga aceder ao vídeo, e a lista de crawlers da Google indica o Googlebot-Video como o agente dos produtos que dependem de vídeo. Se essa transferência falhar ou exceder o tempo limite, o vídeo nunca chega à revisão.
Este fluxo fica frequentemente retido num ciclo infinito de processamento devido a quatro problemas técnicos essenciais:
O motivo principal reside na organização interna do contentor MP4, em particular na localização do átomo moov. Este átomo guarda o índice das faixas de vídeo, os marcadores temporais dos fotogramas e os metadados. Muitos programas de edição de vídeo gravam esta tabela de índice no final do ficheiro, a seguir aos dados audiovisuais brutos (mdat). Para um leitor local que carrega o ficheiro na totalidade, essa disposição não cria dificuldades. No entanto, o crawler da Google descarrega apenas os primeiros blocos de dados para identificar a resolução, o rácio de aspeto e o codec. Se o índice estiver no fim de um ficheiro de 80 megabytes, o robô é forçado a descarregar o ficheiro completo. Caso o servidor da loja apresente lentidão ou limites de transferência, a ligação atinge o tempo limite e o processo fica bloqueado na fila.
O segundo fator é a ausência de suporte para pedidos de alcance de bytes (HTTP Range Requests). O mecanismo de ingestão da Google baseia-se em pedidos com o cabeçalho Range: bytes=0-1048575. Um servidor em conformidade deve responder com o código de estado 206 Partial Content e o respetivo cabeçalho Content-Range, transmitindo exclusivamente o fragmento solicitado. Se o servidor do WordPress ou um plugin de cache ignorar esse cabeçalho e devolver uma resposta 200 OK com o ficheiro inteiro, o crawler tem de descarregar o ficheiro inteiro para o ler e esbarra no mesmo tempo limite que um átomo moov no fim do ficheiro.
O terceiro problema decorre de regras excessivamente rígidas de Web Application Firewall e proteção contra bots em plataformas como Cloudflare, AWS CloudFront ou Sucuri. Os crawlers do Googlebot-Video utilizam por vezes gamas de endereços IP distintas do Googlebot tradicional que rastreia páginas de texto. Ferramentas como o Bot Fight Mode da Cloudflare interpretam esses pedidos como tráfego suspeito e respondem com desafios de JavaScript ou com o erro 403 Forbidden. O Merchant Center recebe uma página HTML de bloqueio em vez do ficheiro de vídeo, registando apenas uma falha indeterminada de processamento no painel de controlo.
O quarto aspeto é o próprio ficheiro. A especificação da Google enumera contentores aceites e limites fixos (descritos na secção seguinte), não perfis de codec, pelo que taxas de fotogramas variáveis, YUV 4:4:4 ou cor de 10 bits não são motivos de rejeição documentados. Normalizar para H.264 com yuv420p e uma cadência constante, como faz a receita de FFmpeg mais abaixo, elimina-os ainda assim como variável durante o diagnóstico.
Requisitos de vídeo do Google Merchant Center para video_link
Antes de investigar servidores, compare o ficheiro com os limites publicados. A página de ajuda do atributo (Link de vídeo [video_link]) enumera-os:
| Requisito | Valor na especificação da Google |
|---|---|
| Duração | 6 a 240 segundos |
| Tamanho do ficheiro | até 500 MB |
| Proporção | 9:16, 16:9 ou 1:1 |
| Resolução | pelo menos 720p (1280 x 720) |
| Vídeos por produto | até 10 |
| URL | até 2000 carateres, a começar por http:// ou https:// |
| Tipos de ficheiro | MPG, MP4, WMV, AVI, MOV, FLV, MPEG-1, MPEGPS |
Três regras da mesma página explicam muitos casos de “processamento” que nada têm a ver com o servidor. Um URL fora do YouTube tem de apontar diretamente para o ficheiro de vídeo, não para uma página com um leitor, por isso uma ligação para a página do produto não serve. O vídeo tem de estar publicamente acessível: o Googlebot tem de o descarregar sem início de sessão nem token, e o robots.txt não o pode bloquear. A ligação também tem de ser estática, ou seja, não pode expirar nem ser reutilizada mais tarde para outro vídeo. URLs assinados de uma CDN com validade curta violam esta regra.
A Google acrescenta que o comerciante tem de deter os direitos de licenciamento para marketing, que os vídeos não podem estar desfocados e que o som é opcional. Com vários vídeos por produto, os URLs são separados por vírgulas num feed de texto, ou o elemento é repetido em XML.
Como otimizar ficheiros MP4 com a flag faststart para o Google Shopping
Para eliminar o problema na origem, cada ficheiro de vídeo deve ser reestruturado antes do envio para a biblioteca do WordPress, garantindo que o índice é movido para o início do contentor. Na engenharia de vídeo com FFmpeg, esta operação denomina-se faststart.
A flag faststart reorganiza o ficheiro MP4 de forma a colocar o átomo moov antes dos blocos de áudio e vídeo mdat. Assim, qualquer cliente HTTP, incluindo o Googlebot-Video, consegue ler as dimensões, a duração e os codecs logo nos primeiros 32 kilobytes recebidos.
Eis o comando FFmpeg fundamental para reorganizar um ficheiro existente sem necessidade de nova codificação:
ffmpeg -i produto-original.mp4 -c copy -movflags +faststart produto-faststart.mp4Se o vídeo tiver sido gravado diretamente com um telemóvel ou câmara de estúdio com taxas de fotogramas irregulares, recomenda-se uma normalização completa a 30 fotogramas por segundo fixos, perfil High e formato YUV 4:2:0:
ffmpeg -i produto-bruto.mov \
-c:v libx264 \
-preset slow \
-crf 21 \
-profile:v high \
-level:v 4.1 \
-pix_fmt yuv420p \
-r 30 \
-g 60 \
-c:a aac \
-b:a 160k \
-ar 48000 \
-movflags +faststart \
-max_muxing_queue_size 1024 \
produto-loja-otimizado.mp4O parâmetro -g 60 força a inserção de um fotograma-chave (Keyframe) a cada dois segundos exatos com 30 fotogramas por segundo. Isto permite que os sistemas da Google criem miniaturas de pré-visualização instantâneas para os resultados de pesquisa sem terem de descodificar sequências extensas de imagens.
Para lojas que gerem dezenas ou centenas de vídeos, a conversão manual é inviável. Este script em Bash permite automatizar o processamento em lote no servidor:
#!/usr/bin/env bash
set -euo pipefail
INPUT_DIR="./videos-brutos"
OUTPUT_DIR="./videos-prontos"
mkdir -p "$OUTPUT_DIR"
for video in "$INPUT_DIR"/*.{mp4,mov,m4v}; do
[[ -f "$video" ]] || continue
filename=$(basename -- "$video")
name="${filename%.*}"
output="${OUTPUT_DIR}/${name}.mp4"
echo "A processar: $filename -> $output"
ffmpeg -y -i "$video" \
-c:v libx264 -preset medium -crf 22 \
-profile:v high -level:v 4.1 -pix_fmt yuv420p \
-r 30 -g 60 \
-c:a aac -b:a 128k -ar 44100 \
-movflags +faststart \
"$output"
done
echo "Processamento concluido: Todos os ficheiros estao otimizados com faststart."Como configurar o schema VideoObject no WooCommerce para o Google Shopping
Os dados estruturados da página de produto são um canal diferente do feed: o Merchant Center lê o video_link, enquanto a Pesquisa Google lê a marcação VideoObject da página. O guia de dados estruturados de vídeo da Google (Dados estruturados de vídeo) exige name, thumbnailUrl e uploadDate, define contentUrl como o URL dos bytes reais do vídeo e embedUrl como o URL do próprio leitor, e estabelece que a marcação tem de estar numa página onde os utilizadores possam ver o vídeo. Inclua o código seguinte apenas em modelos de produto que mostrem realmente o vídeo.
Para assegurar uma consistência semântica sólida, a página de produto no WooCommerce deve conter um VideoObject completo associado ao esquema principal Product. No vocabulário do Schema.org, o vídeo deve ser declarado através das propriedades subjectOf ou video.
O código PHP seguinte liga-se ao filtro woocommerce_structured_data_product no ficheiro functions.php do tema filho para injetar os metadados do vídeo:
<?php
/**
* Injeta o Schema VideoObject nos dados estruturados de produto do WooCommerce.
*/
declare(strict_types=1);
if (!defined('ABSPATH')) {
exit;
}
add_filter('woocommerce_structured_data_product', 'wpp_inject_product_video_schema_pt', 20, 2);
function wpp_inject_product_video_schema_pt(array $markup, WC_Product $product): array
{
$product_id = $product->get_id();
// Obter o URL do video guardado nos metadados do produto
$video_url = get_post_meta($product_id, '_wpp_product_video_url', true);
if (empty($video_url) || !filter_var($video_url, FILTER_VALIDATE_URL)) {
return $markup;
}
$video_title = get_post_meta($product_id, '_wpp_product_video_title', true);
if (empty($video_title)) {
$video_title = sprintf('Demonstracao do produto %s em acao', $product->get_name());
}
$video_description = get_post_meta($product_id, '_wpp_product_video_desc', true);
if (empty($video_description)) {
$video_description = wp_strip_all_tags($product->get_short_description());
if (empty($video_description)) {
$video_description = sprintf('Video oficial de demonstracao e especificacoes de %s.', $product->get_name());
}
}
$thumbnail_id = $product->get_image_id();
$thumbnail_url = $thumbnail_id ? wp_get_attachment_image_url($thumbnail_id, 'full') : '';
if (empty($thumbnail_url)) {
$thumbnail_url = wc_placeholder_img_src('full');
}
$upload_date = get_the_date('c', $product_id);
$video_object = [
'@type' => 'VideoObject',
'name' => esc_html($video_title),
'description' => esc_html($video_description),
'thumbnailUrl' => [esc_url($thumbnail_url)],
'uploadDate' => $upload_date,
'contentUrl' => esc_url($video_url),
'inLanguage' => get_bloginfo('language'),
];
if (preg_match('~(?:youtube\.com/watch\?v=|youtu\.be/)([\w-]{11})~', $video_url, $yt)) {
unset($video_object['contentUrl']);
$video_object['embedUrl'] = 'https://www.youtube.com/embed/' . $yt[1];
}
$markup['subjectOf'] = $video_object;
$markup['video'] = $video_object;
return $markup;
}Com esta configuração, o robô de rastreio estabelece de imediato a correspondência entre o identificador GTIN, o preço e o conteúdo audiovisual do artigo.
Como gerar um feed de produtos XML com video_link no WooCommerce
Na especificação oficial do Google Merchant Center, o atributo destinado à inclusão de vídeo é designado por [video_link] (definido como <g:video_link> em ficheiros XML). São aceites dois tipos de ligações:
- Um URL direto para um ficheiro MP4 público alojado num servidor com elevado débito e suporte a pedidos de alcance de bytes.
- Um link para um vídeo no YouTube no formato habitual (
https://www.youtube.com/watch?v=ID) ou encurtado (https://youtu.be/ID).
A utilização do YouTube constitui com frequência a opção mais simples para a infraestrutura da loja, uma vez que a Google gere todo o processamento de vídeo internamente. Se a loja optar por manter os ficheiros MP4 na sua própria rede CDN, deve garantir que os endereços respondem diretamente sem redirecionamentos HTTP 301 e fornecem o cabeçalho Content-Type: video/mp4.
O código seguinte implementa um gerador de feed XML eficiente no WordPress com recurso à classe XMLWriter:
<?php
/**
* Gerador de feed XML para o Google Merchant Center com suporte de video.
*/
declare(strict_types=1);
if (!defined('ABSPATH')) {
exit;
}
add_action('init', 'wpp_register_pt_merchant_feed');
function wpp_register_pt_merchant_feed(): void
{
add_feed('google-merchant-video-pt', 'wpp_render_pt_merchant_feed');
}
function wpp_render_pt_merchant_feed(): void
{
header('Content-Type: application/xml; charset=UTF-8');
$writer = new XMLWriter();
$writer->openURI('php://output');
$writer->startDocument('1.0', 'UTF-8');
$writer->setIndent(true);
$writer->startElement('rss');
$writer->writeAttribute('version', '2.0');
$writer->writeAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
$writer->startElement('channel');
$writer->writeElement('title', get_bloginfo('name') . ' - Feed com Video para Google Shopping');
$writer->writeElement('link', home_url('/'));
$writer->writeElement('description', 'Feed de produtos otimizado com atributos de video para o Merchant Center.');
$query = new WC_Product_Query([
'status' => 'publish',
'limit' => 250,
'orderby' => 'date',
'order' => 'DESC',
]);
$products = $query->get_products();
foreach ($products as $product) {
$product_id = $product->get_id();
$video_url = get_post_meta($product_id, '_wpp_product_video_url', true);
$writer->startElement('item');
$writer->writeElement('g:id', (string)$product_id);
$writer->writeElement('g:title', $product->get_name());
$writer->writeElement('g:description', wp_strip_all_tags($product->get_short_description() ?: $product->get_description()));
$writer->writeElement('g:link', $product->get_permalink());
$image_id = $product->get_image_id();
if ($image_id) {
$writer->writeElement('g:image_link', wp_get_attachment_image_url($image_id, 'full'));
}
$writer->writeElement('g:price', $product->get_price() . ' ' . get_woocommerce_currency());
$writer->writeElement('g:availability', $product->is_in_stock() ? 'in_stock' : 'out_of_stock');
$writer->writeElement('g:condition', 'new');
if (!empty($video_url) && filter_var($video_url, FILTER_VALIDATE_URL)) {
$writer->writeElement('g:video_link', esc_url_raw($video_url));
}
$writer->endElement(); // item
}
$writer->endElement(); // channel
$writer->endElement(); // rss
$writer->endDocument();
$writer->flush();
exit;
}Após guardar o código, atualize as ligações permanentes no painel de controlo do WordPress. O feed fica acessível no endereço exemplo-loja.pt/feed/google-merchant-video-pt/.
Quanto tempo o Google Merchant Center demora a processar um vídeo de produto
O atributo video_link é recente. A Google anunciou-o na atualização da especificação de 2026 (atualização da especificação de dados de produtos do Merchant Center 2026): os comerciantes podiam enviar vídeos de imediato, os erros de validação técnica são comunicados desde 14 de abril de 2026, e a veiculação, com as verificações de política e qualidade, começou a 30 de junho de 2026. Um feed que enviava video_link antes dessa data não mostrava vídeo nenhum. Parecia uma fila bloqueada, mas era o lançamento previsto.
Para alterações posteriores, a página de ajuda do atributo dá dois valores. Quando um vídeo é substituído com um URL novo e único, a Google volta normalmente a rastreá-lo em 24 a 72 horas, o produto aparece como “Em revisão” e o vídeo anterior continua a ser veiculado entretanto. Quando o ficheiro muda no mesmo URL, a alteração pode demorar até seis semanas a ser detetada.
Os problemas com vídeos aparecem na secção “Requer atenção” da conta do Merchant Center. Os erros de política ou de qualidade impedem a veiculação do vídeo, mas, segundo a Google, não afetam a veiculação da oferta associada, por isso um vídeo rejeitado não leva à reprovação do produto.
As lojas que enviam produtos por API, e não por um ficheiro XML que a Google vai buscar, têm um segundo prazo. A Content API for Shopping chegou ao fim a 18 de agosto de 2026; desde 1 de setembro de 2026, os pedidos sem prorrogação aprovada falham de forma intermitente com HTTP 410, e o encerramento total está previsto para o início de 2027 (Descontinuação e fim do serviço). Um plugin que continue a chamar a API antiga pode perder atualizações de vídeo só por esse motivo, por isso confirme qual a API usada pela integração do feed antes de culpar o ficheiro. Um feed que o Merchant Center vai buscar a um URL, como o anterior, não passa pela Content API.
Como criar um sitemap de vídeo dedicado para produtos WooCommerce
Para além da presença no Merchant Center, o motor de busca orgânico utiliza sitemaps de vídeo (Google Video Sitemap) para descobrir vídeos nas pesquisas gerais, no separador Vídeos e no Google Discover.
Um sitemap de vídeo válido requer a declaração do espaço de nomes xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" e elementos obrigatórios como <video:thumbnail_loc>, <video:title>, <video:description> e <video:content_loc> ou <video:player_loc>.
Eis o código para criar este sitemap no WooCommerce:
<?php
/**
* Gerador de Video Sitemap dedicado para produtos WooCommerce.
*/
declare(strict_types=1);
if (!defined('ABSPATH')) {
exit;
}
add_action('init', 'wpp_register_pt_video_sitemap');
function wpp_register_pt_video_sitemap(): void
{
add_feed('video-sitemap-pt.xml', 'wpp_render_pt_video_sitemap');
}
function wpp_render_pt_video_sitemap(): void
{
header('Content-Type: application/xml; charset=UTF-8');
$writer = new XMLWriter();
$writer->openURI('php://output');
$writer->startDocument('1.0', 'UTF-8');
$writer->setIndent(true);
$writer->startElement('urlset');
$writer->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
$writer->writeAttribute('xmlns:video', 'http://www.google.com/schemas/sitemap-video/1.1');
$products = wc_get_products([
'status' => 'publish',
'limit' => 500,
'meta_key' => '_wpp_product_video_url',
'meta_compare' => 'EXISTS',
]);
foreach ($products as $product) {
$product_id = $product->get_id();
$video_url = get_post_meta($product_id, '_wpp_product_video_url', true);
if (empty($video_url)) {
continue;
}
$thumbnail_id = $product->get_image_id();
$thumbnail_url = $thumbnail_id ? wp_get_attachment_image_url($thumbnail_id, 'full') : '';
if (empty($thumbnail_url)) {
continue;
}
$writer->startElement('url');
$writer->writeElement('loc', $product->get_permalink());
$writer->startElement('video:video');
$writer->writeElement('video:thumbnail_loc', esc_url($thumbnail_url));
$writer->writeElement('video:title', esc_html($product->get_name()));
$writer->writeElement('video:description', esc_html(wp_strip_all_tags($product->get_short_description() ?: $product->get_name())));
if (preg_match('~(?:youtube\.com/watch\?v=|youtu\.be/)([\w-]{11})~', $video_url, $yt)) {
$writer->writeElement('video:player_loc', 'https://www.youtube.com/embed/' . $yt[1]);
} else {
$writer->writeElement('video:content_loc', esc_url($video_url));
}
$writer->writeElement('video:publication_date', get_the_date('c', $product_id));
$writer->writeElement('video:family_friendly', 'yes');
$writer->endElement(); // video:video
$writer->endElement(); // url
}
$writer->endElement(); // urlset
$writer->endDocument();
$writer->flush();
exit;
}Envie o endereço exemplo-loja.pt/video-sitemap-pt.xml através do Google Search Console para que a Pesquisa Google descubra os vídeos de produto.
Como evitar que a Cloudflare e as CDN bloqueiem o Googlebot-Video
Mesmo com ficheiros devidamente preparados e feeds sem erros de sintaxe, o rastreio pode falhar devido a filtros de segurança na rede perimétrica.
Redes CDN como a Cloudflare aplicam sistemas automáticos de deteção:
- Bot Fight Mode: Avalia assinaturas TLS e a ausência de cabeçalhos de navegador. Como o Googlebot-Video apresenta características de rede diferentes dos utilizadores comuns, estes pedidos são frequentemente bloqueados com o erro 403.
- Proteção de Hotlink: Valida o cabeçalho
Referer. Como os robôs de pesquisa não enviam informação de referência, o servidor rejeita o acesso. - Mecanismo de Cache de Intervalos: Certas políticas de cache tentam guardar o ficheiro completo antes de responder. Se o servidor de origem demorar a responder, o pedido expira.
Na Cloudflare, é possível contornar esta restrição criando uma regra WAF personalizada:
(cf.client.bot and http.request.uri.path contains "/wp-content/uploads/" and (http.request.uri.path.extension in {"mp4" "webm" "mov"})) or (http.user_agent contains "Googlebot-Video" and cf.client.bot)A ação da regra deve ser configurada para Skip, ignorando as regras geridas de WAF, o Super Bot Fight Mode e a limitação de taxa para os pedidos correspondentes. O Super Bot Fight Mode está incluído nos planos Pro, Business e Enterprise, e a Cloudflare documenta que as regras personalizadas com Skip são executadas antes dele (Super Bot Fight Mode). O Bot Fight Mode gratuito funciona de outra forma: a Cloudflare afirma que não pode ser contornado nem ignorado com regras personalizadas de WAF ou Page Rules, e que as ações Skip, Bypass e Allow não têm efeito sobre ele (Bot Fight Mode). No plano gratuito, as opções são desligar o Bot Fight Mode ou adicionar uma regra de IP Access, que é avaliada primeiro.
No servidor Nginx, certifique-se de que os pedidos parciais são servidos de forma direta:
location ~* \.(mp4|webm|m4v)$ {
max_ranges 100;
add_header Accept-Ranges bytes always;
add_header Access-Control-Allow-Origin "*" always;
add_header Cache-Control "public, max-age=31536000, immutable";
sendfile on;
tcp_nopush on;
tcp_nodelay on;
expires 365d;
access_log off;
}A combinação de sendfile on e max_ranges 100 permite que o kernel do Linux sirva os pacotes de vídeo diretamente para a rede, minimizando latências e evitando falhas na receção.
Como confirmar que um pedido vem realmente do Googlebot-Video
Antes de abrir uma exceção na firewall, confirme no registo de acessos que os pedidos bloqueados são da Google. A documentação de crawlers da Google (crawlers comuns da Google) indica o Googlebot-Video com o token de robots.txt Googlebot-Video e o user agent Googlebot-Video/1.0, e avisa que o user agent pode ser falsificado. Um nome coincidente não prova nada por si só.
Duas verificações provam. A pesquisa DNS inversa do IP tem de devolver um nome de anfitrião em googlebot.com (na forma crawl-***-***-***-***.googlebot.com ou geo-crawl-***-***-***-***.geo.googlebot.com), e a pesquisa direta desse nome tem de devolver o mesmo IP. Em alternativa, o IP tem de estar dentro dos intervalos que a Google publica em common-crawlers.json.
host 66.249.66.1
host crawl-66-249-66-1.googlebot.comA mesma página refere que as regras definidas para o token Googlebot-Video se aplicam às funcionalidades de vídeo da Pesquisa e a outros produtos que dependem de vídeo. Um robots.txt que bloqueie /wp-content/uploads/ para todos os agentes esconde também os vídeos de produto alojados na própria loja, e a ajuda do Merchant Center exige expressamente que o robots.txt não bloqueie o URL do vídeo. Verifique o ficheiro publicado antes de alterar o que quer que seja na CDN:
curl -s https://exemplo-loja.pt/robots.txt | grep -i -A5 "user-agent"Como verificar os cabeçalhos HTTP e os pedidos de intervalo com curl e ffprobe
Antes de submeter novamente o feed no Google Merchant Center, confirme o comportamento do servidor através da linha de comandos.
Passo 1: Validar o suporte para pedidos parciais com o utilitário curl:
curl -I -X GET \
-H "User-Agent: Googlebot-Video/1.0" \
-H "Range: bytes=0-1024" \
https://exemplo-loja.pt/wp-content/uploads/produto-teste.mp4A resposta correta deve conter obrigatoriamente:
- Código de estado:
HTTP/2 206ouHTTP/1.1 206 Partial Content. - Cabeçalho:
Accept-Ranges: bytes. - Cabeçalho:
Content-Range: bytes 0-1024/TAMANHO_TOTAL. - Cabeçalho:
Content-Type: video/mp4.
Respostas com código 200 OK ou 403 Forbidden indicam que o servidor ou o CDN estão a rejeitar pedidos por blocos, inviabilizando o processamento pelo Google Merchant Center.
Passo 2: Inspecionar a localização dos átomos com o comando ffprobe:
ffprobe -v trace -show_packets https://exemplo-loja.pt/wp-content/uploads/produto-teste.mp4 2>&1 | head -n 40Se o átomo type:'moov' surgir nas linhas iniciais, o ficheiro contém a flag faststart. Se surgir primeiro type:'mdat', o contentor deve ser reorganizado antes de prosseguir.
Questões frequentes sobre o processamento de vídeo no Google Merchant Center
Considere estas orientações práticas para a gestão contínua da sua loja:
Alojar no YouTube é mais seguro do que usar ficheiros MP4 próprios Do ponto de vista da estabilidade no Google Merchant Center, o alojamento no YouTube é a solução mais fiável, pois elimina encargos com largura de banda e bloqueios de firewall. No entanto, ficheiros MP4 próprios alojados numa CDN dedicada conferem total controlo sobre o aspeto do leitor, evitam anúncios e mantêm o utilizador concentrado no processo de encomenda.
Quanto tempo demora o processamento normal de vídeo no Google Merchant Center A ajuda da Google indica 24 a 72 horas para um novo rastreio quando o vídeo passa para um URL novo, e até seis semanas quando o ficheiro muda no mesmo URL. Se um vídeo continuar sem ser veiculado muito depois desse prazo e não houver nada em “Requer atenção”, o mais provável é um problema de transferência: um pedido bloqueado, um redirecionamento ou um URL que devolve uma página em vez do ficheiro.
É necessário alterar o URL do vídeo quando se substitui um ficheiro MP4 no servidor Sim. A ajuda da Google pede um URL novo e único quando um vídeo é substituído, porque uma alteração no mesmo URL pode demorar até seis semanas a ser detetada. Um nome de ficheiro novo, como
produto-v2.mp4, é a forma mais limpa de o fazer.
Com a aplicação da norma faststart, o suporte a pedidos HTTP 206, dados estruturados coerentes e um feed XML rigoroso, as lojas conseguem ultrapassar os bloqueios técnicos e garantir o destaque dos seus produtos no Google Shopping.






