Por qué se bloquea el procesamiento de video en google merchant center y cómo solucionarlo en woocommerce

Por qué se bloquea el procesamiento de video en google merchant center y cómo solucionarlo en woocommerce

Última verificación: 16 de octubre de 2026
19 min de lectura

#Por qué se bloquea el procesamiento de vídeo en Google Merchant Center y cómo solucionarlo en WooCommerce

Los vídeos demostrativos de producto se han consolidado como uno de los factores decisivos más potentes en el comercio electrónico contemporáneo. Google Shopping y las fichas de producto gratuitas en el buscador destacan con frecuencia los artículos que cuentan con vídeos de unboxing, demostraciones prácticas y vistas de 360 grados. Google describe sin rodeos la finalidad del nuevo atributo: los vídeos de producto muestran los artículos en uso o desde distintos ángulos, y Google los utiliza para mejorar la presentación de los productos en sus superficies (actualización de la especificación de datos de producto de Merchant Center 2026).

A pesar de estas ventajas, los responsables de tiendas sobre WooCommerce tropiezan a menudo con un obstáculo técnico desconcertante. Tras enviar las direcciones de vídeo en el catálogo, el panel de Google Merchant Center muestra un estado continuo de procesamiento de vídeo durante días enteros, hasta que el contenido desaparece o se descarta sin ningún mensaje de error descriptivo. En catálogos con cientos o miles de referencias, los vídeos sencillamente no aparecen y el estado no da ninguna pista sobre la causa.

Esta guía técnica examina la arquitectura del flujo de ingesta de medios de Google, analiza la estructura interna de los contenedores MP4, detalla soluciones prácticas frente a cortafuegos WAF y redes CDN, y ofrece implementaciones listas para producción en PHP tanto para datos estructurados como para feeds XML en WooCommerce.

#Por qué se queda bloqueado el procesamiento de vídeo en Google Merchant Center

Cuando un comercio envía una dirección de vídeo mediante el feed XML o a través de la Merchant API, Google Merchant Center no incrusta directamente el archivo externo en las páginas de resultados. En su lugar, pone en marcha un proceso automatizado de procesamiento y validación. El primer paso es una descarga: la página de ayuda del atributo exige que Googlebot pueda acceder al vídeo, y la lista de rastreadores de Google nombra a Googlebot-Video como el agente de los productos que dependen de vídeo. Si esa descarga falla o agota el tiempo de espera, el vídeo nunca llega a revisión.

Este procedimiento queda atrapado en un bucle interminable por cuatro motivos técnicos concretos:

El primero y más habitual radica en la disposición interna del contenedor MP4, en especial la ubicación del átomo moov. Este componente almacena el índice de fotogramas, marcas de tiempo y metadatos generales del archivo. La mayoría de suites de edición guardan esta información al final del archivo, inmediatamente después del bloque de contenido audiovisual mdat. Para un reproductor local que lee el archivo en su totalidad, esta estructura no presenta inconvenientes. Sin embargo, el rastreador de Google solo descarga los primeros fragmentos para identificar resolución, relación de aspecto y códec. Si el índice se localiza al final de un archivo de 80 megabytes, el rastreador se ve obligado a transferir el archivo completo. Si el servidor de la tienda responde con lentitud o tiene límites de tasa de transferencia, la conexión alcanza el tiempo límite (timeout) y el procesamiento queda suspendido indefinidamente.

El segundo factor es la falta de compatibilidad con solicitudes de rango de bytes (HTTP Range Requests). El protocolo de descarga de Googlebot-Video se basa en peticiones con la cabecera Range: bytes=0-1048575. El servidor debe responder con el código de estado 206 Partial Content y la cabecera Content-Range, transmitiendo únicamente el bloque solicitado. Si el entorno del servidor o un plugin de caché ignora esta cabecera y devuelve una respuesta estándar 200 OK con el archivo íntegro, el rastreador tiene que descargar el archivo completo para leerlo y choca con el mismo límite de tiempo que un átomo moov situado al final.

El tercer motivo surge de reglas de seguridad excesivamente restrictivas en cortafuegos WAF y sistemas antibot como Cloudflare, AWS CloudFront o Sucuri. Googlebot-Video opera con frecuencia desde subredes IP distintas a las del rastreador principal de páginas web. Mecanismos automatizados como Cloudflare Bot Fight Mode identifican estas solicitudes como actividad sospechosa y responden con desafíos JavaScript o con el error 403 Forbidden. Como consecuencia, Merchant Center recibe una página web de error en lugar del flujo de vídeo, registrando en su panel una falla genérica de procesamiento.

El cuarto elemento es el propio archivo. La especificación de Google enumera contenedores admitidos y límites estrictos (se detallan en la siguiente sección), no perfiles de códec, de modo que la frecuencia de cuadro variable, YUV 4:4:4 o el color de 10 bits no figuran como motivos documentados de rechazo. Normalizar a H.264 con yuv420p y una cadencia constante, como hace la receta de ffmpeg más abajo, elimina esas variables mientras se depura el problema.

Antes de revisar servidores, conviene comparar el archivo con los límites publicados. La página de ayuda del atributo (Enlace de vídeo [video_link]) los enumera:

RequisitoValor en la especificación de Google
Duraciónde 6 a 240 segundos
Tamaño del archivohasta 500 MB
Relación de aspecto9:16, 16:9 o 1:1
Resoluciónal menos 720p (1280 x 720)
Vídeos por productohasta 10
URLhasta 2000 caracteres, empezando por http:// o https://
Tipos de archivoMPG, MP4, WMV, AVI, MOV, FLV, MPEG-1, MPEGPS

Tres reglas de esa misma página explican muchos casos de “procesamiento” que no tienen nada que ver con el servidor. Una URL ajena a YouTube debe apuntar directamente al archivo de vídeo, no a una página que contiene un reproductor, así que un enlace a la ficha de producto no sirve. El vídeo debe ser públicamente accesible: Googlebot tiene que descargarlo sin inicio de sesión ni token, y robots.txt no puede bloquearlo. Además, el enlace debe ser estático, es decir, no debe caducar ni reutilizarse más adelante para otro vídeo. Las URLs firmadas de una CDN con vida corta incumplen esa regla.

Google añade que el comerciante debe tener los derechos de uso publicitario del vídeo, que los vídeos no pueden estar borrosos ni desenfocados y que el sonido es opcional. Con varios vídeos por producto, las URLs se separan con comas en un feed de texto, o se repite el elemento en XML.

#Cómo optimizar archivos MP4 con el indicador faststart para Google Shopping

Para neutralizar la incidencia desde el origen, cada vídeo debe acondicionarse antes de su subida a la biblioteca de WordPress, garantizando que el índice de metadatos quede situado al inicio del archivo. En el ecosistema de FFmpeg, este ajuste se realiza mediante el parámetro faststart.

Al aplicar faststart, el átomo moov se traslada por delante de los paquetes audiovisuales mdat. Gracias a esto, cualquier cliente HTTP, incluido Googlebot-Video, puede interpretar las dimensiones, la duración y los códecs nada más recibir los primeros 32 kilobytes de información.

A continuación se muestra el comando de FFmpeg para reestructurar un archivo MP4 existente sin necesidad de volver a codificarlo:

ffmpeg -i producto-original.mp4 -c copy -movflags +faststart producto-faststart.mp4

Si el material original procede directamente de un teléfono móvil o cámara de estudio con variaciones en la cadencia de imágenes, se aconseja una normalización exhaustiva fijando 30 fotogramas por segundo, perfil High y espacio de color YUV 4:2:0:

ffmpeg -i producto-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 \
  producto-tienda-optimizado.mp4

El parámetro -g 60 establece un fotograma clave (Keyframe) cada dos segundos exactos a 30 fotogramas por segundo. Esto permite que los motores de Google elaboren animaciones de vista previa al instante sin necesidad de procesar largas secuencias de fotogramas intermedios.

Para comercios con un catálogo extenso de vídeos, el procesamiento manual resulta ineficiente. Este script en Bash permite automatizar el proceso por lotes en el servidor:

#!/usr/bin/env bash
set -euo pipefail

INPUT_DIR="./videos-brutos"
OUTPUT_DIR="./videos-listos"

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 "Procesando: $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 "Procesamiento por lotes completado: Todos los archivos incorporan faststart."

#Cómo configurar el schema VideoObject en WooCommerce para Google Shopping

Los datos estructurados de la ficha son un canal distinto del feed: Merchant Center lee video_link, mientras que la Búsqueda de Google lee el marcado VideoObject de la página. La guía de datos estructurados de vídeo de Google (Datos estructurados de vídeo) exige name, thumbnailUrl y uploadDate, define contentUrl como la URL de los bytes reales del vídeo y embedUrl como la URL del propio reproductor, y establece que el marcado debe estar en una página donde los usuarios puedan ver el vídeo. Incluya el fragmento siguiente solo en plantillas de producto que muestren realmente el vídeo.

Para conseguir una correlación óptima, la ficha de producto en WooCommerce debe albergar un esquema VideoObject vinculado al esquema principal Product. En el vocabulario de Schema.org, el vídeo se vincula a través de las propiedades subjectOf o video.

El siguiente código en PHP se engancha al filtro woocommerce_structured_data_product en el archivo functions.php del tema hijo para incorporar automáticamente estos metadatos:

<?php
/**
 * Incorpora el esquema VideoObject en los datos estructurados del producto en WooCommerce.
 */
declare(strict_types=1);

if (!defined('ABSPATH')) {
    exit;
}

add_filter('woocommerce_structured_data_product', 'wpp_inject_product_video_schema_es', 20, 2);

function wpp_inject_product_video_schema_es(array $markup, WC_Product $product): array
{
    $product_id = $product->get_id();
    
    // Obtener la URL del video registrada en los metadatos del producto
    $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('Demostracion en video de %s', $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('Presentacion audiovisual oficial sobre las prestaciones 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;
}

Al incluir este bloque de código, el rastreador detecta al instante la relación directa entre el código GTIN, el precio y el contenido audiovisual asociado.

En la especificación técnica de Google Merchant Center, el atributo reservado para la incorporación de vídeos es [video_link] (definido en documentos XML como <g:video_link>). Se admiten dos modalidades de enlaces:

  1. Una URL directa hacia un archivo MP4 público alojado en un servidor con alta capacidad y compatibilidad con solicitudes de rango.
  2. Un enlace directo a un vídeo de YouTube en formato estándar (https://www.youtube.com/watch?v=ID) o corto (https://youtu.be/ID).

Optar por YouTube resulta conveniente en muchas configuraciones porque Google gestiona la conversión de medios dentro de su propia infraestructura. Si se prefiere distribuir archivos MP4 propios a través de una CDN, es imprescindible que las URLs respondan directamente sin redirecciones HTTP 301 y devuelvan la cabecera Content-Type: video/mp4.

El siguiente desarrollo genera un feed XML eficiente en WordPress mediante el uso de la clase XMLWriter:

<?php
/**
 * Generador de feed XML para Google Merchant Center con atributo de video en WooCommerce.
 */
declare(strict_types=1);

if (!defined('ABSPATH')) {
    exit;
}

add_action('init', 'wpp_register_es_merchant_feed');

function wpp_register_es_merchant_feed(): void
{
    add_feed('google-merchant-video-es', 'wpp_render_es_merchant_feed');
}

function wpp_render_es_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 con Video para Google Shopping');
    $writer->writeElement('link', home_url('/'));
    $writer->writeElement('description', 'Catalogo de productos optimizado con atributos de video para 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;
}

Tras añadir este código, es preciso actualizar las opciones de enlaces permanentes en el panel de WordPress. El feed estará disponible de forma inmediata en ejemplo-tienda.es/feed/google-merchant-video-es/.

#Cuánto tarda Google Merchant Center en procesar un vídeo de producto

El atributo video_link es reciente. Google lo anunció en su actualización de la especificación de 2026 (actualización de la especificación de datos de producto de Merchant Center 2026): los comerciantes podían enviar vídeos desde el primer momento, los errores de validación técnica se notifican desde el 14 de abril de 2026, y la publicación, junto con las comprobaciones de políticas y calidad, comenzó el 30 de junio de 2026. Un feed que enviaba video_link antes de esa fecha no mostraba ningún vídeo, lo que parecía una cola bloqueada pero era el despliegue previsto.

Para cambios posteriores, la página de ayuda del atributo da dos cifras. Cuando un vídeo se sustituye con una URL nueva y única, Google suele volver a rastrearlo en 24 a 72 horas, el producto aparece como “En revisión” y el vídeo anterior se sigue mostrando mientras tanto. Cuando el archivo cambia bajo la misma URL, el cambio puede tardar hasta seis semanas en detectarse.

Los problemas con vídeos aparecen en la sección “Requiere atención” de la cuenta de Merchant Center. Los errores de políticas o de calidad impiden que el vídeo se muestre, pero según Google no afectan a la publicación de la oferta, así que un vídeo rechazado no provoca el rechazo del producto.

Las tiendas que envían productos mediante una API, y no con un archivo XML que Google descarga, tienen un segundo plazo. La Content API for Shopping llegó a su fin el 18 de agosto de 2026; desde el 1 de septiembre de 2026 las peticiones sin prórroga aprobada fallan de forma intermitente con HTTP 410, y el cierre total está previsto para principios de 2027 (Retirada y fin del servicio). Un plugin que siga llamando a la API antigua puede perder actualizaciones de vídeo solo por ese motivo, así que compruebe qué API usa su integración antes de culpar al archivo. Un feed que Merchant Center descarga desde una URL, como el anterior, no pasa por la Content API.

#Cómo crear un sitemap de vídeo dedicado para productos de WooCommerce

De forma paralela al feed del catálogo, el índice general del buscador utiliza un sitemap de vídeo (Google Video Sitemap) para indexar contenidos en la búsqueda orgánica, la pestaña de vídeos y las sugerencias de Google Discover.

Un sitemap de vídeo válido requiere declarar el espacio de nombres xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" y especificar campos como <video:thumbnail_loc>, <video:title>, <video:description> y <video:content_loc> o <video:player_loc>.

El siguiente script establece un sitemap de vídeo dedicado en WooCommerce:

<?php
/**
 * Generador de Video Sitemap especifico para productos de WooCommerce.
 */
declare(strict_types=1);

if (!defined('ABSPATH')) {
    exit;
}

add_action('init', 'wpp_register_es_video_sitemap');

function wpp_register_es_video_sitemap(): void
{
    add_feed('video-sitemap-es.xml', 'wpp_render_es_video_sitemap');
}

function wpp_render_es_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;
}

Envíe la dirección ejemplo-tienda.es/video-sitemap-es.xml en Google Search Console para que la Búsqueda de Google descubra los vídeos de producto.

#Cómo evitar que Cloudflare y las CDN bloqueen a Googlebot-Video

Aun con archivos correctamente preparados y feeds exentos de errores, la descarga puede frustrarse por controles de seguridad perimetrales.

Servicios de CDN como Cloudflare incorporan filtros automáticos:

  1. Bot Fight Mode: Examina huellas TLS y la carencia de cabeceras de navegadores de usuario. Dado que Googlebot-Video presenta patrones distintos a los de un navegador ordinario, las solicitudes suelen bloquearse con un error 403.
  2. Protección de Hotlinking: Analiza la cabecera Referer. Como los rastreadores no adjuntan referencias de navegación, la solicitud es rechazada.
  3. Caché de Fragmentos: Determinadas directivas intentan almacenar el archivo completo en la caché de borde antes de emitir respuesta. Si el servidor de origen tarda en responder, se produce un corte de conexión.

En Cloudflare, esto se soluciona configurando una regla de 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)

La acción asignada debe ser Skip, omitiendo las reglas gestionadas de WAF, Super Bot Fight Mode y los límites de tasa para las peticiones que coincidan. Super Bot Fight Mode se incluye en los planes Pro, Business y Enterprise, y Cloudflare documenta que las reglas personalizadas con Skip se ejecutan antes que él (Super Bot Fight Mode). El Bot Fight Mode gratuito funciona de otra manera: Cloudflare indica que no puede omitirse con reglas personalizadas de WAF ni con Page Rules, y que las acciones Skip, Bypass y Allow no tienen efecto sobre él (Bot Fight Mode). En el plan gratuito, las opciones son desactivar Bot Fight Mode o añadir una regla de IP Access, que se evalúa primero.

En el servidor web Nginx, asegúrese de que las peticiones parciales se transmitan sin fricción:

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;
}

El uso coordinado de sendfile on y max_ranges 100 facilita que el núcleo de Linux envíe los bloques de datos directamente a la red con un consumo mínimo de recursos.

#Cómo comprobar que una petición procede realmente de Googlebot-Video

Antes de abrir una excepción en el cortafuegos, confirme en el registro de accesos que las peticiones bloqueadas son de Google. La documentación de rastreadores de Google (rastreadores comunes de Google) recoge Googlebot-Video con el token de robots.txt Googlebot-Video y el agente de usuario Googlebot-Video/1.0, y advierte de que la cadena de agente de usuario se puede falsificar. Un nombre coincidente no demuestra nada por sí solo.

Dos comprobaciones sí lo demuestran. La búsqueda DNS inversa de la IP debe devolver un nombre de host en googlebot.com (con la forma crawl-***-***-***-***.googlebot.com o geo-crawl-***-***-***-***.geo.googlebot.com), y la búsqueda directa de ese nombre debe devolver la misma IP. Como alternativa, la IP debe estar dentro de los rangos que Google publica en common-crawlers.json.

host 66.249.66.1
host crawl-66-249-66-1.googlebot.com

La misma página indica que las reglas definidas para el token Googlebot-Video se aplican a las funciones de vídeo de la Búsqueda y a otros productos que dependen de vídeo. Un robots.txt que bloquea /wp-content/uploads/ para todos los agentes oculta también los vídeos de producto alojados en la propia tienda, y la ayuda de Merchant Center exige expresamente que robots.txt no bloquee la URL del vídeo. Revise el archivo publicado antes de tocar nada en la CDN:

curl -s https://ejemplo-tienda.es/robots.txt | grep -i -A5 "user-agent"

#Cómo verificar encabezados HTTP y solicitudes de rango con curl y ffprobe

Antes de reactivar el feed en Google Merchant Center, es conveniente simular las peticiones del rastreador desde la consola.

Paso 1: Comprobar el manejo de rangos de bytes con curl:

curl -I -X GET \
  -H "User-Agent: Googlebot-Video/1.0" \
  -H "Range: bytes=0-1024" \
  https://ejemplo-tienda.es/wp-content/uploads/producto-prueba.mp4

Una respuesta satisfactoria debe reflejar:

  • Código de estado: HTTP/2 206 o HTTP/1.1 206 Partial Content.
  • Cabecera: Accept-Ranges: bytes.
  • Cabecera: Content-Range: bytes 0-1024/TAMAÑO_TOTAL.
  • Cabecera: Content-Type: video/mp4.

Si la respuesta devuelve 200 OK o 403 Forbidden, Google Merchant Center no podrá procesar el contenido multimedia.

Paso 2: Comprobar la estructura de átomos mediante ffprobe:

ffprobe -v trace -show_packets https://ejemplo-tienda.es/wp-content/uploads/producto-prueba.mp4 2>&1 | head -n 40

Si el átomo type:'moov' figura entre las primeras líneas, el archivo contiene el ajuste faststart. Si aparece en primer lugar type:'mdat', el contenedor debe reorganizarse antes de reiniciar la indexación.

#Preguntas frecuentes sobre el procesamiento de vídeo en Google Merchant Center

Como guía complementaria para la gestión del catálogo, conviene valorar estos criterios:

  1. Es preferible alojar vídeos en YouTube antes que usar archivos MP4 propios Desde una perspectiva operativa en Google Merchant Center, YouTube constituye la vía más estable y directa, ya que elimina el consumo de ancho de banda y los bloqueos por cortafuegos. No obstante, disponer de archivos MP4 en una CDN propia proporciona control total sobre el reproductor, evita publicidad de terceros y mantiene la atención del usuario en el proceso de compra.

  2. Cuánto tarda el procesamiento habitual de vídeo en Google Merchant Center La ayuda de Google indica de 24 a 72 horas para un nuevo rastreo cuando el vídeo pasa a una URL nueva, y hasta seis semanas cuando el archivo cambia bajo la misma URL. Si un vídeo sigue sin mostrarse mucho después de ese plazo y no hay nada en “Requiere atención”, lo más probable es un problema de descarga: una petición bloqueada, una redirección o una URL que devuelve una página en lugar del archivo.

  3. Conviene cambiar la URL del vídeo tras sustituir un archivo MP4 en el servidor Sí. La ayuda de Google pide una URL nueva y única al sustituir un vídeo, porque un cambio bajo la misma URL puede tardar hasta seis semanas en detectarse. Un nombre de archivo nuevo, como producto-v2.mp4, es la forma más limpia de hacerlo.

Al homogenizar los vídeos con faststart, habilitar solicitudes de rango parciales, sincronizar el esquema VideoObject y publicar un feed XML depurado, las tiendas resuelven de raíz las demoras de procesamiento y potencian la visibilidad de su catálogo en Google Shopping.

Siguiente paso

Transforma el artículo en una implementación real

Este bloque refuerza el enlazado interno y lleva al lector al siguiente paso más útil dentro de la arquitectura del sitio.

¿Quieres implementar esto en tu sitio?

Si la visibilidad en Google y en sistemas de IA importa, puedo estructurar contenido, FAQ, schema y enlazado interno para SEO, GEO y AEO.

Cluster relacionado

Explora otros servicios WordPress y base de conocimiento

Refuerza tu negocio con soporte técnico profesional en áreas clave del ecosistema WordPress.

Preguntas frecuentes

Respuestas prácticas para aplicar el tema en la ejecución real.

Por qué el vídeo de mi producto permanece en estado de procesamiento durante días en Google Merchant Center#
Las causas habituales son una URL que Googlebot no puede descargar (un cortafuegos que responde 403, una redirección, un inicio de sesión), un enlace a una página en lugar del archivo de vídeo, un archivo fuera de los límites de Google o un átomo moov al final del MP4. Un cambio bajo la misma URL también puede tardar hasta seis semanas en detectarse.
Qué formatos de vídeo acepta Google Merchant Center#
Google enumera MPG, MP4, WMV, AVI, MOV, FLV, MPEG-1 y MPEGPS, con una duración de 6 a 240 segundos, hasta 500 MB, al menos 720p y relación de aspecto 9:16, 16:9 o 1:1. Google no prescribe un códec; H.264 en MP4 con faststart es una elección segura para la web.
Es posible emplear enlaces de YouTube en el atributo video_link#
Sí, Merchant Center acepta URLs de YouTube. El vídeo debe ser públicamente accesible, alcanzable por Googlebot sin inicio de sesión y no estar bloqueado por robots.txt, por lo que los vídeos privados no sirven.
Cómo comprobar si un archivo MP4 incluye faststart sin necesidad de volver a renderizarlo#
Ejecute ffprobe o mediainfo desde el terminal. Si el átomo moov se encuentra detrás del bloque mdat, el archivo puede reempaquetarse de inmediato con ffmpeg -i entrada.mp4 -c copy -movflags +faststart salida.mp4.

¿Necesitas un FAQ adaptado a tu sector y mercado? Preparamos una versión alineada con tus objetivos de negocio.

Hablemos

Artículos Relacionados