{"id":4301,"date":"2012-06-22T15:49:55","date_gmt":"2012-06-22T13:49:55","guid":{"rendered":"http:\/\/notizblog.org\/?p=4301"},"modified":"2024-04-03T12:46:28","modified_gmt":"2024-04-03T10:46:28","slug":"twitter-cards","status":"publish","type":"post","link":"https:\/\/notiz.blog\/2012\/06\/22\/twitter-cards\/","title":{"rendered":"Twitter Cards"},"content":{"rendered":"\n<p>Anfang der Woche hat Martin Weigert schon \u00fcber <a href=\"http:\/\/netzwertig.com\/2012\/06\/19\/twitter-von-einer-simplen-plattform-zur-destination-fuer-multimediainhalte\/\">Twitters Pl\u00e4ne<\/a>, die eigenen Tweets mit noch mehr Medieninhalten zu erweitern, geschrieben:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Immer mehr Partnerseiten k\u00f6nnen zus\u00e4tzliche multimediale Inhalte im Kontext von Tweets darstellen. Ganz eindeutig ist bisher nicht, wohin diese Reise f\u00fcr Twitter geht.<\/p><\/blockquote>\n\n\n\n<p>Aber ich habe mir nichts weiter dabei gedacht&#8230; Immerhin macht das Twitter ja schon seit einer ganzen Weile und ich meine mich zu erinnern, irgendwo gelesen zu haben, dass sie dazu <a href=\"http:\/\/oembed.com\/\">oEmbed<\/a> einsetzen&#8230; Also alles in bester &#8222;OpenWeb&#8220;-Ordnung \ud83d\ude42<\/p>\n\n\n\n<p>Aber, Geek der ich bin, hab ich mir gestern zuf\u00e4llig einen Quelltext angeschaut in dem ich auf folgendes entdeckt habe:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"twitter:card\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"summary\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"twitter:url\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"...\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"twitter:title\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"...\"<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>&#8230;und nach kurzem googlen bin ich auf die <a href=\"https:\/\/developer.twitter.com\/en\/docs\/tweets\/optimize-with-cards\/overview\/abouts-cards\"><strong>Twitter Cards<\/strong><\/a> gesto\u00dfen, Twitters eigenes, kleines <a href=\"http:\/\/ogp.me\/\"><strong>Open Graph Protocol<\/strong><\/a>. Mit den <strong>Twitter Cards<\/strong> bekommen Seitenbetreiber ein Set an Meta-Tags an die Hand, und Twitter kann diese Informationen nutzen um die tweets mit den oben erw\u00e4hnten Mediendaten anzureichern.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"522\" height=\"272\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" src=\"https:\/\/notiz.blog\/wp-content\/uploads\/2012\/06\/twitter-card-web-summary.png\" alt=\"Example Twitter Card\" class=\"wp-image-4333\" srcset=\"https:\/\/notiz.blog\/wp-content\/uploads\/2012\/06\/twitter-card-web-summary.png 522w, https:\/\/notiz.blog\/wp-content\/uploads\/2012\/06\/twitter-card-web-summary-480x250.png 480w\" \/><\/figure><\/div>\n\n\n\n<p>&#8230;und ich wollte mich gerade dar\u00fcber aufregen, warum Twitter dazu eine eigene Meta-Sprache erfindet, da bin ich in der <a href=\"https:\/\/developer.twitter.com\/en\/docs\/tweets\/optimize-with-cards\/overview\/abouts-cards\">Doku<\/a> ironischerweise auf folgendes gesto\u00dfen:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>You&#8217;ll notice that Twitter card tags look similar to OpenGraph tags, and that&#8217;s because they are based on the same conventions as the Open Graph protocol. If you&#8217;re already using OpenGraph to describe data on your page, it\u2019s easy to generate a Twitter card without duplicating your tags and data. When the Twitter card processor looks for tags on your page, it first checks for the Twitter property, and if not present, falls back to the supported Open Graph property. This allows for both to be defined on the page independently, and minimizes the amount of duplicate markup required to describe your content and experience.<\/p><\/blockquote>\n\n\n\n<p>&#8222;Ok&#8220;, dachte ich&#8230; vielleicht reichen die <em>Open Graph<\/em> Properties ja nicht aus um alle Informationen, die Twitter braucht, abzubilden. Also hab ich mir mal die M\u00fche gemacht sie zu vergleichen:<\/p>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table><thead><tr><th>Twitter Cards<\/th><th>Open Graph Protocol<\/th><\/tr><\/thead><tbody><tr><td><code>twitter:card<\/code><\/td><td><code>og:type<\/code><\/td><\/tr><tr><td><code>twitter:site<\/code><\/td><td><code>og:site_name<\/code><\/td><\/tr><tr><td><code>twitter:url<\/code><\/td><td><code>og:url<\/code><\/td><\/tr><tr><td><code>twitter:description<\/code><\/td><td><code>og:description<\/code><\/td><\/tr><tr><td><code>twitter:title<\/code><\/td><td><code>og:title<\/code><\/td><\/tr><tr><td><code>twitter:image<\/code><\/td><td><code>og:image<\/code><\/td><\/tr><tr><td><code>twitter:image:width<\/code><\/td><td><code>og:image:width<\/code><\/td><\/tr><tr><td><code>twitter:image:height<\/code><\/td><td><code>og:image:height<\/code><\/td><\/tr><tr><td><code>twitter:player<\/code> oder <code>twitter:player:stream<\/code><\/td><td><code>og:video<\/code> oder <code>og:audio<\/code><\/td><\/tr><tr><td><code>twitter:player:width<\/code><\/td><td><code>og:video:width<\/code><\/td><\/tr><tr><td><code>twitter:player:height<\/code><\/td><td><code>og:video:height<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Es l\u00e4sst sich also prinzipiell alles mit dem <em>Open Graph Protocol<\/em> abbilden, es fehlen lediglich die Felder <code>twitter:site:id<\/code> und <code>twitter:creator:id<\/code>. Aber wegen diesen zwei Feldern muss man doch nicht das ganze Format &#8222;kopieren&#8220;. Es reicht doch ein kleiner Absatz, wie man den <em>Open Graph<\/em> mit den propriet\u00e4ren Werten erweitert&#8230; So wie das auch <a href=\"https:\/\/developers.facebook.com\/docs\/sharing\/opengraph\">Facebook<\/a> praktiziert:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span> <span class=\"hljs-attr\">xmlns<\/span>=<span class=\"hljs-string\">\"http:\/\/www.w3.org\/1999\/xhtml\"<\/span>\n      <span class=\"hljs-attr\">xmlns:og<\/span>=<span class=\"hljs-string\">\"http:\/\/ogp.me\/ns#\"<\/span>\n      <span class=\"hljs-attr\">xmlns:fb<\/span>=<span class=\"hljs-string\">\"https:\/\/www.facebook.com\/2008\/fbml\"<\/span>&gt;<\/span>\n      xmlns:twitter=\"https:\/\/dev.twitter.com\/docs\/cards\"&gt;\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">title<\/span>&gt;<\/span>The Rock (1996)<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">title<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"og:title\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"The Rock\"<\/span>\/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"fb:admins\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"USER_ID\"<\/span>\/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"twitter:site:id\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"@USER_ID\"<\/span>\/&gt;<\/span>\n    ...\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n  ...\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">html<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Hoffentlich \u00fcberlegt sich das Twitter noch einmal&#8230; Wenn nicht, wird dank dieser (und folgender) Redundanzen der <code>&lt;head \/&gt;<\/code> einer Webseite in ein paar Jahren mehr Informationen beinhalten wie der <code>&lt;body \/&gt;<\/code>.<\/p>\n\n\n\n<p>&#8230;welch ein Over-<code>&lt;head&gt;<\/code> \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anfang der Woche hat Martin Weigert schon \u00fcber Twitters Pl\u00e4ne, die eigenen Tweets mit noch mehr Medieninhalten zu erweitern, geschrieben: Immer mehr Partnerseiten k\u00f6nnen zus\u00e4tzliche multimediale Inhalte im Kontext von Tweets darstellen. Ganz eindeutig ist bisher nicht, wohin diese Reise f\u00fcr Twitter geht. Aber ich habe mir nichts weiter dabei gedacht&#8230; Immerhin macht das Twitter [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[2],"tags":[870,480,710,164,868,285,874],"class_list":{"0":"post-4301","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-web","7":"tag-dublin-core","8":"tag-facebook","9":"tag-metadaten","10":"tag-microformats","11":"tag-opengraphprotocol","12":"tag-twitter","13":"tag-websemantics","14":"h-entry","15":"hentry"},"_links":{"self":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/posts\/4301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/comments?post=4301"}],"version-history":[{"count":3,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/posts\/4301\/revisions"}],"predecessor-version":[{"id":25155,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/posts\/4301\/revisions\/25155"}],"wp:attachment":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/media?parent=4301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/categories?post=4301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/tags?post=4301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}