Werfen Sie einen Blick auf unsere Vergleichsleitfäden:
X API: Enterprise-Datenwörterbuch
Einführung
Enterprise
Posts sind die grundlegenden, atomaren Bausteine von allem auf X. Alle X APIs, die Posts zurückgeben, liefern diese data im JavaScript Object Notation (JSON)-Format. JSON basiert auf Schlüssel-Wert-Paaren mit benannten Attributen und zugehörigen Werten. Über die API abgerufene Post-Objekte umfassen das „Status-Update“ eines X Nutzers; auch Retweets, Antworten und zitierte Tweets sind Post-Objekte. Ist ein Post mit einem anderen Post verknüpft – etwa als Retweet, Antwort oder zitierter Tweet –, wird dies jeweils kenntlich gemacht oder im Post-Objekt eingebettet. Selbst der einfachste Post im nativen X Datenformat enthält verschachtelte JSON-Objekte, um weitere Attribute eines Posts darzustellen, wie den Autor, erwähnte Nutzer, den markierten Ort, Hashtags, Cashtag-Symbole, Medien oder URL-Links. Beim Arbeiten mit X data ist dies ein wichtiges Konzept. Das Format der Post-Daten, die Sie von der X API erhalten, hängt vom Typ des empfangenen Posts, der verwendeten X API und den Formateinstellungen ab.
Enterprise endpoints, die Post-Objekte zurückgeben, wurden aktualisiert, um die benötigte metadata bereitzustellen, damit die Bearbeitungshistorie des Posts nachvollzogen werden kann. Weitere Informationen zu diesen metadata finden Sie auf der Seite “Posts bearbeiten” – Grundlagen.
Im nativen X-Format enthält die JSON-Payload Attribute auf der obersten Ebene sowie verschachtelte JSON-Objekte (die hier mit der
{}
-Notation dargestellt werden):
Verfügbare Datenformate
Bitte beachten: Es wird dringend empfohlen, für Enterprise-Daten-APIs das Format Enriched Native zu verwenden.Enterprise-Daten-APIs liefern Daten in zwei Formaten. Das Enterprise-Format, das dem Standard-v1.1-Native-Format am nächsten kommt, ist Enriched Native. Das ältere Enterprise-Datenformat ist Activity Streams, ursprünglich von Gnip als normalisiertes Format für X und andere Social-Media-Datenanbieter implementiert und verwendet. Obwohl dieses Format weiterhin verfügbar ist, hat X seit 2017 neue Funktionen und Weiterentwicklungen ausschließlich im Enriched-Native-Format umgesetzt. Das Enriched-Native-Format ist genau das, was der Name vermuten lässt: Es enthält native X-Objekte sowie zusätzliche Enrichments, die für Enterprise-Datenprodukte verfügbar sind, wie z. B. URL-Unwinding-Metadaten, Profile Geo, Poll-Metadaten und zusätzliche Engagement-metrics.
- Das Enriched-Native-Format enthält alle seit 2017 hinzugekommenen Metadaten, wie z. B. Poll-Metadaten, sowie zusätzliche metrics wie reply_count und quote_count.
- Das Activity-Streams-Format wurde seit dem Zeichen-Update im Jahr 2017 nicht mehr mit neuen Metadaten oder Enrichments aktualisiert.
- Expanded and enhanced URLs enrichment
- Matching rules enrichment
- Poll metadata enrichment
- Profile geo enrichment
Objektvergleich nach Datenformat
Native Enriched | Activity Streams |
---|---|
Link Post-Objekt | Link Aktivitätsobjekt |
Link User-Objekt | Link Actor-Objekt |
Link Entities-Objekt | Link X-Entities-Objekt |
Link Extended-Entities-Objekt | Link X-Extended-Entities-Objekt |
Link Geo-Objekt | Link Location-Objekt |
n/a | Link Gnip-Objekt |
Best Practices für das Parsen
- X JSON wird mit UTF-8-Zeichen kodiert.
- Parser sollten Unterschiede in der Reihenfolge der fields problemlos tolerieren. Es ist davon auszugehen, dass Post JSON als ungeordneter hash von data bereitgestellt wird.
- Parser sollten die Hinzufügung „neuer“ fields tolerieren.
- JSON-Parser müssen mit „fehlenden“ fields umgehen können, da nicht alle fields in allen Kontexten vorkommen.
- Es ist generell unbedenklich, ein auf null gesetztes field, eine leere Menge und das Fehlen eines field als gleichwertig zu betrachten.
Enterprise Native Enriched data-Objekte
Native Enriched Tweet-Objekt
Interessieren Sie sich dafür, wie das Native Enriched-Datenformat dem X API v2-Format entspricht? Lesen Sie unseren Vergleichsleitfaden: Native Enriched im Vergleich zu X API v2
Post-Objekt
id
, created_at
und text
. Post-Objekte enthalten außerdem verschachtelte Objekte wie user
, entities
und extended_entities
. Post-Objekte enthalten zudem andere verschachtelte Post-Objekte wie retweeted_status, quoted_status und extended_tweet. Das native angereicherte Format enthält zusätzlich ein matching_rules-Objekt.
X-Datenwörterbuch
Zusätzliche Post-Attribute
Attribute | Typ | Beschreibung |
---|---|---|
current_user_retweet | Objekt | Perspektivisch. Wird nur bei Methoden ausgegeben, die den Parameter include_my_retweet unterstützen, wenn dieser auf true gesetzt ist. Enthält die Post-ID des eigenen Retweets des Nutzers (falls vorhanden) zu diesem Post. Beispiel: “current_user_retweet”: <br/> “id”: 6253282, “id_str”: “6253282” } |
scopes | Objekt | Eine Menge von Schlüssel-Wert-Paaren, die die beabsichtigte kontextuelle Auslieferung des enthaltenen Posts angeben. Wird derzeit von X Promoted Products verwendet. Beispiel: “scopes”:{“followers”:false} |
withheld_copyright | Boolean | Wenn vorhanden und auf „true“ gesetzt, gibt dies an, dass dieser Inhalt aufgrund einer DMCA-Beschwerde zurückgehalten wurde. Beispiel: “withheld_copyright”: true |
withheld_in_countries | Array of String | Wenn vorhanden, gibt dies eine Liste von zweibuchstabigen Ländercodes in Großbuchstaben an, vor denen dieser Inhalt zurückgehalten wird. X unterstützt für dieses Feld die folgenden Nicht-Länderwerte: „XX“ – Inhalt wird in allen Ländern zurückgehalten; „XY“ – Inhalt wird aufgrund einer DMCA-Anfrage zurückgehalten. Beispiel: “withheld_in_countries”: [“GR”, “HK”, “MY”] |
withheld_scope | String | Wenn vorhanden, gibt dies an, ob der zurückgehaltene Inhalt ein „status“ oder ein „user“ ist. Beispiel: “withheld_scope”: “status” |
Veraltete Attribute
Feld | type | Beschreibung |
geo | Objekt | Veraltet. Nullable. Verwenden Sie stattdessen das Feld coordinates . Dieses veraltete Attribut gibt seine Koordinaten als [lat, long] an, während alle anderen Post-Geodaten als [long, lat] angegeben werden. |
Verschachtelte Post-Objekte
Zitierte Tweets
Erweiterte Posts
Nativ angereichertes User-Objekt
Datenwörterbuch für Benutzer
Attribut | Typ | Beschreibung |
---|---|---|
id | Int64 | Die ganzzahlige Darstellung der eindeutigen Kennung für diesen Nutzer. Diese Zahl ist größer als 53 Bits und einige Programmiersprachen können Schwierigkeiten/stille Defekte bei der Interpretation haben. Die Verwendung einer vorzeichenbehafteten 64-Bit-Ganzzahl zur Speicherung dieser Kennung ist sicher. Verwenden Sie id_str , um die Kennung sicher abzurufen. Siehe X IDs für weitere Informationen. Beispiel:“id”: 6253282 |
id_str | String | Die String-Darstellung der eindeutigen Kennung für diesen Nutzer. Implementierungen sollten diese anstelle der großen, möglicherweise nicht verarbeitbaren Ganzzahl in id verwenden. Beispiel:“id_str”: “6253282” |
name | String | Der Name des Nutzers, wie er ihn definiert hat. Nicht notwendigerweise der Name einer Person. Typischerweise auf 50 Zeichen begrenzt, aber Änderungen vorbehalten. Beispiel: “name”: “API” |
screen_name | String | Der Bildschirmname, Handle oder Alias, mit dem sich dieser Nutzer identifiziert. screen_names sind eindeutig, können sich aber ändern. Verwenden Sie id_str als Nutzerkennung, wann immer möglich. Typischerweise maximal 15 Zeichen lang, aber einige historische Konten können mit längeren Namen existieren. Beispiel:“screen_name”: “api” |
location | String | Nullable . Der benutzerdefinierte Standort für das Profil dieses Kontos. Nicht notwendigerweise ein Standort und auch nicht maschinenlesbar. Dieses Feld wird gelegentlich vom Suchdienst unscharf interpretiert. Beispiel: “location”: “San Francisco, CA” |
derived | Arrays of Enrichment Objects | Nur Enterprise APIs Sammlung von Enrichment-Metadaten, die für den Nutzer abgeleitet wurden. Stellt die Profile Geo Enrichment-Metadaten bereit. Siehe referenzierte Dokumentation für weitere Informationen, einschließlich JSON-Datenwörterbücher. Beispiel: “derived”:“locations”: [“country”:“United States”,“country_code”:“US”,“locality”:“Denver”] |
url | String | Nullable . Eine URL, die der Nutzer in Verbindung mit seinem Profil bereitgestellt hat. Beispiel: “url”: “https://developer.x.com” |
description | String | Nullable . Die benutzerdefinierte UTF-8-Zeichenkette, die das Konto beschreibt. Beispiel: “description”: “The Real X API.” |
protected | Boolean | Wenn true, zeigt an, dass dieser Nutzer gewählt hat, seine Posts zu schützen. Siehe About Public and Protected Posts . Beispiel: “protected”: true |
verified | Boolean | Wenn true, zeigt an, dass der Nutzer ein verifiziertes Konto hat. Siehe Verified Accounts . Beispiel: “verified”: false |
followers_count | Int | Die Anzahl der Follower, die dieses Konto derzeit hat. Unter bestimmten Belastungsbedingungen zeigt dieses Feld vorübergehend „0” an. Beispiel: “followers_count”: 21 |
friends_count | Int | Die Anzahl der Nutzer, denen dieses Konto folgt (auch bekannt als ihre „Followings”). Unter bestimmten Belastungsbedingungen zeigt dieses Feld vorübergehend „0” an. Beispiel: “friends_count”: 32 |
listed_count | Int | Die Anzahl der öffentlichen Listen, in denen dieser Nutzer Mitglied ist. Beispiel: “listed_count”: 9274 |
favourites_count | Int | Die Anzahl der Posts, die dieser Nutzer in der Lebensdauer des Kontos geliked hat. Britische Schreibweise im Feldnamen aus historischen Gründen verwendet. Beispiel: “favourites_count”: 13 |
statuses_count | Int | Die Anzahl der Posts (einschließlich Retweets), die vom Nutzer veröffentlicht wurden. Beispiel: “statuses_count”: 42 |
created_at | String | Die UTC-Datum-Zeit, zu der das Nutzerkonto auf X erstellt wurde. Beispiel: “created_at”: “Mon Nov 29 21:18:15 +0000 2010” |
profile_banner_url | String | Die HTTPS-basierte URL, die auf die standardmäßige Web-Darstellung des hochgeladenen Profilbanners des Nutzers zeigt. Durch Hinzufügen eines abschließenden Pfadelements der URL ist es möglich, verschiedene Bildgrößen zu erhalten, die für spezifische Anzeigen optimiert sind. Für Größenvarianten siehe bitte User Profile Images and Banners . Beispiel: “profile_banner_url”: “https://si0.twimg.com/profile_banners/819797/1348102824” |
profile_image_url_https | String | Eine HTTPS-basierte URL, die auf das Profilbild des Nutzers zeigt. Beispiel: “profile_image_url_https”: “https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png” |
default_profile | Boolean | Wenn true, zeigt an, dass der Nutzer das Design oder den Hintergrund seines Nutzerprofils nicht verändert hat. Beispiel: “default_profile”: false |
default_profile_image | Boolean | Wenn true, zeigt an, dass der Nutzer kein eigenes Profilbild hochgeladen hat und stattdessen ein Standardbild verwendet wird. Beispiel: “default_profile_image”: false |
Nicht mehr unterstützte (deprecated) Attribute
Feld | Typ | Beschreibung |
---|---|---|
utc_offset | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET account/settings |
time_zone | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET account/settings als tzinfo_name |
lang | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET account/settings als language |
geo_enabled | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET account/settings. Dieses Feld muss true sein, damit der aktuelle Nutzer beim Verwenden von POST statuses/update Geodaten anhängen kann. |
following | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET friendships/lookup |
follow_request_sent | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET friendships/lookup |
has_extended_profile | null | Deprecated. Wert wird auf null gesetzt. |
notifications | null | Deprecated. Wert wird auf null gesetzt. |
profile_location | null | Deprecated. Wert wird auf null gesetzt. |
contributors_enabled | null | Deprecated. Wert wird auf null gesetzt. |
profile_image_url | null | Deprecated. Wert wird auf null gesetzt. HINWEIS: Profilbilder sind nur über das Feld profile_image_url_https verfügbar. |
profile_background_color | null | Deprecated. Wert wird auf null gesetzt. |
profile_background_image_url | null | Deprecated. Wert wird auf null gesetzt. |
profile_background_image_url_https | null | Deprecated. Wert wird auf null gesetzt. |
profile_background_tile | null | Deprecated. Wert wird auf null gesetzt. |
profile_link_color | null | Deprecated. Wert wird auf null gesetzt. |
profile_sidebar_border_color | null | Deprecated. Wert wird auf null gesetzt. |
profile_sidebar_fill_color | null | Deprecated. Wert wird auf null gesetzt. |
profile_text_color | null | Deprecated. Wert wird auf null gesetzt. |
profile_use_background_image | null | Deprecated. Wert wird auf null gesetzt. |
is_translator | null | Deprecated. Wert wird auf null gesetzt. |
is_translation_enabled | null | Deprecated. Wert wird auf null gesetzt. |
translator_type | null | Deprecated. Wert wird auf null gesetzt. |
Beispiel-User-Objekt:
Native angereicherte Geo-Objekte
place
ist immer vorhanden, wenn ein Post mit einem Place geotaggt ist. Places sind spezifische, benannte Standorte mit entsprechenden Geokoordinaten. Wenn Nutzer einem Post einen Standort zuweisen, wird ihnen eine Liste mit möglichen X Places angezeigt. Bei Verwendung der API kann ein X Place angehängt werden, indem beim Posten eine place_id angegeben wird. Posts, die mit Places verknüpft sind, stammen nicht zwingend von diesem Standort, sondern können sich auch auf diesen Standort beziehen.
Die Objekte geo
und coordinates
sind nur vorhanden (nicht null), wenn dem Post ein exakter Standort zugewiesen ist. Wenn ein exakter Standort angegeben wird, liefert das Objekt coordinates
ein [long, lat]-Array mit den geografischen Koordinaten, und ein X Place, der diesem Standort entspricht, wird zugewiesen.
Datenwörterbuch für Orte
Feld | Typ | Beschreibung |
---|---|---|
id | String | ID, die diesen Ort darstellt. Beachten Sie, dass sie als String und nicht als Integer vorliegt. Beispiel: “id”:“01a9a39529b27f36” |
url | String | URL mit dem Verweis auf zusätzliche Orts-Metadaten zu diesem Ort. Beispiel: “url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json” |
place_type | String | Der Typ des Orts, der durch diesen Eintrag dargestellt wird. Beispiel: “place_type”:“city” |
name | String | Kurze, menschenlesbare Darstellung des Ortsnamens. Beispiel: “name”:“Manhattan” |
full_name | String | Vollständige, menschenlesbare Darstellung des Ortsnamens. Beispiel: “full_name”:“Manhattan, NY” |
country_code | String | Abgekürzter Ländercode des Landes, in dem sich dieser Ort befindet. Beispiel: “country_code”:“US” |
country | String | Name des Landes, in dem sich dieser Ort befindet. Beispiel: “country”:“United States” |
bounding_box | Object | Eine Koordinaten-Begrenzungsbox, die diesen Ort umschließt. Beispiel: “bounding_box”: “coordinates”: [ [ [ -74.026675, 40.683935 ], [ -74.026675, 40.877483 ], [ -73.910408, 40.877483 ], [ -73.910408, 40.3935 ] ] ], “type”: “Polygon” |
attributes | Object | Bei Verwendung von PowerTrack, den 30‑Day‑ und Full‑Archive‑Search‑APIs sowie Volume Streams ist dieser hash null. Beispiel: “attributes”: |
Feld | Typ | Beschreibung |
coordinates | Array von Array von Array von Float | Eine Reihe von Längen- und Breitengradpunkten, die einen Rahmen definieren, der die Place-Entität umfasst, auf die sich dieser Begrenzungsrahmen bezieht. Jeder Punkt ist ein Array in der Form [longitude, latitude]. Punkte werden pro Begrenzungsrahmen zu einem Array gruppiert. Die Arrays der Begrenzungsrahmen werden in ein zusätzliches Array eingebettet, um mit der Polygon-Notation kompatibel zu sein. Beispiel: “coordinates”: [ [ [ -74.026675, 40.683935 ], [ -74.026675, 40.877483 ], [ -73.910408, 40.877483 ], [ -73.910408, 40.3935 ] ] ] |
type | String | Der Typ der in der Eigenschaft coordinates codierten Daten. Für Begrenzungsrahmen ist dies “Polygon” und für Posts mit exakten Koordinaten “Point”. Beispiel: “type”:“Polygon” |
Datenwörterbuch für Geo-Objekt
Feld | Typ | Beschreibung |
coordinates | Sammlung von Float | Der Längen- und Breitengrad des Standorts des Post, als Sammlung in der Form [latitude, longitude]. Beispiel: ** “geo”: “type”:** “Point”, ** “coordinates”: [ 54.27784, -0.41068 ] ** |
type | String | Der Typ der in der Eigenschaft coordinates codierten Daten. Für Koordinatenfelder eines Post ist dies „Point“. Beispiel: “type”: “Point” |
Feld | Typ | Beschreibung |
coordinates | Sammlung von Float | Der Längen- und Breitengrad des Standorts des Post, als Sammlung in der Form [longitude, latitude]. Beispiel: ** “coordinates”: “type”:** “Point”, ** “coordinates”: [ -0.41068, 54.27784 ] ** |
type | String | Der Typ der in der Eigenschaft coordinates codierten Daten. Für Koordinatenfelder eines Post ist dies „Point“. Beispiel: “type”: “Point” |
Abgeleitete Standorte
Feld | Typ | Beschreibung |
derived | locations object | Abgeleiteter Standort aus der Geo-Anreicherung des Profils “derived”: “locations”: [ ** “country”:** “United Kingdom”, “country_code”: “GB”, “locality”: “Yorkshire”, “region”: “England”, “full_name”: “Yorkshire, England, United Kingdom”, ** “geo”: “coordinates”: [ -1.5, 54 ], “type”:** “point” ** ] ** |
Beispiele:
X-Entities
Zu diesem Abschnitt springen Einführung Entities-Objekt - Hashtag-Objekt - Media-Objekt - Media-Größenobjekt - URL-Objekt - User-Mention-Objekt - Symbol-Objekt - Umfrage-Objekt Details zu Retweets und Quote Tweets Entities in User-Objekten Entities in Direct Messages Nächste SchritteEinführung
entities
enthält Arrays gängiger Elemente, die in Posts vorkommen: Hashtags, Benutzererwähnungen, Links, Aktiensymbole (Ticker), X-Umfragen und angehängte Medien. Diese Arrays sind für Entwickler praktisch, wenn sie Posts verarbeiten, da X den Textkörper im Wesentlichen bereits vorverarbeitet bzw. geparst hat. Anstatt diese Entitäten explizit im Post-Text suchen zu müssen, kann Ihr Parser direkt zu diesem JSON-Abschnitt springen – dort sind sie bereits aufbereitet.
Über diese Parsing-Erleichterungen hinaus liefert der Abschnitt entities
auch nützliche Metadaten mit „Mehrwert“. Wenn Sie beispielsweise die Enhanced URLs Enrichment verwenden, enthalten die URL-Metadaten vollständig expandierte URLs sowie zugehörige Website-Titel und -Beschreibungen. Ein weiteres Beispiel: Bei Benutzererwähnungen enthalten die Entities-Metadaten die numerische Benutzer-id, was bei Anfragen an viele X APIs nützlich ist.
Jede Post-JSON-Payload enthält einen Abschnitt entities
mit dem minimalen Satz der Attribute hashtags
, urls
, user_mentions
und symbols
, selbst wenn keine dieser Entitäten Teil des Post-Texts ist. Wenn Sie beispielsweise das JSON für einen Post mit dem Text „Hello World!“ und ohne angehängte Medien untersuchen, enthält das JSON des Posts den folgenden Inhalt mit Entity-Arrays, die null Elemente enthalten:
- Die Entitäten media und polls erscheinen nur, wenn dieser Inhaltstyp Teil des Posts ist.
- Wenn Sie mit nativen Medien (Fotos, Videos oder GIFs) arbeiten, ist das Extended Entities-Objekt der richtige Weg.
Entities-Objekt
entities
und extended_entities
bestehen beide aus Arrays von Entity-Objekten. Unten finden Sie Beschreibungen für jedes dieser Objekte, einschließlich Datenwörterbüchern, die die Namen der Objektattribute, deren Typen und eine kurze Beschreibung aufführen. Wir geben außerdem an, welche PowerTrack-Operatoren auf diese Attribute matchen, und fügen einige Beispiel-JSON-Payloads bei.
Eine Sammlung gängiger Entities, die in Posts vorkommen, darunter Hashtags, Links und Benutzererwähnungen. Dieses entities
-Objekt enthält ein media
-Attribut, dessen Implementierung im Abschnitt entities
jedoch nur für Posts mit einem einzelnen Foto vollständig zutreffend ist. Für alle Posts mit mehr als einem Foto, mit Video oder animiertem GIF verweisen wir auf den Abschnitt extended_entities
.
Datenwörterbuch für Entities
entities
‑Struktur folgen Datenwörterbücher für diese Teilobjekte sowie die dazu passenden Operatoren.
Feld | Typ | Beschreibung |
---|---|---|
hashtags | Array von Hashtag Objects | Stellt Hashtags dar, die aus dem Post-Text geparst wurden. Beispiel: “hashtags”: [ “indices”: [ 32, 38 ], “text”: “nodejs” ] |
media | Array von Media Objects | Stellt Medienelemente dar, die mit dem Post hochgeladen wurden. Beispiel: “media”: [ “display_url”: “pic.x.com/5J1WJSRCy9”, “expanded_url”: “https://x.com/nolan_test/status/930077847535812610/photo/1”, “id”: 9.300778475358126e17, “id_str”: “930077847535812610”, “indices”: [ 13, 36 ], “media_url”: “http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg” “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 , “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 , “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 , “small”: “h”: 454, “resize”: “fit”, “w”: 680 , “type”: “photo”, “url”: “https://t.co/5J1WJSRCy9”, ] |
urls | Array von URL Objects | Stellt URLs dar, die im Text eines Posts enthalten sind. Beispiel (ohne aktivierte Enhanced URLs-Anreicherung): “urls”: [ “indices”: [ 32, 52 ], “url”: “http://t.co/IOwBrTZR”, “display_url”: “youtube.com/watch?v=oHg5SJ…”, “expanded_url”: “http://www.youtube.com/watch?v=oHg5SJYRHA0” ] Beispiel (mit aktivierter Enhanced URLs-Anreicherung): “urls”: [ “url”: “https://t.co/D0n7a53c2l”, “expanded_url”: “http://bit.ly/18gECvy”, “display_url”: “bit.ly/18gECvy”, “unwound”: “url”: “https://www.youtube.com/watch?v=oHg5SJYRHA0”, “status”: 200, “title”: “RickRoll’D”, “description”: “http://www.facebook.com/rickroll548 As long as trolls are still trolling, the Rick will never stop rolling.” , “indices”: [ 62, 85 ] ] |
user_mentions | Array von User Mention Objects | Stellt andere X-Nutzer dar, die im Text des Posts erwähnt werden. Beispiel: “user_mentions”: [ “name”: “X API”, “indices”: [ 4, 15 ], “screen_name”: “xapi”, “id”: 6253282, “id_str”: “6253282” ] |
symbols | Array von Symbol Objects | Stellt Symbole dar, d. h. $cashtags, die im Text des Posts enthalten sind. Beispiel: “symbols”: [ “indices”: [ 12, 17 ], “text”: “twtr” ] |
polls | Array von Poll Objects | Stellt X-Umfragen dar, die im Post enthalten sind. Beispiel: “polls”: [ “options”: [ “position”: 1, “text”: “I read documentation once.” , “position”: 2, “text”: “I read documentation twice.” }, “position”: 3, “text”: “I read documentation over and over again.” } ], “end_datetime”: “Thu May 25 22:20:27 +0000 2017”, “duration_minutes”: 60 ] |
Hashtag-Objekt
Der Abschnittentities
enthält ein hashtags
-Array mit einem Objekt für jedes im Post-Text enthaltene Hashtag und ein leeres Array, wenn keine Hashtags vorhanden sind.
Der PowerTrack-Operator #
wird verwendet, um mit dem Attribut text
abzugleichen. Der Operator has:hashtags
liefert einen Treffer, wenn sich mindestens ein Element im Array befindet.
Feld | Typ | Beschreibung |
indices | Array aus Int | Ein Array von Ganzzahlen, das die Offsets innerhalb des Post-Texts angibt, an denen das Hashtag beginnt und endet. Die erste Ganzzahl gibt die Position des Zeichens „#“ im Post-Text-String an. Die zweite Ganzzahl gibt die Position des ersten Zeichens nach dem Hashtag an. Die Differenz zwischen den beiden Zahlen entspricht somit der Länge des Hashtag-Namens plus eins (für das Zeichen „#“). Beispiel: “indices”:[32,38] |
text | String | Name des Hashtags ohne das führende Zeichen „#“. Beispiel: “text”:“nodejs” |
Medienobjekt
Der Abschnittentities
enthält ein media
-Array mit einem einzelnen Medienobjekt, wenn ein Medienobjekt an den Post „angehängt“ wurde. Wenn kein natives Medium angehängt wurde, gibt es in den entities
kein media
-Array. Aus den folgenden Gründen sollte der Abschnitt extended_entities
zur Verarbeitung nativer Post-Medien verwendet werden:
- Das Feld
type
des Mediums gibt immer „photo“ an, selbst wenn ein Video oder GIF an den Post angehängt ist. - Obwohl bis zu vier Fotos angehängt werden können, wird im Abschnitt
entities
nur das erste aufgeführt.
has:media
liefert einen Treffer, wenn dieses Array befüllt ist.
Feld | Typ | Beschreibung |
display_url | String | URL der Medien, die Clients angezeigt werden soll. Beispiel: “display_url”:“pic.x.com/rJC5Pxsu” |
expanded_url | String | Eine erweiterte Version von display_url. Verweist auf die Medien-Anzeigeseite. Beispiel: “expanded_url”: “http://x.com/yunorno/status/114080493036773378/photo/1” |
id | Int64 | ID der Medien als 64-Bit-Integer. Beispiel: “id”:114080493040967680 |
id_str | String | ID der Medien als String. Beispiel: “id_str”:“114080493040967680” |
indices | Array of Int | Ein Array von Integern, das die Offsets innerhalb des Post-Textes angibt, wo die URL beginnt und endet. Der erste Integer gibt die Position des ersten Zeichens der URL im Post-Text an. Der zweite Integer gibt die Position des ersten Nicht-URL-Zeichens nach der URL an (oder das Ende des Strings, wenn die URL der letzte Teil des Post-Textes ist). Beispiel: “indices”:[15,35] |
media_url | String | Eine http:// URL, die direkt auf die hochgeladene Mediendatei verweist. Beispiel: “media_url”:“http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg” Für Medien in Direct Messages ist media_url dieselbe https-URL wie media_url_https und muss durch Signierung einer Anfrage mit dem Access Token des Benutzers unter Verwendung von OAuth 1.0a aufgerufen werden.Es ist nicht möglich, auf Bilder über eine authentifizierte x.com-Sitzung zuzugreifen. Besuchen Sie bitte diese Seite, um zu erfahren, wie Sie diese kürzlichen Änderungen berücksichtigen können. Sie können diese Bilder nicht direkt in eine Webseite einbetten. Siehe Photo Media URL-Formatierung für die Formatierung einer Foto-URL, wie media_url_https , basierend auf den verfügbaren sizes . |
media_url_https | String | Eine https:// URL, die direkt auf die hochgeladene Mediendatei verweist, zum Einbetten auf https-Seiten. Beispiel: “media_url_https”:“https://p.twimg.com/AZVLmp-CIAAbkyy.jpg” Für Medien in Direct Messages muss media_url_https durch Signierung einer Anfrage mit dem Access Token des Benutzers unter Verwendung von OAuth 1.0a aufgerufen werden.Es ist nicht möglich, auf Bilder über eine authentifizierte x.com-Sitzung zuzugreifen. Besuchen Sie bitte diese Seite, um zu erfahren, wie Sie diese kürzlichen Änderungen berücksichtigen können. Sie können diese Bilder nicht direkt in eine Webseite einbetten. Siehe Photo Media URL-Formatierung für die Formatierung einer Foto-URL, wie media_url_https , basierend auf den verfügbaren sizes . |
sizes | Size Object | Ein Objekt, das verfügbare Größen für die Mediendatei anzeigt. Beispiel: “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 }, “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 }, “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 }, “small”: “h”: 454, “resize”: “fit”, “w”: 680 } } } Siehe Photo Media URL-Formatierung für die Formatierung einer Foto-URL, wie media_url_https , basierend auf den verfügbaren sizes . |
source_status_id | Int64 | Nullable. Für Posts, die Medien enthalten, die ursprünglich mit einem anderen Post verknüpft waren, verweist diese ID auf den ursprünglichen Post. Beispiel: “source_status_id”: 205282515685081088 |
source_status_id_str | Int64 | Nullable. Für Posts, die Medien enthalten, die ursprünglich mit einem anderen Post verknüpft waren, verweist diese string-basierte ID auf den ursprünglichen Post. Beispiel: “source_status_id_str”: “205282515685081088” |
type | String | Typ der hochgeladenen Medien. Mögliche Typen sind photo, video und animated_gif. Beispiel: “type”:“photo” |
url | String | Gekapselte URL für den Medienlink. Dies entspricht der URL, die direkt in den rohen Post-Text eingebettet ist, und den Werten für den indices -Parameter. Beispiel:“url”:“http://t.co/rJC5Pxsu” |
Mediengrößenobjekte
Größenobjekt
Feld | Typ | Beschreibung |
thumb | Größenobjekt | Informationen zu einer Version des Mediums in Miniaturgröße. Beispiel: “thumb”:“h”:150, “resize”:“crop”, “w”:150} Fotos in Miniaturgröße werden so skaliert, dass sie einen Rahmen von 150×150 ausfüllen (fill) und dabei beschnitten. |
large | Größenobjekt | Informationen zu einer Version des Mediums in großer Größe. Beispiel: “large”:“h”:454, “resize”:“fit”, “w”:680} Kleine Foto-Versionen werden so skaliert, dass sie in einen Rahmen von 680×680 passen (fit). |
medium | Größenobjekt | Informationen zu einer Version des Mediums in mittlerer Größe. Beispiel: “medium”:“h”:800, “resize”:“fit”, “w”:1200} Mittlere Foto-Versionen werden so skaliert, dass sie in einen Rahmen von 1200×1200 passen (fit). |
small | Größenobjekt | Informationen zu einer Version des Mediums in kleiner Größe. Beispiel: “small”:“h”:1366, “resize”:“fit”, “w”:2048} Große Foto-Versionen werden so skaliert, dass sie in einen Rahmen von 2048×2048 passen (fit). |
Size-Objekt
Feld | Typ | Beschreibung |
w | Int | Breite dieses Formats in Pixeln. Beispiel: “w”:150 |
h | Int | Höhe dieses Formats in Pixeln. Beispiel: “h”:150 |
resize | String | Verwendete Skalierungsmethode, um dieses Format zu erhalten. Ein Wert von fit bedeutet, dass das Medium so skaliert wurde, dass es in eine Dimension passt, wobei das ursprüngliche Seitenverhältnis beibehalten wird. Ein Wert von crop bedeutet, dass das Medium zugeschnitten wurde, um eine bestimmte Auflösung zu erreichen. Beispiel: “resize”:“crop” |
Formatierung von Foto-Media-URLs
media_url
oder media_url_https
können auch allein geladen werden; dadurch wird standardmäßig die Variante medium geladen. Es ist jedoch vorzuziehen, nach Möglichkeit eine vollständig formatierte Foto-Media-URL anzugeben.
Eine Foto-Media-URL besteht aus drei Teilen:
Base URL | Die Basis-URL ist die Media-URL ohne Dateierweiterung. Zum Beispiel: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, Die Basis-URL ist dann: https://pbs.twimg.com/media/DOhM30VVwAEpIHq |
Format | Das Format ist der Typ des Fotos, als der das Bild vorliegt. Mögliche Formate sind jpg oder png; sie erscheinen als Erweiterung der Media-URL. Zum Beispiel: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, Das Format ist dann: jpg |
Name | Der Name ist der Feldname der zu ladenden Größe. Zum Beispiel: “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 , “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 }, “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 }, “small”: “h”: 454, “resize”: “fit”, “w”: 680 } } } Der Name beim Laden des großformatigen Fotos wäre: large |
Legacy format | Das Legacy-Format ist veraltet. Foto-Medienladevorgänge sollten vollständig auf das moderne Format umgestellt werden. <base_url>.<format>:<name> Zum Beispiel: https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large |
Modern format | Das moderne Format zum Laden von Fotos wurde 2015 bei X eingeführt und ist seit 2017 de facto Standard. Alle Foto-Medienladevorgänge sollten auf dieses Format umgestellt werden. <base_url>?format=<format>&name=<name> Zum Beispiel: https://pbs.twimg.com/media/DOhM30VVwAEpIHq?format=jpg&name=large Hinweis: Die Items in der query-Zeichenfolge der Foto-Medien-URL sind alphabetisch sortiert. Falls beim Laden von Medien zusätzliche query-Items hinzugefügt werden, muss die alphabetische Sortierung beibehalten werden. Beispiel: Wenn es das hypothetische neue query-Item preferred_format gäbe, stünde es in der query-Zeichenfolge nach format und name. |
URL-Objekt
Der Abschnittentities
enthält ein Array urls
mit einem Objekt für jeden Link, der im Post-Text enthalten ist, und enthält ein leeres Array, wenn keine Links vorhanden sind.
Der Operator has:links
trifft zu, wenn sich mindestens ein Element im Array befindet. Der Operator url:
wird verwendet, um auf das Attribut expanded_url
abzugleichen. Wenn Sie die Expanded URL Enrichment verwenden, wird der Operator url:
verwendet, um auf das Attribut unwound.url
(vollständig aufgelöste URL) abzugleichen. Wenn Sie die Enhanced URL Enrichment verwenden, werden die Operatoren url_title:
und url_description:
verwendet, um auf die Attribute unwound.title
und unwound.description
abzugleichen.
Field | Type | Description |
display_url | String | In den Post eingefügte/eingetippte URL. Beispiel: “display_url”:“bit.ly/2so49n2” |
expanded_url | String | Erweiterte Version von display_url . Beispiel:“expanded_url”:“http://bit.ly/2so49n2” |
indices | Array of Int | Ein Array von Ganzzahlen, das Offsets innerhalb des Post-Texts angibt, an denen die URL beginnt und endet. Die erste Ganzzahl gibt die Position des ersten Zeichens der URL im Post-Text an. Die zweite Ganzzahl gibt die Position des ersten Nicht-URL-Zeichens nach dem Ende der URL an. Beispiel: “indices”:[30,53] |
url | String | Umhüllte URL, entsprechend dem Wert, der direkt im Rohtext des Posts eingebettet ist, sowie den Werten für den Parameter indices. Beispiel: “url”:“https://t.co/yzocNFvJuL” |
unwound
verfügbar:
Field | Type | Description |
url | String | Die vollständig aufgelöste Version des im Post enthaltenen Links. Beispiel: “url”:“https://blog.x.com/en_us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html” |
status | Int | Finaler HTTP-Status des Auflösungsprozesses; „200“ steht für Erfolg. Beispiel: 200 |
title | String | HTML-Titel des Links. Beispiel: “title”:“Using X as a ‘go-to’ communication channel during severe weather” |
description | String | HTML-Beschreibung des Links. Beispiel: “description”:“Using X as a ‘go-to’ communication channel during severe weather” |
Objekt für Benutzererwähnungen
Der Abschnittentities
enthält ein Array user_mentions
mit einem Objekt für jede im Post-Text enthaltene Benutzererwähnung und ein leeres Array, wenn keine Benutzererwähnung vorhanden ist.
Der PowerTrack-Operator @
wird verwendet, um auf das Attribut screen_name
zu matchen. Der Operator has:mentions
matcht, wenn sich mindestens ein Element im Array befindet.
Feld | Typ | Beschreibung |
id | Int64 | ID des erwähnten Benutzers als Integer. Beispiel: “id”:6253282 |
id_str | String | ID des erwähnten Benutzers als Zeichenfolge. Beispiel: “id_str”:“6253282” |
indices | Array of Int | Ein Array von Ganzzahlen, das die Offsets innerhalb des Post-Texts angibt, an denen die Benutzerreferenz beginnt und endet. Die erste Ganzzahl gibt die Position des „@“-Zeichens der Benutzererwähnung an. Die zweite Ganzzahl gibt die Position des ersten Zeichens an, das nicht mehr zum screen_name gehört, und auf die Benutzererwähnung folgt. Beispiel: “indices”:[4,15] |
name | String | Anzeigename des referenzierten Benutzers. Beispiel: “name”:“API” |
screen_name | String | screen_name des referenzierten Benutzers. Beispiel: “screen_name”:“api” |
Symbolobjekt
Der Abschnittentities
enthält ein Array symbols
mit einem Objekt für jedes im Post-Text enthaltene $cashtag und ein leeres Array, wenn kein Symbol vorhanden ist.
Der PowerTrack-Operator $
wird verwendet, um auf das Attribut text
zu matchen. Der Operator has:symbols
trifft zu, wenn mindestens ein Element im Array vorhanden ist.
Feld | type | Beschreibung |
indices | Array von Int | Ein Array von Ganzzahlen, das die Offsets innerhalb des Post-Textes angibt, an denen das Symbol/Cashtag beginnt und endet. Die erste Ganzzahl steht für die Position des “-Zeichen). Beispiel: “indices”:[12,17] |
text | String | Name des Cashtags ohne das führende „$“-Zeichen. Beispiel: “text”:“twtr” |
Poll-Objekt
entities
enthält ein polls
-Array mit genau einem poll
-Objekt, wenn der Post eine Umfrage enthält. Wenn keine Umfrage enthalten ist, gibt es im Abschnitt entities
kein polls
-Array.
Beachten Sie, dass diese Poll-Metadaten nur mit den folgenden Enterprise-APIs verfügbar sind:
- Volumen-Streams (Decahose)
- Real-time PowerTrack
- X Search APIs (Full-Archive Search und 30-Day Search)
Feld | Typ | Beschreibung |
options | Array von Option-Objekten | Ein Array von Optionen, jeweils mit einer Position in der Umfrage und dem Text für diese Position. Beispiel: “options”: [ “position”: 1, “text”: “I read documentation once.” } ] } |
end_datetime | String | Zeitstempel (UTC), zu dem die Umfrage endet. Beispiel: “end_datetime”: “Thu May 25 22:20:27 +0000 2017” |
duration_minutes | String | Dauer der Umfrage in Minuten. Beispiel: “duration_minutes”: 60 |
Details zu Retweets und Quote Tweets
Retweets













Quote Tweets
Entitäten für das User-Objekt
JSON-Beispiel
Erweiterte X-Entities
Direkt zu auf dieser Seite Einführung „Extended Entities“-Objekt Beispiel-Tweets und JSON-Payloads - Tweet mit vier nativen Fotos - Tweet mit nativem Video - Tweet mit einem animierten GIF Nächste SchritteEinführung
extended_entities
-JSON-Objekt. Das Objekt extended_entities
enthält ein einzelnes media
-Array von media
-Objekten (siehe den Abschnitt entities
für das zugehörige Datenwörterbuch). Keine anderen Entitätstypen, wie Hashtags und Links, sind im Abschnitt extended_entities
enthalten. Das media
-Objekt im Abschnitt extended_entities
ist in seiner Struktur identisch mit dem im Abschnitt entities
.
An einem Post kann immer nur ein Medientyp angehängt sein. Bei Fotos können bis zu vier Fotos angehängt werden. Bei Videos und GIFs jeweils eines. Da die type
-Metadaten im Abschnitt extended_entities
den Medientyp korrekt angeben („photo“, „video“ oder „animated_gif“) und bis zu 4 Fotos unterstützen, sind sie die bevorzugte Metadatenquelle für native Medien.
Beispiel-Posts und JSON-Payloads
Hier ist der Abschnitt
entities
für diesen Post:
extended_entities
für diesen Post:
Post mit nativem Video
video_info
durch ein Objekt additional_media_info
ersetzt.
Das Objekt additional_media_info
enthält zusätzliche vom Publisher bereitgestellte Medieninformationen, z. B. title
, description
und das embeddable
-Flag. Videoinhalte sind nur für offizielle X‑Clients verfügbar, wenn embeddable=false
ist. In diesem Fall sind alle im Payload bereitgestellten Video-URLs X-basiert, sodass die Nutzer das Video in einer von X betriebenen Eigenschaft öffnen können, indem sie auf den Link klicken.
Hier ist ein Beispiel dafür, wie das Extended-Entities-Objekt in dieser Situation aussieht:
entities
, in dem type
fälschlicherweise auf „photo“ gesetzt ist. Der Abschnitt extended_entities
ist für alle nativen Medientypen vorzuziehen, einschließlich „video“ und „animated_gif“.
Post mit einem animierten GIF
Unten finden Sie die erweiterten Extended-Entities‑Metadaten für diesen Post mit einem animierten GIF:
Native Enriched-Beispielpayloads
Post
Antwort auf Post
Erweiterter Post
Post mit extended_entities
Retweet
Zitieren-Tweet
Retweeteter Zitier-Tweet
Enterprise Activity Streams-Datenobjekte
Möchten Sie mehr darüber erfahren, wie das Activity-Streams-Datenformat auf das X API v2-Format abgebildet wird?
Bitte beachten: Für Enterprise-Daten-APIs wird dringend empfohlen, das Format Enriched Native zu verwenden.
- Das Enriched-Native-Format umfasst alle seit 2017 hinzugekommenen Metadaten, etwa poll metadata, sowie zusätzliche metrics wie reply_count und quote_count.
- Das Activity-Streams-Format wurde seit dem Zeichen-Update im Jahr 2017 nicht mehr um neue Metadaten oder Enrichments erweitert.
Aktivitätsobjekt
Datenwörterbuch
Attribut | Typ | Beschreibung |
id | string | Eine eindeutige IRI für den Post. Im Detail ist „tag” das Schema, „search.x.com” repräsentiert die Domain für das Schema, und 2005 ist das Jahr, in dem das Schema abgeleitet wurde. Beim Speichern von Posts sollte dies als eindeutiger Identifikator oder Primärschlüssel verwendet werden. „id”: „tag:search.x.com,2005:1050118621198921728” |
objectType | string | Typ des Objekts, immer auf „activity” gesetzt „objectType”: „activity” |
object | object | Ein Objekt, das den Post repräsentiert, der gepostet oder geteilt wird. Für Retweets enthält dies eine vollständige „activity” mit den relevanten Feldern, die in diesem Schema beschrieben sind. Für ursprüngliche Posts enthält dies ein „note”-Objekt mit den hier beschriebenen Feldern. „object”: „object”: „objectType”: „note”, „id”: „object:search.x.com,2005:1050118621198921728”, „summary”: „To make room for more expression, we will now count all emojis as equal—including those with gender and skin t… https://t.co/MkGjXf9aXm”, „link”: „http://x.com/API/statuses/1050118621198921728”, „postedTime”: „2018-10-10T20:19:24.000Z” |
long_object | object | Ein Objekt, das den vollständigen Textinhalt repräsentiert, wenn der Post-Text über 140 Zeichen hinausgeht. „long_object”: „body”: „To make room for more expression, we will now count all emojis as equal—including those with gender and skin tone modifiers 👍🏻👍🏽👍🏿. This is now reflected in Twitter-Text, our Open Source library. \n\nUsing Twitter-Text? See the forum post for detail: https://t.co/Nx1XZmRCXA”, „display_text_range”: [ 0, 277 ], „twitter_entities”: „hashtags”: [], „urls”: [ „url”: „https://t.co/Nx1XZmRCXA”, „expanded_url”: „https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607”, „display_url”: „devcommunity.com/t/new-update-t…”, „indices”: [ 254, 277 ] ], „user_mentions”: [], „symbols”: [] |
display_text_range | array | Wird verwendet, wenn der Post-Text über 140 Zeichen hinausgeht. „display_text_range”: [ 0, 142 ] |
verb | string | Der Typ der Aktion, die vom Benutzer ausgeführt wird. Posts: „post” Retweets: „share” Gelöschte Posts: „delete” Das Verb ist die korrekte Methode, um zwischen einem Tweet und einem echten Retweet zu unterscheiden. Dies gilt jedoch nur für echte Retweets und nicht für modifizierte oder zitierte Tweets, die nicht die X Retweet-Funktionalität verwenden. Für eine Beschreibung der AS-Verben klicken Sie hier. Bei Löschungen beachten Sie, dass nur eine begrenzte Anzahl von Feldern enthalten ist, wie im Beispiel-Payload unten gezeigt. „verb”: „post” |
postedTime | date (ISO 8601) | Die Zeit, zu der die Aktion stattfand, z. B. die Zeit, zu der der Post gepostet wurde. „postedTime”: „2018-10-10T20:19:24.000Z” |
generator | object | Ein Objekt, das das Dienstprogramm repräsentiert, das zum Posten des Posts verwendet wurde. Dies enthält den Namen („displayName”) und einen Link („link”) für die Quellanwendung, die den Post generiert. „generator”: „displayName”: „X Web Client”, „link”: „http://x.com” |
provider | object | Ein JSON-Objekt, das den Anbieter der Aktivität repräsentiert. Dies enthält einen objectType („service”), den Namen des Anbieters („displayName”) und einen Link zur Website des Anbieters („link”). „provider”: „objectType”: „service”, „displayName”: „X”, „link”: „http://www.x.com” |
link | string | Ein Permalink für den Post. „link”: „http://x.com/API/statuses/1050118621198921728” |
body | string | Der Post-Text. Bei Retweets beachten Sie, dass X den Wert des body auf der Root-Ebene modifiziert, indem „RT @username” am Anfang hinzugefügt und der ursprüngliche Text gekürzt und am Ende mit Auslassungspunkten versehen wird. Daher sollte Ihre App bei Retweets den object.body betrachten, um sicherzustellen, dass sie den unmodifizierten Text des ursprünglichen Posts (der retweetet wird) extrahiert. „body”: „With Cardiff, Crystal Palace, and Hull City joining the EPL from the Championship it will be a great relegation battle at the end.” |
display_text_range | array | Beschreibt den Bereich der Zeichen innerhalb des body-Texts, der den angezeigten Post angibt. Posts mit führenden @-Erwähnungen beginnen bei mehr als 0 und Posts mit angehängten Medien oder die über 140 Zeichen hinausgehen, zeigen die display_text_range im long_object an. „display_text_range”: [ 14, 42 ] oder „long_object”: „display_text_range”: [ 0, 277 ]… |
actor | object | Ein Objekt, das den X-Benutzer repräsentiert, der gepostet hat. Das Actor-Objekt bezieht sich auf einen X-Benutzer und enthält alle Metadaten, die für diesen Benutzer relevant sind. Siehe Details zum Actor-Objekt |
inReplyTo | object | Ein JSON-Objekt, das sich auf den Post bezieht, auf den geantwortet wird, falls zutreffend. Enthält einen Link zum Post. „inReplyTo”: „link”: „http://x.com/GOP/statuses/349573991561838593” |
location | object | Ein JSON-Objekt, das den X „Place” repräsentiert, wo der Post erstellt wurde. Dies ist ein Objekt, das von der X-Plattform weitergegeben wird. Siehe Location-Objekt |
twitter_entities | object | Das entities-Objekt aus X’s Datenformat, das Listen von URLs, Erwähnungen und Hashtags enthält. Bitte beziehen Sie sich auf die X-Dokumentation zu Entities hier. Beachten Sie, dass X bei Retweets die Werte von entities, die auf der Root-Ebene extrahiert werden, möglicherweise kürzt. Daher sollte Ihre App bei Retweets object.twitter_entities betrachten, um sicherzustellen, dass Sie ungekürzte Werte verwenden. Siehe Details zum twitter_entities-Objekt |
twitter_extended_entities | object | Ein Objekt aus X’s nativem Datenformat, das „media” enthält. Dies ist für jeden Post vorhanden, bei dem das twitter_entities-Objekt Daten im „media”-Feld enthält, und schließt mehrere Fotos ein, falls im Post vorhanden. Beachten Sie, dass dies der korrekte Ort ist, um Medieninformationen für Posts mit mehreren Fotos abzurufen. Mehrere Fotos werden durch kommagetrennte JSON-Objekte innerhalb des „media”-Arrays dargestellt. Siehe Details zum twitter_extended_entities-Objekt |
gnip | object | Ein Objekt, das zur Activity-Payload hinzugefügt wird, um die übereinstimmenden Regeln anzuzeigen und angereicherte Daten basierend auf aktiven Anreicherungen im Stream oder Produkt hinzuzufügen. Siehe Details zum gnip-Objekt |
edit_history | Object | Eindeutige Kennungen, die alle Versionen eines Posts anzeigen. Für Posts ohne Bearbeitungen gibt es eine ID. Für Posts mit Bearbeitungsverlauf gibt es mehrere IDs, die in aufsteigender Reihenfolge angeordnet sind und die Reihenfolge der Bearbeitungen widerspiegeln, wobei die neueste Version an der letzten Position des Arrays steht. Die Post-IDs können verwendet werden, um frühere Versionen eines Posts abzurufen und anzuzeigen. Beispiel: edit_history”: “initial_tweet_id”: “1283764123” “edit_tweet_ids”: [“1283764123”, “1394263866”] |
edit_controls | Object | Wenn vorhanden, zeigt an, wie lange ein Post noch bearbeitbar ist und die Anzahl der verbleibenden Bearbeitungen. Posts sind nur in den ersten 30 Minuten nach der Erstellung bearbeitbar und können bis zu fünfmal bearbeitet werden. Die Post-IDs können verwendet werden, um frühere Versionen eines Posts abzurufen und anzuzeigen. Beispiel: “edit_controls”: “editable_until_ms”: 123 “edits_remaining”: 3 |
editable | Boolean | Wenn vorhanden, zeigt an, ob ein Post bei der Veröffentlichung zur Bearbeitung berechtigt war. Dieses Feld ist nicht dynamisch und wechselt nicht von True zu False, wenn ein Post sein bearbeitbares Zeitlimit oder die maximale Anzahl von Bearbeitungen erreicht. Die folgenden Post-Features führen dazu, dass dieses Feld false ist: _ Post ist beworben _ Post hat eine Umfrage _ Post ist eine Nicht-Selbst-Thread-Antwort _ Post ist ein Retweet (beachten Sie, dass Quote Tweets zur Bearbeitung berechtigt sind) _ Post ist nullcast _ Community-Post _ Superfollow-Post _ Kollaborativer Post |
Zusätzliche Post-Attribute
Attribut | type | Beschreibung |
---|---|---|
twitter_lang | string | |
favoritesCount | int | Nullable. Gibt ungefähr an, wie oft dieser Post von X Nutzern mit like markiert wurde. “favoritesCount”:298 |
retweetCount | int | Anzahl der Retweets dieses Posts. Beispiel: “retweetCount”:153 |
Veraltete Attribute
Feld | type | Beschreibung |
geo | object | Punktgenauer Standort, an dem der Post erstellt wurde. |
twitter_filter_level | string | Veraltetes Feld, beibehalten, um keine Breaking Changes zu verursachen |
Verschachtelte Post-Aktivitätsobjekte
{ "id": "tag:search.x.com,2005:222222222222", "objectType": "activity", "verb": "post", "body": "Quoting a Tweet: https://t.co/mxiFJ59FlB", "actor": { "displayName": "TheQuoter2" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111", "summary": "https://t.co/mxiFJ59FlB" }, "twitter_entities": {}, "twitter_extended_entities": {}, "gnip": {}, "twitter_quoted_status": { "id": "tag:search.x.com,2005:111111111", "objectType": "activity", "verb": "post", "body": "console.log('Happy birthday, JavaScript!');", "actor": { "displayName": "TheOriginalTweeter" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111" }, "twitter_entities": {} } }
Retweeteter zitierter Tweet:
Long-Objekt
Actor-Objekt
Datenwörterbuch
Attribut | Typ | Beschreibung |
---|---|---|
objectType | string | ”objectType”: “person” |
id | string | Die Zeichenkettendarstellung des eindeutigen Bezeichners für diesen Autor. Beispiel: “id:x.com:2244994945” |
link | ”http://www.x.com/XDeveloeprs | |
displayName | string | Der vom Nutzer festgelegte Name. Nicht zwingend der Name einer Person. In der Regel auf 50 Zeichen begrenzt, kann sich jedoch ändern. Beispiel: “displayName”: “XDevelopers” |
preferredUsername | string | Der Bildschirmname, das Handle oder der Alias, mit dem sich dieser Nutzer identifiziert. Einzigartig, kann sich jedoch ändern. Verwenden Sie nach Möglichkeit id als Nutzerbezeichner. Typischerweise maximal 15 Zeichen lang, aber einige historische Konten können längere Namen haben. Beispiel:“preferredUsername”: “XDevelopers” |
location | object | ** “location”: “objectType”:** “place”, “displayName”: “127.0.0.1” ** }** |
links | array | Nullable. Eine vom Nutzer im Zusammenhang mit seinem Profil angegebene URL. Beispiel: ** “links”: [ { “href”:** “https://developer.x.com/en/community”, “rel”: “me” ** } ]** |
summary | string | Nullable. Die vom Nutzer definierte UTF-8-Zeichenkette, die sein Konto beschreibt. Beispiel: “summary”: “The voice of the #XDevelopers team…“ |
protected | Boolean | Wenn true, zeigt an, dass dieser Nutzer seine Posts geschützt hat. Siehe About Public and Protected Posts. Beispiel: “protected”: true |
verified | Boolean | Wenn true, zeigt an, dass der Nutzer ein verifiziertes Konto hat. Siehe Verified Accounts. Beispiel: “verified”: false |
followersCount | Int | Die Anzahl der Follower, die dieses Konto derzeit hat. Unter bestimmten Belastungsbedingungen zeigt dieses Feld vorübergehend „0“ an. Beispiel: “followers_count”: 21 |
friendsCount | Int | Die Anzahl der Nutzer, denen dieses Konto folgt (auch „Followings“). Unter bestimmten Belastungsbedingungen zeigt dieses Feld vorübergehend „0“ an. Beispiel: “friends_count”: 32 |
listedCount | Int | Die Anzahl der öffentlichen Lists, in denen dieser Nutzer Mitglied ist. Beispiel: “listed_count”: 9274 |
favoritesCount | Int | Die Anzahl der Posts, die dieser Nutzer im Verlauf des Kontos geliked hat. Britische Schreibweise im Feldnamen aus historischen Gründen. Beispiel: “favourites_count”: 13 |
statusesCount | Int | Die Anzahl der Posts (einschließlich Retweets), die vom Nutzer veröffentlicht wurden. Beispiel: “statuses_count”: 42 |
postedTime | date | Das UTC-Datum/-Uhrzeit, zu dem das Nutzerkonto auf X erstellt wurde. Beispiel: “postedTime”: “2013-12-14T04:35:55.036Z” |
image | string | Eine HTTPS-basierte URL, die auf das Profilbild des Nutzers verweist. Beispiel: “image”: “https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg” |
Nicht mehr unterstützte (deprecated) Attribute
Feld | Typ | Beschreibung |
---|---|---|
utcOffset | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET account/settings |
twitterTimeZone | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET account/settings als tzinfo_name |
languages | null | Wert wird auf null gesetzt. Weiterhin verfügbar über GET account/settings als language |
Beispiele:
Standortobjekt
Datenwörterbuch für Standortdaten
Feld | Typ | Beschreibung |
---|---|---|
objectType | string | Weitere Details finden Sie hier. Beispiel: “objectType”: “place” |
displayName | string | Der vollständige Name des Standorts. “displayName”: “United States” |
name | string | Name des Standorts aus dem Place-JSON-Format von X. |
link | string | Ein Link zur vollständigen JSON-Repräsentation des Ortes auf X. “link”: “https://api.x.com/1.1/geo/id/27c45d804c777999.json” |
geo | object | Das Geokoordinaten-Objekt von X, entweder ein Polygon oder ein Punkt. Siehe geo |
countryCode | String | Abgekürzter Ländercode des Landes, in dem sich dieser Ort befindet. Beispiel: “countryCode”: “US” |
country | String | Name des Landes, in dem sich dieser Ort befindet. Beispiel: “country”: “United States” |
aus profileLocations abgeleitete Objekte
Feld | Typ | Beschreibung |
address | object | Bestandteil des profileLocation location-Objekts innerhalb des gnip object. Adresse des Standorts, abgeleitet durch die profile geo enrichment. Der Detaillierungsgrad kann variieren. “address”: { ** “country”: “United States”, “countryCode”: “US”, “locality”: “Providence”, “region”: “Rhode Island”, “subRegion”: “Providence County” }** |
geo | object | Bestandteil des profileLocation location-Objekts innerhalb des gnip object. Schwerpunktkoordinaten des Standorts, abgeleitet durch die profile geo enrichment. ”geo”: { ** “coordinates”: [ -98.5, 39.76 ], “type”: “point” }** |
X-Entities-Objekt
Beispiel:
X Extended-Entities-Objekt
Beispiel:
Gnip-Objekt
Datenwörterbuch
Feld | Typ | Beschreibung |
matching_rules | array | Enthält ein Array von passenden Regelobjekten, die angeben, mit welcher Regel die Aktivität übereinstimmt. “matching_rules”: [ ** { “tag”: null, “id”:** 1026514022567358500**, “id_str”:** “1026514022567358464” ** } ]** |
urls | array | Enthält ein Array der in der Aktivität enthaltenen Links sowie erweiterte URL-Metadaten für die URL-Unwinding-Anreicherung. ** “urls”: [ { “url”:** “https://t.co/tGQqNxxyhU”, “expanded_url”: “https://www.youtube.com/channel/UCwUxW2CV2p5mzjMBqvqLzJA”, “expanded_status”: 200**, “expanded_url_title”:** “Birdys Daughter”, “expanded_url_description”: “Premium, single-origin, handpicked Jamaica Blue Mountain Coffee” ** } ]** |
profileLocations | array of location objects | Enthält das abgeleitete Standortobjekt aus der Profile-Geo-Anreicherung. ** “profileLocations”: [ { “address”: { “country”:** “Canada”, “countryCode”: “CA”, “locality”: “Toronto”, “region”: “Ontario” ** }, “displayName”:** “Toronto, Ontario, Canada”, ** “geo”: { “coordinates”: [ -79.4163, 43.70011 ], “type”:** “point” ** }, “objectType”:** “place” ** } ] }** |
Beispiel:
Beispiele für Payloads von Aktivitätsstreams
twitter_extended_entities
Zeitachse der Tweet-Metadaten
Einführung**
Im Kern ist X ein öffentliches, globales Echtzeit-Kommunikationsnetzwerk. Seit 2006 wird die Entwicklung von X sowohl durch Nutzungsmuster und Konventionen der Nutzer als auch durch neue Produktfunktionen und -verbesserungen vorangetrieben. Wenn Sie X data für historische Forschung verwenden, ist es wichtig, die zeitliche Entwicklung zu verstehen, um Posts von Interesse im Datenarchiv zu finden. X wurde als einfache SMS‑Mobile‑App gestartet und hat sich zu einer umfassenden Kommunikationsplattform entwickelt – eine Plattform mit einem vollständigen Satz von APIs. APIs waren schon immer eine tragende Säule des X‑Netzwerks. Die erste API kam kurz nach dem Start von X auf den Markt. Als 2009 das Geotagging von Posts eingeführt wurde, wurde es über eine Geo API bereitgestellt (und später wurde die Möglichkeit, einen Post zu „geotaggen“, in die X.com‑Benutzeroberfläche integriert). Heute treiben die APIs von X das bidirektionale Kommunikationsnetzwerk an, das zur Quelle für Eilmeldungen und den Austausch von Informationen geworden ist. Die Möglichkeiten, auf diesem globalen Echtzeit-Kommunikationskanal aufzubauen, sind endlos. X stellt zwei historische APIs bereit, die Zugriff auf jeden öffentlich verfügbaren Post bieten: Historical PowerTrack und die Full‑Archive Search API. Beide APIs stellen eine Reihe von Operatoren bereit, um Posts von Interesse abzufragen und zu sammeln. Diese Operatoren greifen auf eine Vielzahl von Attributen zu, die jedem Post zugeordnet sind – Hunderte von Attributen wie den Textinhalt des Posts, den Kontonamen des Autors und im Post geteilte Links. Posts und ihre Attribute sind in JSON kodiert, einem gängigen textbasierten Datenaustauschformat. Mit der Einführung neuer Funktionen sind entsprechend neue JSON‑Attribute hinzugekommen, und typischerweise wurden neue API‑Operatoren eingeführt, um auf diese Attribute zu matchen. Wenn Ihr Anwendungsfall das Zuhören beinhaltet, was die Welt auf X gesagt hat, gilt: Je besser Sie verstehen, wann Operatoren über JSON metadata verfügten, auf die gematcht werden kann, desto effektiver können Ihre historischen PowerTrack‑Filter sein. Als Nächstes führen wir einige Schlüsselkonzepte ein, die die Grundlage dafür schaffen, zu verstehen, wie Aktualisierungen in der Post metadata das Auffinden Ihres relevanten Datensignals beeinflussen.Zentrale Konzepte**
Von nutzergetriebenen Konventionen zu X First-Class-Objekten
Post-Metadaten, Veränderlichkeit, Aktualisierungen und Aktualität
„Native“-Medien
has:videos
, has:images
und has:media
. Diese erfassen nur Medieninhalte, die über X‑Funktionen geteilt wurden. Um andere Medien zu berücksichtigen, die außerhalb der X‑Plattform gehostet werden, sollten Sie Operatoren verwenden, die auf URL‑metadata abstellen.
Bevor wir also in die Produktdetails von Historical PowerTrack und Full‑Archive Search eintauchen, machen wir eine Tour durch die Entwicklung von X als Produkt und Plattform im Laufe der Zeit.
X‑Zeitleiste
Unten finden Sie eine ausgewählte Zeitleiste von X. Die meisten dieser X‑Updates haben in irgendeiner Weise entweder das Nutzerverhalten, die Post‑JSON‑Inhalte, Abfrageoperatoren oder alle drei grundlegend beeinflusst. Betrachtet man X als API‑Plattform, haben die folgenden Ereignisse die JSON‑Payloads beeinflusst, die zur Kodierung von Posts verwendet werden. Diese JSON‑Details wiederum wirken sich darauf aus, wie die historischen APIs von X darauf matchen.
Beachten Sie, dass diese Zeitleiste im Allgemeinen präzise, aber nicht vollständig ist.
2006
- Oktober
- @replies werden zur Konvention.
- cashtags wurden im Juni 2012 zu anklickbaren/durchsuchbaren Links.
- November – Favoriten eingeführt.
2007
- Januar – @replies werden zu einem erstklassigen Objekt, mit einer Antwort-Schaltfläche in der UI und
in_reply_to
-metadata. - April – Retweets etablieren sich als Konvention.
- August – #hashtags werden zu einem zentralen Werkzeug zum Suchen und Organisieren von Posts.
2009
- Februar - $cashtags werden zur gängigen Konvention für die Diskussion von Börsentickersymbolen.
- Mai - Retweet-„Beta“ wird eingeführt, mit „Via @“ dem Post-Text vorangestellt.
- Juni - Verifizierte Accounts werden eingeführt.
- August - Retweets werden zu einem First-Class-Objekt mit dem Muster „RT @“ und neuen
retweet_status
-metadata. - Oktober - List-Funktion eingeführt.
- November - Post Geotagging API wird eingeführt und bietet die erste Methode für Nutzer, ihren Standort über Drittanbieter-Apps zu teilen.
2010
- Juni – X Places für das Geotagging von Posts eingeführt.
- August – Post-Schaltfläche für Websites gestartet. Erleichterte das Teilen von Links.
2011
- Mai – Der Follow-Button wurde eingeführt und machte es einfacher, Accounts zu folgen, die mit Websites verknüpft sind.
- August – Native Fotos wurden eingeführt.
2012
- Juni – $Cashtags werden zu anklickbaren/suchbaren Links.
2014
- März – Fotomarkierungen und Unterstützung für bis zu vier Fotos. Erweiterte X Entities metadata wurde eingeführt.
- April – Emojis werden in der X UI nativ unterstützt. Emojis wurden in Posts bereits seit mindestens 2008 häufig verwendet.
2015
- April - Eine Änderung am Post-UI-Design von X führt dazu, dass weniger Posts mit Geotags versehen werden.
- Oktober - X Polls eingeführt. Umfragen unterstützten ursprünglich zwei Auswahlmöglichkeiten mit einer 24‑stündigen Abstimmungsdauer. Im November unterstützten Umfragen vier Auswahlmöglichkeiten mit Abstimmungszeiträumen von 5 Minuten bis sieben Tagen. Umfrage-Metadaten wurden im Februar 2017 verfügbar gemacht (nur im angereicherten nativen Format).
2016
- Februar - Durchsuchbare GIFs, nativ im Post-Composer gehostet.
- Mai - „Doing More with 140“ (dmw140) angekündigt, mit Plänen für neue Methoden zum Umgang mit Replies und angehängten Medien im Rahmen der 140‑Zeichen‑Nachricht eines Post.
- Juni - Native Videounterstützung
- Juni - Zitierte Retweets allgemein verfügbar.
- Juni - Sticker zum Hinzufügen zu Fotos eingeführt.
- September - „Native attachments“ eingeführt, wobei die nachgestellte URL nicht auf die 140 Zeichen angerechnet wird („dmw140, Teil 1“).
2017
- Februar – X Poll-Metadaten in Post-Metadaten enthalten (nur angereichertes natives Format).
- April – „Simplified Replies“ eingeführt; dabei werden erwähnte Antwortkonten nicht auf die 140 Zeichen angerechnet („dmw140, Teil 2“).
- Mai – GDPR-Updates: user.time_zone auf null gesetzt, user.utc_offset auf null gesetzt, user.profile_background_image_url auf Standardwert gesetzt
- Juni – Aktualisierung der quoteTweet-Formatierung
-
- September – Die Möglichkeit, Posts zu bearbeiten, wird für eine kleine Testgruppe ausgerollt. Bearbeitungsbezogene Metadaten werden, sofern relevant, dem Post-Objekt hinzugefügt. Dazu gehören die Objekte edit_history und edit_controls. Diese Metadaten werden nicht für Posts zurückgegeben, die erstellt wurden, bevor die Bearbeitungsfunktionalität hinzugefügt wurde. Es gibt keine zugehörigen Operatoren für diese Metadaten. Weitere Informationen dazu, wie Post-Bearbeitungen funktionieren, finden Sie unter Edit Posts fundamentals
lang:
, der verwendet wird, um Posts in einer bestimmten Sprache zu matchen. X bietet einen Sprachklassifizierungsdienst (unterstützt über 50 Sprachen), und X APIs stellen diese Metadaten im JSON bereit, das für jeden Post generiert wird. Wenn ein Post auf Spanisch verfasst ist, wird das JSON-Attribut „lang“ auf „es“ gesetzt. Wenn Sie also einen Filter mit der Klausel lang:es
erstellen, wird er nur auf als Spanisch klassifizierte Post-Nachrichten matchen.
Die Timeline-Informationen können auch helfen, die empfangenen Post-Daten besser zu interpretieren. Angenommen, Sie untersuchen das Teilen von Inhalten zu den Olympischen Sommerspielen 2008 und 2012. Wenn Sie nur den Operator is:retweet
anwenden, um auf Retweets zu matchen, würden 2008 keine Daten matchen. Für 2012 gäbe es jedoch wahrscheinlich Millionen von Retweets. Daraus könnten Sie fälschlicherweise schließen, dass 2008 Retweets keine gängige Nutzerpraxis waren oder dass einfach niemand zu diesen Olympischen Spielen retweetet hat. Da Retweets 2009 zu einem First-Class-Objekt wurden, müssen Sie eine Regelklausel „RT @“ hinzufügen, um sie 2008 zu identifizieren.
Sowohl Retweets als auch die Sprachklassifizierung von Posts sind Beispiele für Post-Attribute mit einer langen Historie und vielen Produktdetails. Nachfolgend besprechen wir weitere Details zu diesen und anderen Attributklassen, die für das Matchen und das Verständnis von X Data wichtig sind.
Erkennen von False Negatives
has:videos
erstellen, der auf Posts mit nativen Videos matcht, wird diese Klausel keine Posts vor 2015 erfassen.
Das Teilen von Videos war auf X jedoch lange vor 2015 üblich. Zuvor teilten Nutzer Links zu extern gehosteten Videos, doch 2015 hat X neue Funktionen zum direkten „Teilen von Videos“ in die Plattform integriert. Um diese älteren relevanten Posts zu finden, würden Sie eine Regelklausel wie url:"youtube.com"
aufnehmen.
Beachten Sie, dass es bei den Search APIs einige Fälle gibt, in denen metadata „nachträglich befüllt“ wurden, als der Index neu aufgebaut wurde. Ein gutes Beispiel sind cashtag-Operator 2015 eingeführt wurde, wurde der Search-Index neu aufgebaut, und dabei wurde die Symbol-Entität aus allen Post-Texten extrahiert – einschließlich der frühen Zeit 2006, als „nowoon!“.
Identifizieren und Filtern von Post-Attributen, die für Ihren Anwendungsfall wichtig sind
X-Profile
Original-Post und Retweets
is:retweet
ermöglicht es Nutzern, Retweets entweder einzuschließen oder auszuschließen. Wenn data aus der Zeit vor August 2009 abgerufen werden, benötigen Nutzer zwei Strategien für das Abgleichen von Retweets (oder das Nicht-Abgleichen). Vor August 2009 muss die Post-Nachricht selbst mithilfe exakter Phrasenübereinstimmung auf Treffer für das „RT @“-Muster überprüft werden. Für Zeiträume nach August 2009 ist der Operator is:retweet
verfügbar.
Sprachklassifizierungen von Posts
lang:
für das gesamte Post-Archiv verfügbar. Bei Historical PowerTrack sind die Sprachklassifizierungs-Metadaten von X im Archiv ab dem 26. März 2013 verfügbar.
Georeferenzierung von Posts
- Geografische Verweise im Post-Inhalt
- Vom Nutzer mit Geotags versehene Posts
- Vom Nutzer im Account-Profil festgelegter „Home“-Standort