Warum hängt die Videoverarbeitung im Google Merchant Center und wie behebt man sie
Produktvideos haben sich im modernen E-Commerce zu einem der stärksten Faktoren für Kaufentscheidungen entwickelt. Google Shopping und die kostenlosen Produkteinträge in der Google-Suche heben Angebote mit authentischen Demonstrationen, Funktionstests und 360-Grad-Ansichten immer deutlicher hervor. Google nennt den Zweck des neuen Attributs ohne Umschweife: Produktvideos zeigen Artikel in der Anwendung oder aus verschiedenen Perspektiven und werden verwendet, um die Darstellung von Produkten auf Google zu optimieren (Aktualisierung der Merchant Center-Produktdatenspezifikation 2026).
Viele Betreiber von WooCommerce-Shops stehen jedoch vor einer frustrierenden technischen Hürde. Nach der Hinterlegung von Video-URLs im Produktfeed meldet das Google Merchant Center über viele Tage hinweg einen aktiven Verarbeitungsstatus, woraufhin das Video entweder lautlos verschwindet oder ohne detaillierten Fehlerbericht abgelehnt wird. Bei Shops mit tausenden Artikeln erscheinen die Videos schlicht nicht, und der Status verrät nichts über die Ursache.
Dieser technische Leitfaden analysiert die Architektur der Video-Verarbeitungspipeline von Google, erklärt die Struktur von MP4-Containern, zeigt Lösungen für Edge-Firewalls und CDNs auf und liefert einsatzbereite PHP-Lösungen für strukturierte Daten und dynamische Feeds in WooCommerce.
Warum hängt die Videoverarbeitung im Google Merchant Center fest
Wird im Datenfeed oder über die Merchant API eine Medien-URL übermittelt, bindet Google Merchant Center die externe Datei nicht einfach direkt in die Benutzeroberfläche ein. Stattdessen startet ein mehrstufiger Ingestion-Prozess. Der erste Schritt ist ein Abruf: Die Hilfeseite des Attributs verlangt, dass Googlebot auf das Video zugreifen kann, und Googles Crawler-Liste nennt Googlebot-Video als Agenten für Produkte, die von Videos abhängen. Scheitert dieser Abruf oder läuft er in einen Timeout, gelangt das Video nie in die Prüfung.
Dieser Prüfprozess bleibt aus vier technischen Gründen in einer Warteschleife hängen:
Der wichtigste Grund liegt in der inneren Struktur des MP4-Containers und der Position des sogenannten moov-Atoms. Das moov-Atom enthält den gesamten Index der Videospuren, Zeitstempel der Einzelbilder und Metadaten. Viele Schnittprogramme und Kamerasysteme platzieren diesen Indexblock standardmäßig ganz am Ende der Datei, nach den eigentlichen Mediendaten (mdat). Für lokale Videoplayer stellt dies kein Problem dar. Der Google-Crawler versucht jedoch, nur die ersten Kilobytes einer Datei zu analysieren, um Bildformat, Laufzeit und Codecs zu bestimmen. Befindet sich der Index am Ende einer 60 Megabyte großen Datei, muss der Crawler den gesamten Datenstrom herunterladen. Wenn der Server des Shops Bandbreitenbegrenzungen aufweist oder Verzögerungen auftreten, bricht Google den Vorgang nach einem Timeout ab und markiert den Eintrag als hängend.
Der zweite Grund ist die fehlende oder fehlerhafte Unterstützung von HTTP Range Requests auf dem Webserver oder CDN. Der Googlebot-Video arbeitet mit Byte-Bereichsabfragen über den Header Range: bytes=0-1048575. Ein normgerechter Server muss darauf mit dem Statuscode 206 Partial Content und einem passenden Content-Range-Header antworten. Reagiert der Shop-Server oder ein Caching-Plugin stattdessen mit einer gewöhnlichen 200 OK-Antwort und liefert den gesamten Inhalt unfragmentiert aus, muss der Crawler die ganze Datei laden, um sie zu lesen, und läuft in dasselbe Zeitlimit wie bei einem moov-Atom am Dateiende.
Der dritte Faktor betrifft restriktive Web Application Firewalls und Bot-Schutzfunktionen bei Anbietern wie Cloudflare, AWS CloudFront oder Sucuri. Googlebot-Video nutzt mitunter andere IP-Bereiche als der normale Googlebot für Textseiten. Automatisierte Schutzmechanismen wie Cloudflare Bot Fight Mode stufen diese Anfragen häufig als verdächtige Bot-Aktivität ein und antworten mit JavaScript-Challenges oder dem Fehler 403 Forbidden. Das Merchant Center erhält keine Videodatei, sondern eine statische Fehlerseite, was in der Verwaltungskonsole lediglich als unbestimmter Verarbeitungsfehler angezeigt wird.
Der vierte Aspekt ist die Datei selbst. Googles Spezifikation nennt zulässige Container und feste Grenzwerte (siehe nächster Abschnitt), keine Codec-Profile. Variable Bildraten, YUV 4:4:4 oder 10-Bit-Farbe sind also keine dokumentierten Ablehnungsgründe. Eine Normalisierung auf H.264 mit yuv420p und konstanter Bildrate, wie im FFmpeg-Rezept weiter unten, schließt sie bei der Fehlersuche trotzdem als Variable aus.
Anforderungen von Google Merchant Center an Videos für video_link
Bevor Sie Server untersuchen, gleichen Sie die Datei mit den veröffentlichten Grenzwerten ab. Die Hilfeseite zum Attribut (Videolink [video_link]) nennt sie:
| Anforderung | Wert in der Spezifikation von Google |
|---|---|
| Länge | 6 bis 240 Sekunden |
| Dateigröße | bis 500 MB |
| Seitenverhältnis | 9:16, 16:9 oder 1:1 |
| Auflösung | mindestens 720p (1.280 x 720) |
| Videos pro Produkt | bis zu 10 |
| URL | bis 2.000 Zeichen, beginnend mit http:// oder https:// |
| Dateitypen | MPG, MP4, WMV, AVI, MOV, FLV, MPEG-1, MPEGPS |
Drei Regeln derselben Seite erklären viele Fälle von “Verarbeitung”, die mit dem Server nichts zu tun haben. Eine URL außerhalb von YouTube muss direkt auf die Videodatei zeigen, nicht auf eine Seite mit einem Player, ein Link auf die Produktseite reicht also nicht. Das Video muss öffentlich zugänglich sein: Googlebot muss es ohne Login oder Token abrufen können, und die robots.txt darf es nicht sperren. Außerdem muss der Link statisch sein, er darf also nicht ablaufen und später nicht für ein anderes Video wiederverwendet werden. Signierte CDN-URLs mit kurzer Gültigkeit verstoßen gegen diese Regel.
Google ergänzt, dass der Händler die Lizenzrechte für Marketingzwecke besitzen muss, dass Videos nicht unscharf sein dürfen und dass Ton optional ist. Bei mehreren Videos pro Produkt werden die URLs in einem Textfeed durch Kommas getrennt, in XML wird das Element wiederholt.
Wie optimiert man MP4-Dateien mit dem faststart-Flag für Google Shopping
Um Fehler direkt an der Quelldatei zu vermeiden, muss jeder Videoclip vor dem Upload in die WordPress-Mediathek so strukturiert werden, dass der Index an den Anfang der Datei rückt. In der Medienverarbeitung mit FFmpeg wird dieser Vorgang als faststart bezeichnet.
Durch das Setzen des Flags faststart wird das moov-Atom vor den mdat-Block verschoben. Dadurch liest jeder HTTP-Client, einschließlich Googlebot-Video, bereits nach den ersten 32 Kilobytes alle erforderlichen Metadaten aus und kann die Datei ohne vollständigen Download akzeptieren.
Mit dem folgenden FFmpeg-Befehl lässt sich eine vorhandene MP4-Datei ohne zeitaufwendige Neukodierung verlustfrei umstrukturieren:
ffmpeg -i produkt-original.mp4 -c copy -movflags +faststart produkt-faststart.mp4Liegt das Ausgangsmaterial direkt von einer Studiokamera oder einem Smartphone vor und weist schwankende Bildraten auf, empfiehlt sich eine vollständige Bereinigung mit festen 30 Bildern pro Sekunde, High Profile und YUV 4:2:0 Farbformat:
ffmpeg -i produkt-roh.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 \
produkt-shop-optimiert.mp4Der Parameter -g 60 erzwingt bei 30 Bildern pro Sekunde exakt alle zwei Sekunden ein Schlüsselbild (Keyframe). Dies ermöglicht es den Algorithmen von Google, Vorschau-Animationen für Suchergebnisse ohne aufwendiges Dekodieren langer Bildfolgen zu erzeugen.
Für Online-Händler mit umfangreichen Katalogen empfiehlt sich ein automatisiertes Shell-Skript zur Stapelverarbeitung:
#!/usr/bin/env bash
set -euo pipefail
INPUT_DIR="./rohvideos"
OUTPUT_DIR="./fertige-videos"
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 "Verarbeite: $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 "Stapelverarbeitung abgeschlossen: Alle Videos sind fuer Google Shopping optimiert."Wie konfiguriert man das VideoObject-Schema in WooCommerce für Google Shopping
Strukturierte Daten auf der Produktseite sind ein anderer Kanal als der Feed: Merchant Center liest video_link, die Google-Suche liest das VideoObject-Markup der Seite. Googles Leitfaden zu strukturierten Videodaten (Strukturierte Daten für Videos) verlangt name, thumbnailUrl und uploadDate, definiert contentUrl als URL der eigentlichen Videodatei und embedUrl als URL des Players selbst und schreibt vor, dass das Markup auf einer Seite stehen muss, auf der Nutzer das Video ansehen können. Geben Sie das folgende Snippet daher nur in Produkt-Templates aus, die das Video tatsächlich zeigen.
Eine saubere semantische Auszeichnung verlangt, dass das Produkt-Markup ein vollwertiges VideoObject enthält, das über die Eigenschaften subjectOf oder video mit dem übergeordneten Schema Product verknüpft ist.
Der folgende PHP-Code lässt sich direkt in die Datei functions.php des Child-Themes einbinden und erweitert die strukturierten Daten von WooCommerce automatisch:
<?php
/**
* Erweitert das WooCommerce Product-Schema um VideoObject-Metadaten.
*/
declare(strict_types=1);
if (!defined('ABSPATH')) {
exit;
}
add_filter('woocommerce_structured_data_product', 'wpp_inject_product_video_schema_de', 20, 2);
function wpp_inject_product_video_schema_de(array $markup, WC_Product $product): array
{
$product_id = $product->get_id();
// Abruf der benutzerdefinierten Video-Metadaten
$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('Produktvideo und Demonstration von %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('Offizielles Produktvideo zu Eigenschaften und Anwendung von %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;
}Mit dieser Strukturierung erkennt der Googlebot beim Seitenaufruf sofort den Zusammenhang zwischen GTIN, Artikelpreis und dem bereitgestellten Produktvideo.
Wie erstellt man einen XML-Produktfeed mit video_link in WooCommerce
In den offiziellen Richtlinien des Google Merchant Centers trägt das Attribut für Medieninhalte die Bezeichnung [video_link] (in XML-Dokumenten als <g:video_link> definiert). Zulässig sind zwei Varianten:
- Eine direkte URL zu einer öffentlich erreichbaren MP4-Datei auf einem performanten Server, der Byte-Range-Requests unterstützt.
- Ein Link zu einem YouTube-Video im Standardformat (
https://www.youtube.com/watch?v=ID) oder als Kurzlink (https://youtu.be/ID).
Die Nutzung von YouTube ist für viele Händler pragmatisch, da Google die Medienverarbeitung intern abwickelt und keine Belastung für den eigenen Shop-Server entsteht. Wer eigene MP4-Dateien über ein CDN bereitstellt, muss sicherstellen, dass die URLs direkt ohne HTTP-Weiterleitungen antworten und den MIME-Typ video/mp4 senden.
Das folgende Skript registriert einen performanten XML-Feed-Endpunkt in WordPress unter Verwendung von XMLWriter:
<?php
/**
* XML-Produktfeed-Generator fuer Google Merchant Center mit Videounterstuetzung.
*/
declare(strict_types=1);
if (!defined('ABSPATH')) {
exit;
}
add_action('init', 'wpp_register_de_merchant_feed');
function wpp_register_de_merchant_feed(): void
{
add_feed('google-merchant-video-de', 'wpp_render_de_merchant_feed');
}
function wpp_render_de_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') . ' - Google Shopping Video-Feed');
$writer->writeElement('link', home_url('/'));
$writer->writeElement('description', 'Produktfeed fuer das Google Merchant Center mit Videoattributen.');
$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;
}Nach dem Speichern des Codes müssen die Permalinks in WordPress einmalig neu geladen werden. Der Feed steht anschließend unter beispiel-shop.de/feed/google-merchant-video-de/ zur Verfügung.
Wie lange Google Merchant Center für die Verarbeitung eines Produktvideos braucht
Das Attribut video_link ist neu. Google hat es mit der Spezifikationsaktualisierung 2026 angekündigt (Aktualisierung der Merchant Center-Produktdatenspezifikation 2026): Händler konnten Videos sofort einreichen, technische Validierungsfehler werden seit dem 14. April 2026 gemeldet, und die Auslieferung samt Richtlinien- und Qualitätsprüfung begann am 30. Juni 2026. Ein Feed, der video_link vor diesem Datum lieferte, zeigte überhaupt keine Videos. Das wirkte wie eine hängende Warteschlange, war aber der geplante Start.
Für spätere Änderungen nennt die Hilfeseite des Attributs zwei Werte. Wird ein Video unter einer neuen, eindeutigen URL ersetzt, crawlt Google in der Regel innerhalb von 24 bis 72 Stunden neu, das Produkt erscheint als “Wird überprüft”, und das vorherige Video wird in der Zwischenzeit weiter ausgeliefert. Ändert sich die Datei unter derselben URL, kann es bis zu sechs Wochen dauern, bis die Änderung erkannt wird.
Probleme mit Videos stehen im Bereich “Überprüfung erforderlich” des Merchant Center-Kontos. Richtlinien- oder Qualitätsfehler verhindern die Auslieferung des Videos, haben laut Google aber keine Auswirkungen auf die Auslieferung des zugehörigen Angebots. Ein abgelehntes Video führt also nicht zur Ablehnung des Produkts.
Shops, die Produkte per API statt über eine abgerufene XML-Datei senden, haben eine zweite Frist. Die Content API for Shopping hat am 18. August 2026 ihr Sunset erreicht; seit dem 1. September 2026 scheitern Anfragen ohne genehmigte Verlängerung zeitweise mit HTTP 410, und die vollständige Abschaltung ist für Anfang 2027 geplant (Einstellung und Sunset). Ein Plugin, das noch die alte API aufruft, kann Videoaktualisierungen allein deshalb verlieren. Prüfen Sie daher, welche API Ihre Feed-Integration nutzt, bevor Sie die Datei verdächtigen. Ein Feed, den Merchant Center über eine URL abruft, wie der oben gezeigte, läuft nicht über die Content API.
Wie richtet man eine eigene Video-Sitemap für WooCommerce-Produkte ein
Für die organische Erfassung in der allgemeinen Google-Suche, im Video-Reiter und bei Google Discover ist neben dem Händlerfeed eine strukturierte Video-Sitemap von großem Wert.
Eine gültige Video-Sitemap nutzt den Namensraum xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" und enthält Pflichtfelder wie <video:thumbnail_loc>, <video:title>, <video:description> sowie <video:content_loc> oder <video:player_loc>.
Hier ist ein eigenständiger Sitemap-Endpunkt für WooCommerce:
<?php
/**
* Video-Sitemap-Generator fuer WooCommerce-Produktvideos.
*/
declare(strict_types=1);
if (!defined('ABSPATH')) {
exit;
}
add_action('init', 'wpp_register_de_video_sitemap');
function wpp_register_de_video_sitemap(): void
{
add_feed('video-sitemap-de.xml', 'wpp_render_de_video_sitemap');
}
function wpp_render_de_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;
}Reichen Sie die URL beispiel-shop.de/video-sitemap-de.xml in der Google Search Console ein, damit die Google-Suche die Produktvideos findet.
Wie verhindert man, dass Cloudflare und CDNs den Googlebot-Video blockieren
Selbst bei fehlerfreien Videodateien und validen XML-Feeds scheitert das Ingestion-Verfahren häufig an vorgelagerten Sicherheitsregeln im CDN.
Moderne Netzwerke wie Cloudflare setzen automatisierte Schutzfunktionen ein:
- Bot Fight Mode: Erkennt abweichende TLS-Signaturen und fehlende Standard-Browser-Header. Da Googlebot-Video andere Header nutzt als typische Webbrowser, lösen diese Anfragen oft unbemerkt eine Challenge oder den Status 403 aus.
- Hotlink-Schutz: Vergleicht den
Referer-Header. Da Suchmaschinen-Crawler keine Referrer-Informationen mitsenden, wird der Zugriff verweigert. - Byte-Range-Verhalten: Standard-Caching-Regeln versuchen mitunter, die gesamte Datei im Edge-Cache abzulegen, bevor die Antwort gesendet wird. Überschreitet die Datei Grenzwerte, bricht die Verbindung ab.
In Cloudflare lässt sich dieses Problem mit einer gezielten WAF-Ausnahmeregel beheben:
(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)Als Aktion wird Skip gewählt, wobei verwaltete WAF-Regeln, Super Bot Fight Mode und Rate-Limiting für passende Anfragen übersprungen werden. Super Bot Fight Mode ist in den Plänen Pro, Business und Enterprise enthalten, und Cloudflare dokumentiert, dass Custom Rules mit Skip vor ihm ausgeführt werden (Super Bot Fight Mode). Der kostenlose Bot Fight Mode verhält sich anders: Laut Cloudflare lässt er sich weder mit WAF-Custom-Rules noch mit Page Rules umgehen, und die Aktionen Skip, Bypass und Allow haben keine Wirkung auf ihn (Bot Fight Mode). Im kostenlosen Plan bleibt nur, Bot Fight Mode abzuschalten oder eine IP-Access-Regel anzulegen, die zuerst ausgewertet wird.
Auf dem Nginx-Server empfiehlt sich folgende Direktiven-Konfiguration:
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;
}Die Kombination aus sendfile on und max_ranges 100 ermöglicht eine direkte Übertragung der Dateifragmente über den Linux-Kernel ohne Speicherengpässe.
Wie prüft man, ob eine Anfrage wirklich von Googlebot-Video stammt
Bevor Sie eine Firewall-Ausnahme einrichten, prüfen Sie im Access-Log, ob die blockierten Anfragen tatsächlich von Google kommen. Googles Crawler-Dokumentation (Gängige Crawler von Google) führt Googlebot-Video mit dem robots.txt-Token Googlebot-Video und dem User-Agent Googlebot-Video/1.0 und warnt, dass ein User-Agent gefälscht werden kann. Ein passender Name beweist allein nichts.
Zwei Prüfungen schon. Ein Reverse-DNS-Lookup der IP muss einen Hostnamen in googlebot.com liefern (in der Form crawl-***-***-***-***.googlebot.com oder geo-crawl-***-***-***-***.geo.googlebot.com), und ein Forward-Lookup dieses Hostnamens muss dieselbe IP zurückgeben. Alternativ muss die IP in den Bereichen liegen, die Google in common-crawlers.json veröffentlicht.
host 66.249.66.1
host crawl-66-249-66-1.googlebot.comDieselbe Seite besagt, dass Regeln für das Token Googlebot-Video für Videofunktionen in der Suche und für andere Produkte gelten, die von Videos abhängen. Eine robots.txt, die /wp-content/uploads/ für alle Agenten sperrt, verbirgt also auch selbst gehostete Produktvideos, und die Merchant Center-Hilfe verlangt ausdrücklich, dass die robots.txt die Video-URL nicht blockiert. Prüfen Sie die Live-Datei, bevor Sie am CDN etwas ändern:
curl -s https://beispiel-shop.de/robots.txt | grep -i -A5 "user-agent"Wie prüft man HTTP-Header und Range-Requests mit curl und ffprobe
Vor dem erneuten Absenden des Feeds im Google Merchant Center sollte die Serverantwort über die Konsole simuliert werden.
Schritt 1: Überprüfung der HTTP-Range-Unterstützung mit curl:
curl -I -X GET \
-H "User-Agent: Googlebot-Video/1.0" \
-H "Range: bytes=0-1024" \
https://beispiel-shop.de/wp-content/uploads/produkt-test.mp4Die Antwort muss folgende Merkmale aufweisen:
- Statuscode:
HTTP/2 206oderHTTP/1.1 206 Partial Content. - Header:
Accept-Ranges: bytes. - Header:
Content-Range: bytes 0-1024/GESAMTGRÖSSE. - Header:
Content-Type: video/mp4.
Erfolgt eine Antwort mit Status 200 OK oder 403 Forbidden, wird Google das Video nicht verarbeiten können.
Schritt 2: Analyse der Atomstruktur mit ffprobe:
ffprobe -v trace -show_packets https://beispiel-shop.de/wp-content/uploads/produkt-test.mp4 2>&1 | head -n 40Erscheint type:'moov' unter den ersten Zeilen, ist das faststart-Flag aktiv. Erscheint type:'mdat' zuerst, muss die Datei vor der Bereitstellung umgepackt werden.
Häufige Fragen zur Videoverarbeitung im Google Merchant Center
Zur Orientierung in der laufenden Shop-Betreuung helfen folgende Erfahrungswerte:
Ist YouTube-Hosting für Merchant Center besser als eigene MP4-Dateien Aus Sicht der technischen Ausfallsicherheit ist YouTube die einfachste Lösung für Google Merchant Center. Serverlast, Firewall-Blockaden und Transkodierungsprobleme entfallen vollständig. Eigene MP4-Dateien über ein Medien-CDN bieten jedoch den Vorteil, dass keine Fremdwerbung ausgespielt wird und das visuelle Design nahtlos an den Onlineshop angepasst bleibt.
Wie lange dauert die normale Videoverarbeitung im Google Merchant Center Die Google-Hilfe nennt 24 bis 72 Stunden für ein erneutes Crawling, wenn das Video unter eine neue URL wechselt, und bis zu sechs Wochen, wenn sich die Datei unter derselben URL ändert. Wird ein Video lange nach diesem Zeitraum noch nicht ausgeliefert und steht nichts unter “Überprüfung erforderlich”, deutet das auf ein Abrufproblem hin: eine blockierte Anfrage, eine Weiterleitung oder eine URL, die eine Seite statt der Datei liefert.
Muss die Video-URL nach dem Aktualisieren einer MP4-Datei geändert werden Ja. Die Google-Hilfe verlangt beim Ersetzen eines Videos eine neue, eindeutige URL, weil eine Änderung unter derselben URL bis zu sechs Wochen unbemerkt bleiben kann. Ein neuer Dateiname wie
produkt-v2.mp4ist der sauberste Weg.
Mit der Kombination aus dem faststart-Standard, einer soliden Range-Request-Unterstützung, abgestimmtem VideoObject-Schema und einem sauberen XML-Feed beseitigen Shopbetreiber bestehende Verarbeitungsblockaden und sichern ihren Produkten maximale Aufmerksamkeit bei Google Shopping.






