Weitere JavaScript-SEO-Experimente mit dem Google Tag Manager

Lerne, wie du Titel-Tags, Meta-Beschreibungen, noindex, kanonische Tags und interne Links mit dem Google Tag Manager ändern kannst und wie Google mit diesen Änderungen umgeht.

Nach unserem kleinen JavaScript SEO Experiment mit zum Einrichten von hreflang mit Google Tag Managerhaben wir uns entschlossen, weitere Tests durchzuführen, um zu analysieren, wie Google mit Änderungen umgeht, die mit dem Google Tag Manager an Websites mit JavaScript vorgenommen werden:

  • Erkennt Google Änderungen an Titel-Tags und Meta-Beschreibungen , und die mit Google Tag Manager implementiert wurden?
  • De-indexiert Google Seiten, die auf "noindex" gesetzt wurden mit Google Tag Manager?
  • Respektiert Google kanonische Tags die mit Google Tag Manager hinzugefügt wurden?
  • Indexiert Google auch Seiten, die nur über interne Links verlinkt sind, und mit dem Google Tag Manager injiziert werden?
  • Indexiert Google auch URLs, die nur über JSON-LD Markup verlinkt sind , und die mit Google Tag Manager implementiert wurden?

Wenn du neugierig auf die Antworten auf diese Fragen bist und genau wissen willst, wie du das alles mit dem Google Tag Manager einrichtest, lies weiter.

TL;DR - Alle diese Tests haben gut funktioniert, aber einige der Änderungen haben sehr lange gebraucht, um in den Google-Ergebnissen angezeigt zu werden. Springe direkt zu den Schlussfolgerungen wenn du es eilig hast.

Direkter Zugang zu den verschiedenen Teilen des Tests:

Ersetzen von Titel-Tags und Meta-Beschreibungen mit Google Tag Manager

Der Titel-Tag und die Meta-Beschreibung der englischen Startseite unserer Unternehmenswebsite, https://www.searchviu.com/en/sehen im HTML-Quelltext der Seite wie folgt aus:

title tag und meta description im html-Quelltext

Wir haben das folgende Skript in einem benutzerdefinierten HTML-Tag im Google Tag Manager verwendet, um den Titel-Tag und die Meta-Beschreibung zu ersetzen, so dass im gerenderten HTML ein anderer Text angezeigt wird:

Skript zum Ersetzen von Title Tag und Meta Description

Beachte, dass wir beim Titel-Tag nur die Großschreibung geändert haben, während wir bei der Meta-Beschreibung ein paar Wörter ersetzt haben.

Der ursprüngliche Titel-Tag und die Meta-Beschreibung werden immer noch im HTML-Quelldokument angezeigt, aber wenn du das gerenderte HTML mit den Entwicklertools von Chrome überprüfst, wirst du sehen, dass GTM sie durch die neue Version ersetzt, die wir definiert haben:

title tag und meta description in gerendertem html

Acht Tage, nachdem wir diese Änderung in GTM veröffentlicht hatten, zeigte Google den Titel-Tag und die Meta-Beschreibung, die wir mit GTM hinzugefügt hatten, anstelle der ursprünglichen Daten aus dem HTML-Quelldokument an und zeigt sie seitdem an:

Google Ergebnis für searchviu

Dieses Ergebnis hat uns nicht wirklich überrascht, denn wir hatten zuvor ein Experiment durchgeführt, das darauf hindeutete, dass Google das gerenderte HTML verwendet um hreflang zu interpretieren, und das HTML-Quelldokument ignoriert. Wir haben also das gleiche Verhalten für Titel-Tags und Meta-Beschreibungen erwartet.

Die Tatsache, dass die Änderungen erst nach acht Tagen sichtbar wurden, hat uns auch nicht überrascht, da Google Seiten weniger regelmäßig rendert als es sie crawlt. Für eine fundiertere Aussage über die Unterschiede zwischen der Crawling- und der Rendering-Häufigkeit wären weitere Untersuchungen erforderlich, daher ist dies nur eine Randnotiz.

Werfen wir nun einen Blick auf einige der schwierigeren Dinge! Nächster Halt: "noindex".

De-Indexierung von Seiten mit "noindex"-Tags, die über den Google Tag Manager implementiert wurden

Beim Einrichten dieser Tests sind wir über ein paar URLs unserer Domain gestolpert, die wir nicht indexiert haben wollten:

Das folgende Skript, das in einem benutzerdefinierten HTML-Tag in GTM mit einem Trigger verwendet wird, der es auf den Seiten ausführt, die wir de-indexieren wollen, fügt den fraglichen Seiten ein "noindex"-Meta-Tag hinzu:

add-noindex-with-google-tag-manager

Und dann haben wir gewartet. Wir warteten. Und warteten. Und verloren die Hoffnung. Google hat es einfach nicht gefunden.

An dieser Stelle muss ich zugeben, dass ich ein schlampiger Rechercheur bin. Ich kann dir nicht sagen, wie lange es gedauert hat. Irgendwo zwischen 6 Wochen und 3 Monaten. Aber eines Tages beschloss Google, die Seiten, die wir de-indexiert haben wollten, zu rendern und BOOM (alle fünf Seiten wurden erfolgreich de-indexiert):

Seiten erfolgreich de-indexiert

Hier ist die Suchanfrage, die ich im obigen Screenshot verwendet habe, falls du es selbst ausprobieren möchtest:

site:staging.searchviu.com/de/we-are-going-to-miss-you/ OR site:staging.searchviu.com/de/wir-werden-dich-vermissen/ OR site:staging.searchviu.com/de/author/ana-cidre/ OR site:staging.searchviu.com/de/thank-getting-contact/ OR site:staging.searchviu.com/de/embed/

Das hat auch gut funktioniert, aber es hat viel länger gedauert als die Änderungen am Title Tag und der Meta Description. Unsere Theorie ist derzeit, dass weniger wichtige Seiten noch seltener gerendert werden. Aber wie gesagt, wir müssen die Unterschiede zwischen Crawling- und Rendering-Häufigkeit noch weiter erforschen, bevor wir solide Schlussfolgerungen zu diesem Thema ziehen können.

Schauen wir mal, ob das Gleiche mit kanonischen Tags funktioniert.

Hinzufügen von kanonischen Tags mit dem Google Tag Manager

Canonical-Tags sind knifflig, denn egal, wie du sie implementierst, Google entscheidet sich oft einfach dazu Kanonische Tags zu ignorieren, wenn andere Signale mit ihnen in Konflikt stehen. Wir mussten also eine Möglichkeit für ein kanonisches Tag finden, bei der wir ziemlich sicher waren, dass Google sie nicht ignorieren würde.

Eine der wichtigsten Voraussetzungen für die korrekte Verwendung von kanonischen Tags ist, dass der gesamte Inhalt der Seite, die den kanonischen Tag hat, auf der Seite enthalten ist, auf die der kanonische Tag verweist. Aus diesem Grund haben wir uns entschieden, ein kanonisches Tag von meiner Autorenseite zur Haupt-Blogseitezu wählen, da der gesamte Inhalt der ersten Seite auf der zweiten Seite verfügbar ist.

Hier erfährst du, wie du das in GTM einrichtest:

Ein kanonisches Tag mit dem Google Tag Manager hinzufügen

Um es kurz zu machen: Das hat gut funktioniert, aber es hat genauso lange gedauert wie die "noindex"-Änderung.

Hier ist das Suchergebnis für die Suchanfrage "eoghan henn searchviu", bevor wir den kanonischen Tag mit GTM hinzugefügt haben:

Und hier ist das aktuelle Ergebnis. Die Seite ist verschwunden (und in der Tat ist die Rangliste verloren gegangen - nur eine weitere interessante Randnotiz)::

Google respektiert also kanonische Tags, die mit dem Google Tag Manager hinzugefügt wurden (wenn sie im richtigen Kontext verwendet werden).

Ich weiß, dass du hauptsächlich wegen der Informationen über mit JavaScript hinzugefügte Links hier bist, also schauen wir uns das jetzt mal an.

Eine Sache, auf die wir bei diesem Test besonders neugierig waren, war, ob Google interne Links crawlen würde, die nicht im HTML-Quelldokument zu finden sind, sondern mit JavaScript und dem Google Tag Manager hinzugefügt wurden. Also haben wir das folgende kleine Experiment gestartet.

Zunächst haben wir zwei identische Seiten auf unserer WordPress-Website erstellt, eine, auf die wir intern mit einem über GTM hinzugefügten Link verlinken würden, und eine andere, auf die wir nicht intern verlinken würden:

die Testseiten in Wordpress

Warum haben wir die zweite Seite eingerichtet? Wenn die erste Seite indexiert wird, müssen wir sicherstellen, dass dies auf den internen Link zurückzuführen ist, den wir eingefügt haben, und nicht auf etwas anderes. Wir haben dafür gesorgt, dass die Seite in keiner Sitemap auftaucht und dass es keine Pings oder andere Hintergrundmechanismen gibt, als wir sie veröffentlichten. Aber um auf Nummer sicher zu gehen, haben wir die zweite Seite als Kontrollseite angelegt. Das Testergebnis kann nur positiv ausfallen, wenn die erste Seite indexiert wird und die zweite Seite nicht.

Vielleicht bin ich doch kein ganz und gar nutzloser Researcher...

Schauen wir uns also kurz an, wie wir das in GTM einrichten. Wir haben eine hübsche unwichtige Seite von unserer Website gewählt, einen Link gesucht, auf den (hoffentlich) niemand jemals klicken würde und das folgende Skript in GTM verwendet, um die Ziel-URL des Links durch die URL der ersten unserer beiden Testseiten zu ersetzen:

einen internen Link im Google Tag Manager ersetzen

Hier ist das Ergebnis. Die Seite, die nur über einen mit GTM injizierten Link verlinkt wurde, wurde indexiert, die Kontrollseite hingegen nicht. Wie bei den vorherigen Änderungen dauerte es auch hier sehr lange, bis das Ergebnis sichtbar wurde (etwa zwei Monate):

Ergebnis des internen Link-Tests

Wenn du dich fragst, was -sameas in der obigen Suchanfrage bedeutet, lies den nächsten Teil des Artikels. Wir haben eine weitere Testseite erstellt, die wir nur über JSON-LD mit GTM verlinkt haben, um zu sehen, wie Google mit dieser Art von Situation umgeht.

Indexiert Google auch URLs, die nur in JSON-LD-Skripten enthalten sind, die mit dem Google Tag Manager hinzugefügt wurden?

Wenn du mich kennst, weißt du wahrscheinlich, dass ich ein großer Fan von der Implementierung strukturierter Daten (schema.org) im JSON-LD-Format mit Google Tag Managerbin. Außerdem hatte ich zuvor festgestellt, dass URLs von einer Domain, die in JSON-LD-Skripten auf einer anderen Domain enthalten waren, in der Google Search Console als externe Links zur ersten Domain angezeigt wurden. Google macht einige seltsame Dinge mit den Informationen, die es in strukturierten Daten findet, also wollte ich mehr wissen.

Wir beschlossen, eine weitere Testseite zu erstellen, wie sie im internen Link-Test oben beschrieben wurde, aber dieses Mal würden wir die URL nur in ein JSON-LD-Skript aufnehmen und nirgendwo sonst. So richtest du es im Google Tag Manager ein:

die json-ld-Test-Einrichtung im Google Tag Manager

Ich schätze, dass es zu diesem Zeitpunkt keine Überraschung ist, dass dies auch funktioniert hat. Google hat die Testseite, die nur über ein JSON-LD-Skript verlinkt war, auf der ersten Testseite indexiert:

JSON-LD-Skripte sind also eine weitere Datenquelle, die Google für die URL-Erkennung nutzt.

Schlussfolgerungen: Du kannst mit GTM alles hinzufügen, aber es kann eine Weile dauern, bis die Änderungen sichtbar werden.

Die Ergebnisse dieser Tests haben gezeigt, dass Google Titel-Tags, Meta-Beschreibungen, "noindex"-Tags und kanonische Tags verarbeitet und verwendet, die mit Google Tag Manager hinzugefügt oder geändert wurden.. Das HTML-Quelldokument wird ignoriert und nur das gerenderte HTML wird berücksichtigt.

Außerdem können interne Links mit dem Google Tag Manager hinzugefügt werden und Google wird die URLs, die auf diese Weise verlinkt werden, indexieren. Selbst URLs, die nur in JSON-LD-Skripten enthalten sind, die mit dem Google Tag Manager hinzugefügt wurden, werden indexiert.

Leider war dieses Experiment nicht wirklich dazu gedacht zu messen, wie lange es dauert, bis die Änderungen in den Google-Ergebnissen angezeigt werden. Wir haben kein Monitoring eingerichtet, um die Ergebnisse regelmäßig zu überprüfen. Wir wissen, dass die Änderungen am Titel-Tag und der Meta-Beschreibung der Startseite nach acht Tagen angezeigt wurden. Bei allen anderen Änderungen dauerte es etwa zwei Monate, bis sie angezeigt wurden.

Es liegt auf der Hand, dass Google Seiten seltener rendert und ihre HTML-Quelldokumente regelmäßiger crawlt. Weitere Untersuchungen zu den Unterschieden zwischen Crawl- und Rendering-Frequenz wären sehr wertvoll..

Frühere JavaScript-SEO-Tests, die diese enormen Verzögerungen nicht berücksichtigt haben, könnten zu negativen Ergebnissen geführt haben, weil die Tests nicht lange genug liefen, insbesondere wenn sie auf Seiten durchgeführt wurden, die nur für den Zweck des Experiments eingerichtet wurden. Es scheint, dass wichtige Seiten (wie unsere Startseite in dem oben beschriebenen Fall) häufiger gerendert werden als weniger wichtige (wie alle anderen Seiten, mit denen wir Tests durchgeführt haben, die etwa zwei Monate gebraucht haben, um Ergebnisse zu zeigen).

We hope that you found our little JavaScript SEO experiment useful and that many others will set up similar tests, so that the entire SEO industry can learn more about how Google deals with pages that rely on JavaScript. Any questions or remarks? Just drop us a comment![/vc_column_text][/vc_column][/vc_row][vc_row type=”in_container” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” bg_color=”#0b9d95″ scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” top_margin=”20″ constrain_group_1=”yes” bottom_margin=”20″ centered_text=”true” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”8/12″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][nectar_highlighted_text color_type=”regular” highlight_color=”#dd3333″ text_color=”#ffffff” style=”full_text”]

Überprüfe eine URL auf Unterschiede zwischen dem ursprünglichen Quellcode und dem gerenderten HTML.

[/nectar_highlighted_text][/vc_column][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/12″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][/vc_column][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” centered_text=”true” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/4″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][nectar_btn size=”medium” button_style=”see-through-2″ color_override=”#ffffff” hover_color_override=”#ffffff” hover_text_color_override=”#ffffff” icon_family=”none” text=”Try our free tool” url=”/en/javascript-rendering-comparison-check/” margin_top=”25″][/vc_column][/vc_row]

9 Antworten

    1. Hi Matteo,

      Thank you very much for your comment. Your observations are absolutely correct, but the website isn’t in the same state as it was when we conducted the tests more than a year ago. At the time of the experiment, there was no “noindex” available in the source code and it was only added with GTM.

  1. Hi Eoghan, I am getting an error with any JS I try to inject via the steps above. The custom html triggers okay bet when I look at the tag in preview mode it is replacing some of the JS with unicode characters and is not appearing within the head. For example ‘meta[name=”description”]’ becomes ‘meta[name\x3d”description”]\’. DO you have any suggestions as to why this is happening to me?

    1. Hi Carl,

      Thank you very much for your comment. Scripts are often shown with some characters replaced in the GTM preview mode (I don’t know why, but it happens a lot), so this is probably not related to the problem that is causing your tag to not show in the head. Could you please send me some more details (screenshots etc.) via email, so that I can have a closer look?

  2. Super Post!

    I have implemented this myself and discovered that it can be hard to index those meta tags in websites that rely heavily on JavaScript. Google might decide or not to run all the JS in your webpage. In that case, it might return your JavaScript injected Meta Title once, and decide to use the server-side originial Meta Title the next time.

    I’ve had the result where Google decided not to use either one and choose their own title instead.

    I think it would be good to use JavaScript instead of jQuery like Google’s own solution. I have not made any test whether one is better that the other but it jsut make sense that the JavaScript code will be read faster than the one with jQuery.

    Like this:
    var metaTag = document.querySelector(‘meta[name=”description”]’);
    metaTag.setAttribute(‘content’, ‘Your Meta Description’);

  3. Hi Eoghan Henn, great article.
    Now i have implemented a canonical tag by GTM, but Google does not seem to like it.
    A Google bot has visited my site, but did not pick up my canonical tag.

    The problem could be that there is a existing self-refering canonical tag already on the site. I remove that with jQuery(‘link[rel=”canonical”]’).remove(); and then implement my new canonical.

    But Google seems to be reading only the old one.

    Have you tested this setup or know if it should work?

    thanks!!

    1. Hi Hans,

      Thank you for your interesting question. In general, if you remove the old canonical tag with jQuery and add a new one, Google should use the new one as soon it has rendered the page.

      See this post for more details too: https://www.searchviu.com/en/javascript-canonical-tags/

      In your case, what might have happened is that Googlebot visited your page but only fetched the source HTML without rendering the page. If you send me more details, I’ll be happy to have a look.

  4. How nice to find this post and experiment!

    I’m just having this problem. I’ve implemented Title and Description with Google Tag Manager but Google still takes the HTML.

    I’ll wait a few more days. Thanks a lot for sharing this information!

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert