メインコンテンツへスキップ
比較ガイドをご覧ください:

X API: エンタープライズ データディクショナリ

はじめに

Enterprise Post は、X におけるあらゆる機能の基本的な最小構成要素です。Post を返すすべての X API は、その data を JavaScript Object Notation (JSON) でエンコードして提供します。JSON は、名前付き属性と対応する値からなるキーと値の組で構成されます。API から取得される Post オブジェクトには X ユーザーの「ステータス更新」が含まれますが、Retweet、返信、引用 Tweet もすべて Post オブジェクトです。Post が Retweet、返信、引用 Tweet として別の Post に関連している場合、それぞれは Post オブジェクト内で識別されるか、埋め込まれます。ネイティブな X data 形式で最も単純な Post であっても、著者、メンションされたユーザー、タグ付けされた場所情報、ハッシュタグ、キャッシュタグ、メディア、URL リンクなど、Post の他の属性を表す入れ子の JSON オブジェクトを含みます。X のデータを扱ううえで、これは重要な概念です。X API から受け取る Post のデータ形式は、受信する Post の種類、使用している X API、そしてフォーマット設定によって異なります。 Post オブジェクトを返す Enterprise のエンドポイントは、Post の編集履歴を理解するために必要なメタデータを提供するよう更新されています。これらのメタデータの詳細は、“Edit Posts” の基本 ページをご覧ください。
In native X format, the JSON payload will include of ‘root-level’ attributes, and nested JSON objects (which are represented here with the {} notation):
{
	"created_at": "Fri Feb 14 19:00:55 +0000 2020",
	"id_str": "1228393702244134912",
	"text": "開発者はバレンタインカードに何て書いたでしょう?\n  \nwhile(true) {\n    I = Love(You);  \n}",
	"entities": {
		"hashtags": [],
		"symbols": [],
		"user_mentions": [],
		"urls": []
	},
	"user": {
		"entities": {
			"url": {}
		}
	},
	"place": {}
}

利用可能なデータ形式

ご注意:エンタープライズ向けデータ API には、Enriched Native 形式の使用を強く推奨します。
  • Enriched Native 形式には、poll metadata などの 2017 年以降の新しいメタデータに加え、reply_count や quote_count といった追加のメトリクスが含まれます。
  • Activity Streams 形式は、2017 年の文字数アップデート以降、新しいメタデータやエンリッチメントで更新されていません。
エンタープライズ データ API は 2 種類の形式でデータを提供します。標準の v1.1 ネイティブ形式に最も近いエンタープライズ形式は Enriched Native です。従来のエンタープライズ データ形式は Activity Streams で、当時 Gnip により、X および他のソーシャルメディア データプロバイダーにまたがる正規化形式として実装・利用されていました。この形式は現在も利用可能ですが、X は 2017 年以降、Enriched Native 形式のみに新機能や開発投資を行っています。 Enriched Native 形式は、その名のとおり、ネイティブな X オブジェクトに加え、URL アンワインドのメタデータ、プロフィールの位置情報、poll metadata、追加のエンゲージメント指標など、エンタープライズ向けデータ製品で利用可能な各種エンリッチメントを含みます。

データ形式ごとのオブジェクト比較

X をどのように利用する場合でも、これらの JSON でエンコードされた Post オブジェクトと属性が何を表しているのかを理解することは、関心のあるデータシグナルを的確に見つけるうえで不可欠です。そのために、各データ形式ごとに各オブジェクトを解説するページを用意しています。 上記の JSON 階層を踏まえ、各オブジェクトへのリンクは次のとおりです。
ネイティブ拡張Activity Streams
Link Post オブジェクトLink アクティビティオブジェクト
Link ユーザーオブジェクトLink アクターオブジェクト
Link Entities オブジェクトLink X entities オブジェクト
Link Extended entities オブジェクトLink X extended entities オブジェクト
Link Geo オブジェクトLink ロケーションオブジェクト
n/aLink Gnip オブジェクト

解析に関するベストプラクティス

  • X の JSON は UTF-8 でエンコードされています。
  • パーサーは fields の並び順の違いに柔軟に対応できる必要があります。Post の JSON は順序を持たない data のハッシュとして提供されると想定してください。
  • パーサーは「新たな」 fields の追加に対しても問題なく動作するべきです。 
  • すべてのコンテキストで全ての fields が現れるわけではないため、JSON パーサーは「欠落している」 fields に寛容でなければなりません。
  • 一般に、null の値が入った field、空集合、そして field が存在しない状態は同一視して差し支えありません。

エンタープライズ向けネイティブ強化dataオブジェクト

ネイティブ拡張 Tweet オブジェクト

ネイティブ拡張データ形式が X API v2 の形式にどのようにマッピングされるか、詳しく知りたい方はこちら。 比較ガイドをご確認ください: ネイティブ拡張と X API v2 の比較

Post オブジェクト

エンタープライズ向けデータ製品を利用すると、データディクショナリの多くがPostデータのネイティブ形式と共通しており、さらに拡張メタデータが追加されていることに気づくはずです。ネイティブ拡張形式の基本レベルでは、X API v1.1 のデータ形式と同じオブジェクト名が多く使われます。Postオブジェクトには、idcreated_attext といった基本的な属性を含む「ルートレベル」の属性が多数あります。Postオブジェクトには、userentitiesextended_entities といった入れ子のオブジェクトも含まれます。Postオブジェクトには、retweeted_status、quoted_status、extended_tweet などの入れ子の Post オブジェクトも含まれます。さらに、ネイティブ拡張形式には matching_rules オブジェクトも含まれます。
X データ辞書
以下では、これらの「ルートレベル」属性のデータ辞書と、子オブジェクトのデータ辞書へのリンクを掲載しています。
属性タイプ概要
作成日_でStringこのPostが作成されたUTC時刻。例:

“作成_にて”:“水 10月 10 20:19:24 +0000 2018”
idInt64このPostの一意識別子の整数表現です。この数値は53ビットを超えるため、一部のプログラミング言語では解釈に問題が生じたり、暗黙の不具合が発生する場合があります。この識別子の保存には、符号付き64ビット整数を使用するのが安全です。Use**id_str**安全のために識別子を取得してください。参照:X のID詳細については、次の例をご覧ください。

“id”:1050118621198921728
id_strStringこのPostの一意の識別子を表す文字列。実装では、巨大な整数ではなく、この**idの値を使用してください。id**. 例:

“id_str”:“1050118621198921728”
テキストStringステータス更新の実際の UTF-8 文字列。参照X-text現在有効と見なされる文字の詳細については、次をご参照ください。例:

“テキスト”:“表現の幅を広げるため、性別や肌のトーンのバリエーションを含むすべての絵文字を同一にカウントすることにします…https://t.co/MkGjXf9aXm
sourceStringPost を投稿する際に使用されたユーティリティ。HTML 形式の文字列です。X のウェブサイトからの Post には web の値が設定されます。web

例:

“source”:“X Webクライアント”
truncatedブール型値が〜であるかどうかを示します**textパラメータが切り詰められました。たとえば、リツイートによって元のPostのテキスト長制限(140文字)を超えた場合などです。切り詰められたテキストは、次のように省略記号(…)で終わります...X では現在、長い Post は切り詰めずに拒否されるため、ほとんどの Post でこれはfalse. なお、ネイティブリツイートではトップレベルの text プロパティが短縮される場合がありますが、元のテキストは retweeted_status オブジェクト内にあり、truncated** パラメータは元のステータスの値(多くの場合は false)に設定されます。textproperty が短縮されると、元のテキストは次の場所で利用できますretweeted_statusオブジェクトとtruncated は、text パラメータの値が切り詰められたかどうかを示します。たとえば、リツイートが元の投稿のテキスト長制限である 140 文字を超過した場合などです。切り詰められたテキストは、... のように省略記号で終わります。X は現在、長すぎる投稿を切り詰める代わりに拒否するため、ほとんどの投稿ではこの値が false に設定されます。ネイティブのリツイートの場合、最上位の text プロパティが短縮されることがありますが、元のテキストは retweeted_status オブジェクト内で利用可能であり、truncated パラメータは元のステータスの値に設定されます(ほとんどの場合、false です)。例:

“truncated”: trueパラメータは元のステータスの値(多くの場合、)に設定されます
false
)。例:

“切り捨て”:true
内で_返信_宛て_ステータス_idInt64*null 許容。*対象のPostが返信である場合、このフィールドには元のPostのIDを表す整数値が格納されます’のID。例:

“内で_返信_宛て_ステータス_id”:1051222721923756032
内で_返信_to_ステータス_id_strString*null 許容。*対象の Post が返信である場合、このフィールドには元の Post の文字列表現が含まれます’のID。例:

“内_返信_宛て_ステータス_id_str”:“1051222721923756032”
内で_返信_宛て_ユーザー_idInt64*null 許容。*表現対象のPostが返信である場合、このフィールドには元のPostの整数表現が含まれます’の投稿者ID。これは、Post内で直接言及されているユーザーと必ずしも一致するとは限りません。例:

“内で_返信_宛て_ユーザー_id”:6253282
内で_返信_宛て_ユーザー_id_strString*null 許容。*表現されているPostが返信である場合、このフィールドには元のPostの文字列表現が含まれます’の作成者ID。これは、Post内で直接言及されているユーザーとは限らない場合があります。例:

“内で_返信_宛先_ユーザー_id_str”:“6253282”
内で_返信_to_画面_名前String*null 可能。*表現されているPostが返信である場合、このフィールドには元のPostのスクリーンネームが含まれます’の著者。例:

“内で_返信_宛て_画面_名称”:“xapi”
ユーザーUserオブジェクトこのPostを投稿したユーザー。属性の一覧は「User data dictionary」を参照してください。

選択した属性をハイライトする例:

{ “ユーザー”:<br/> “id”: 6253282,
“id_str”:“6253282”、
“名称”:“X API”、
“画面_名前”:“API”、
“場所”:“サンフランシスコ(米カリフォルニア州)”,
“URL”:“https://developer.x.com”,
“説明”:“The Real X API. APIの変更、サービスの障害、そしてDeveloper Platformに関するTweet。Don’答えが見つからない?それは’私のウェブサイト上にあります。”,
“認証済”: true,
“フォロワー_カウント”: 6129794,
“フォロー中_件数”: 12,
“上場_カウント”: 12899,
“お気に入り_count”: 31,
“ステータス_件数”: 3658,
“作成_で”:“2007年5月23日(水) 06:01:13 +0000”、
“UTC_オフセット”: null,
“時間_ゾーン”: null,
“地理_有効化”: false,
“言語”:“ja”、
“コントリビューター_有効化”: false,
“である_翻訳ツール”: false,
“プロフィール_背景_色”:“null”、
“プロフィール_背景_イメージ_URL”:“null”、
“プロフィール_概要_画像_URL_https”:“null”,
“プロフィール_背景_タイル”: null,
“プロフィール_リンク_カラー”:“null”,
“プロフィール_サイドバー_ボーダー_カラー”:“null”、
“プロフィール_サイドバー_入力_色”:“null”、
“プロフィール_テキスト_カラー”:“null”、
“プロフィール_使用_背景_画像”: null,
“プロフィール_画像_URL”:“null”,
“プロフィール_画像_URL_https”:“https://pbs.twimg.com/profile_images/942858479592554497/BbazLO9L_normal.jpg”、
“プロフィール_バナー_URL”:“https://pbs.twimg.com/profile_banners/6253282/1497491515”,
“既定_プロフィール”: false,
“既定_プロフィール_画像”: false,
“フォロー”: null,
“フォローする_リクエスト_送信済み”: null,
“通知”: null
}
}
座標座標NULL 可能ユーザーまたはクライアントアプリによって報告された、このPostの地理的位置を表します。内側のcoordinates配列はGeoJSON(経度が先、次に緯度)。例:

“座標”:
<br/> “座標”:
[
-75.14310264,
40.05701649
],
“型”:“ポイント”
}
プレースPlaces(場所)*Nullable(null 許容)*存在する場合、Post が Place と関連付けられている(必ずしもそこが発信元であるとは限らない)ことを示します。例:

“場所”:
<br/> “属性”:
“バウンディング_ボックス”:
<br/> “座標”:
[[
[-77.119759,38.791645],
[-76.909393,38.791645],
[-76.909393,38.995548],
[-77.119759,38.995548]
]],
“型”:“Polygon”
}、
“国/地域”:“米国”、
“国/地域_コード”:“米国”、
“フル_名前”:“ワシントンD.C.”、
“id”:“01fbe706f872cb32”,
“名前”:“ワシントン州”,
“場所_型”:“市区町村”、
“URL”:“http://api.x.com/1/geo/id/0172cb32.json
}
引用_ステータス_idInt64このフィールドは、Post が引用 Tweet の場合にのみ表示されます。引用された Tweet の Post の ID(整数値)が含まれます。例:

“引用_ステータス_id”:1050119905717055488
引用済み_ステータス_id_文字列文字列このフィールドは、Post が引用Tweetである場合にのみ表示されます。これは、引用された Tweet の Post の id を文字列として表したものです。例:

“引用済み_ステータス_id_str”:“1050119905717055488”
です_引用_ステータスブール型これが引用Tweetかどうかを示します。例:

“である_引用_ステータス”:false
引用済み_ステータスPostこのフィールドは、Post が引用 Tweet の場合にのみ表示されます。この属性には、引用対象となった元の Post の Post オブジェクトが含まれます。
リポスト済み_ステータスポストユーザーは、他のユーザーが作成したPostの配信をRetweetによって拡大できます。Retweetは、retweeted_status 属性が存在することで通常のPostと区別できます。この属性には、リツイートされた「元の」Postの表現が含まれます。なお、リツイートのリツイートでは、中間のリツイートの表現は表示されず、元のPostのみが表示されます。(ユーザーは、自分が作成したリツイートを削除することで、リツイートを取り消すこともできます。)**retweeted_status**属性。この属性には、の表現が含まれています原文リツイートされたPost。リツイートのリツイートでは、途中のリツイートは表示されず、元のPostのみが表示されます。(ユーザーは、自分が行ったリツイートを削除することで、そのリツイートを取り消すこともできます。)
引用文_件数整数*null 許容。*XユーザーによってこのPostが引用されたおおよその回数を示します。例:

“引用符_件数”:33

Note: このオブジェクトは、Premium および エンタープライズ の各ティア製品でのみ利用できます。
返信_カウントInt型このPostへの返信数。例:

“返信_カウント”:30

Note: このオブジェクトは Premium および エンタープライズのティア製品でのみ利用可能です。
リツイート_カウントIntこのPostがリポストされた回数。例:

“リツイート_カウント”:160
ブックマーク_件数整数*null 許容。*XユーザーによってこのPostに「いいね」されたおおよその回数を示します。例:

“「いいね」_件数”:295
エンティティーエンティティPost の本文から解析して抽出されたエンティティ。あわせて参照X オブジェクトのエンティティ. 例:

“エンティティ”:
<br/> “ハッシュタグ”:[],
“URLs”:[],
“ユーザー_メンション”:[],
“メディア”:[],
“シンボル”:[]
“投票”:[]
}
拡張版_エンティティ拡張エンティティPost にネイティブ写真が1〜4枚、または動画が1本、またはアニメーションGIFが1つ含まれている場合に、配列が入ります’メディア’メタデータ。これは引用ツイートでも利用できます。あわせて参照してくださいX オブジェクトのエンティティ. 例:

“エンティティ”:
<br/> “メディア”:[]
}
いいね済みブール型*null 許容。*このPostが認証ユーザーによって「いいね」されているかどうかを示します。例:

“お気に入り登録済み”:true
再投稿済みブーリアン認証済みユーザーがこのPostをRetweetしたかどうかを示します。例:

“リポスト済み”:false
場合によっては_センシティブブール*null 許容。*このフィールドは、コンテンツがセンシティブと認識される可能性があることを示します。Post の作成者は自分のアカウント設定で「投稿するメディアを、センシティブな内容を含む可能性があるものとしてマークする」を選択でき、以後に作成される各 Post にはこのフラグが設定されます。

これが社内の X サポート担当者によって判断され、ラベル付けされる場合もあります。

“おそらく_機微情報”:false
フィルタ_レベル文字列フィルターの最大値を示す_このPostを引き続きストリーミングできる、使用可能な level パラメータの最大値を示します。したがって、値が medium の場合は、nonelowmedium のいずれのストリームでも配信されます。mediumで配信されますなしlow、および**medium**ストリーム

例:

“フィルタ_レベル”:“低い”
言語Stringnull 許容。存在する場合は、〜を示しますBCP 47Post テキストの機械的に検出された言語に対応する言語識別子、またはund**言語を検出できなかった場合。

例:

“言語”:“英語(英語)“
編集_履歴オブジェクトPost のすべてのバージョンを示す一意の識別子。編集がない Post の場合は ID が 1 つ存在します。編集履歴がある Post の場合は複数の ID があり、編集順を反映して昇順に並んでおり、配列の最後の要素が最新バージョンです。

PostのIDを使用すると、過去のバージョンを復元して表示できます。

例:

編集_履歴”:<br/> “初期値_Tweet_id”:“1283764123”
“編集_Tweet_ids”: [“1283764123”、“1394263866”]
}
編集_コントロールオブジェクト存在する場合、Post が引き続き編集可能な残り時間と残りの編集回数を示します。Post は作成後最初の30分間のみ編集でき、最大5回まで編集できます。

Post の id を使用して、過去のバージョンの Post を復元して表示できます。

例:

“編集_コントロール”:<br/> “編集可_〜まで_ms”: 123
“編集内容_残り”: 3
}
編集可ブール値存在する場合、公開時点でPostが編集対象だったかどうかを示します。このフィールドは動的ではなく、編集可能時間の制限や編集回数の上限に達しても、TrueからFalseに変更されることはありません。以下のいずれかに該当するPostでは、このフィールドはfalseになります:

* プロモーション対象のPostである
* 投票(poll)を含むPostである
* 自分以外のスレッドへの返信であるPost
* リツイートであるPost(引用リツイートは編集対象)
* nullcastのPostである
* コミュニティのPostである
* Super FollowのPostである
* 共同作成のPostである’Post が編集可能な時間制限または最大編集回数に達すると、t は True から False にトグルします。次の Post の機能により、このフィールドは false になります:

- Post がプロモーションされています
- Post に投票が含まれる
- Post は自己スレッド以外への返信である
- Post はリツイートです(Quote Tweets は編集可能である点に注意)
- Post は nullcast されています
- コミュニティのPost
- Superfollow Post(スーパーフォローのPost)
- 共同作成のPost
マッチング_ルールルールオブジェクト配列含まれるfilteredX Search や PowerTrack などの製品。提供するのはidおよびタグ一致したPostに関連付けられています。マッチングルールの詳細こちら. PowerTrack では、1 件の Post に複数のルールが一致する場合があります。

例:

“照合_規則”:”[<br/> “タグ”:“xapi の絵文字”,
“id”: 1050118621198921728,
“id_str”:“1050118621198921728”
}]“
追加の Post 属性
Posts を提供する X API(例: GET statuses/lookup エンドポイント)には、以下の追加の Post 属性が含まれる場合があります:
AttributeTypeDescription
current_user_retweetObject視点依存。include_my_retweet パラメータをサポートするメソッドで、true に設定された場合にのみ返されます。ユーザー自身による当該 Post のリツイート(存在する場合)の Post ID を示します。例:

“current_user_retweet”: <br/> “id”: 6253282,
“id_str”: “6253282”
}
scopesObject当該 Post の意図された文脈的配信を示すキーと値の組の集合。現在は X のプロモーションプロダクトで使用されています。例:

“scopes”:{“followers”:false}
withheld_copyrightBooleanこのフィールドが存在し、かつ “true” の場合、このコンテンツが DMCA 申立て により差し止められていることを示します。例:

“withheld_copyright”: true
withheld_in_countriesArray of Stringこのフィールドが存在する場合、このコンテンツが差し止められている国の大文字の 2 文字の国コード の一覧を示します。X はこのフィールドで、以下の国以外の値もサポートします:

“XX” - すべての国でコンテンツが差し止められています/“XY” - DMCA リクエストによりコンテンツが差し止められています。

例:

“withheld_in_countries”: [“GR”, “HK”, “MY”]
withheld_scopeStringこのフィールドが存在する場合、差し止め対象が “status” か “user” かを示します。

例:

“withheld_scope”: “status”
非推奨の属性
フィールド説明
geoObject非推奨。 null 可能。 代わりに coordinates フィールドを使用してください。この非推奨属性では座標が [lat, long] 形式で表されますが、他のすべての Post の地理情報は [long, lat] 形式で表されます。

入れ子の Post オブジェクト

いくつかのケースでは、Post オブジェクトに他の入れ子のオブジェクトが含まれます。入れ子オブジェクトを扱う場合、その JSON ペイロードには複数の Post オブジェクトが含まれ、各 Post オブジェクトがさらに独自のオブジェクトを持つことがあります。ルートレベルのオブジェクトには、Retweet か Quote Tweet かといった実行されたアクションの種類に関する情報が含まれ、共有されている「original」Post を表すオブジェクトが含まれる場合もあります。Extended Posts には、2017 年の更新時に破壊的変更を避けるために導入された、140 文字を超える内容を保持する入れ子の extended オブジェクトが含まれます。各入れ子オブジェクトのディクショナリについては以下で説明します。 Retweets Retweets には必ず 2 つの Post オブジェクトが含まれます。Retweeted されている「original」Post は “retweeted_status” オブジェクトで提供されます。ルートレベルのオブジェクトは Retweet 自体を表し、Retweet アクションを行ったアカウントの User オブジェクトや Retweet の時刻が含まれます。Retweet はフォロワーと Post を共有するアクションであり、新しいコンテンツを追加することはできません。また、Retweet に(新たな)位置情報を付与することもできません。「original」Post にジオタグが付いている場合でも、Retweet の “geo” および “place” オブジェクトは常に null です。 Extended Posts の導入以前から、ルートレベルの “entities” オブジェクトは、Retweeted される Post メッセージに “RT @username ” という文字列が付加されるため、場合によっては切り詰められて不完全になることがありました。さらに、Retweet が Retweet された場合でも、“retweet_status” は元の Post を指し続け、中間の Retweet は含まれない点に注意してください。x.com で Retweet を「表示」した場合も同様の挙動になります。Retweet の「action」に割り当てられた一意の Post ID をコピーすると、元の Post が表示されます。 以下は Retweet の構造例です。繰り返しになりますが、Retweets を解析する際は、完全な(オリジナルの)Post メッセージとエンティティのメタデータを取得するために “retweeted_status” オブジェクトを必ず解析してください。
{
	"tweet": {
		"text": "RT @author original message",
		"user": {
			"screen_name": "Retweeter"
		},
		"retweeted_status": {
			"text": "original message",
			"user": {
				"screen_name": "OriginalTweeter"
			},
			"place": {},
			"entities": {},
			"extended_entities": {}
		}
	},
	"entities": {},
	"extended_entities": {}
}
引用ツイート
引用ツイートは Retweet によく似ていますが、新しい Post メッセージが含まれる点が異なります。これらの新しいメッセージには、独自のハッシュタグ、リンク、その他の「entities」メタデータを含めることができます。引用ツイートには、投稿者が共有した位置情報や、GIF・動画・写真などのメディアを含めることもできます。 引用ツイートには少なくとも 2 つの Post オブジェクトが含まれ、場合によっては 3 つ含まれることがあります。引用される Post(それ自体が引用ツイートである場合もあります)は「quoted_status」オブジェクトとして提供されます。ルートレベルのオブジェクトは、共有アクションを行うアカウントの User オブジェクトと引用ツイートの時刻を含め、引用ツイート自体を包含します。 引用ツイートには現在、写真、GIF、または動画を「Post」ユーザーインターフェースから追加できます。外部でホストされているメディアへのリンクが引用ツイートのメッセージに含まれている場合、ルートレベルの「entities.urls」がそれらを記述します。引用ツイートに添付されたメディアは、ルートレベルの「extended_entities」メタデータに表示されます。 引用ツイートの提供当初は、短縮リンク(t.co URL)が「original」Post メッセージに付加され、ルートレベルの「text」フィールドに含まれていました。さらに、その t.co URL のメタデータはルートレベルの「entities.urls」配列に含まれていました。2018 年 5 月、仕様を変更し、引用された Tweet への短縮 t.co URL はルートレベルの「text」フィールドに含めないことにしました。次に、引用された Tweet のメタデータも「entities.urls」メタデータには含めないことにしました。代わりに、引用された Tweet の URL メタデータは、ルートレベル(トップレベル)に新設された「quoted_status_permalink」オブジェクトに配置され、「quoted_status」オブジェクトと同じ階層になります。 以下は、この元のフォーマットを使用した引用ツイートの構造例です。
{
	"created_at": "Tue Feb 14 19:30:06 +0000 2017",
	"id_str": "831586333415976960",
	"text": "これは引用する価値あり! https:\/\/t.co\/J1LKrbHpWR",
	"user": {
		"screen_name": "happycamper"
	},
	"quoted_status_id_str": "831569219296882688",
	"quoted_status": {
		"created_at": "Tue Feb 14 18:22:06 +0000 2017",
		"id_str": "831569219296882688",
		"text": "ツイートシステムのテストです \ud83d\ude0e #supportdocs @twitterboulder の更新用: https:\/\/t.co\/NRq9UrSzm0",
		"user": {
			"screen_name": "furiouscamper",
		},
		"place": {
			"id": "9a974dfc8efb32a0",
		},
		"entities": {
			"hashtags": [{
				"text": "supportdocs",
			}],
			"urls": [{
			}],
			"user_mentions": [{	}],
			"symbols": []
		},
	},
	"is_quote_status": true,
	"entities": {},
	"matching_rules": [{}]
}
{
	"created_at": "Fri Jan 04 18:47:16 +0000 2019",
	"id_str": "1081260794069671936",
	"text": "Quote test https://t.co/CE4m1qs3NJ",
	"user": {
		"screen_name": "furiouscamper"
	},
	"place": null,
	"quoted_status_id_str": "1079578364904648705",
	"quoted_status": {
		"created_at": "Mon Dec 31 03:21:54 +0000 2018",
		"id_str": "1079578364904648705",
		"text": "AHHHHH",
		"user": {
			"screen_name": "infinite_scream"
		},
		"place": null,
		"is_quote_status": false,
		"quote_count": 1,
		"reply_count": 0,
		"retweet_count": 3,
		"favorite_count": 6,
		"entities": {
			"hashtags": [],
			"urls": [],
			"user_mentions": [],
			"symbols": []
		}
	},
	"quoted_status_permalink": {
		"url": "https://t.co/CE4m1qs3NJ",
		"expanded": "https://x.com/infinite_scream/status/1079578364904648705",
		"display": "x.com/infinite_screa…"
	},
	"is_quote_status": true,
	"quote_count": 0,
	"reply_count": 0,
	"retweet_count": 0,
	"favorite_count": 1,
	"entities": {}
}
拡張ポスト
「拡張ポスト」を記述する JSON は、2017年11月に 280 文字の Post が導入された際に追加されました。Post の JSON は、これらのより長いメッセージを扱えるよう拡張されましたが、X の基本オブジェクトを解析している数千のアプリが動作し続けるよう互換性が保たれています。完全な後方互換性のため、元の 140 文字の ‘text’ フィールドと、そこから解析されるエンティティオブジェクトは保持されました。140 文字を超える Post の場合、ルートレベルの ‘text’ フィールドは切り詰められ、不完全になります。ルートレベルの ‘entities’ オブジェクトには、‘text’ メッセージから解析されるハッシュタグやリンクなどの主要なメタデータ配列が含まれるため、これらのコレクションも不完全になります。例えば、Post メッセージが 200 文字で末尾にハッシュタグがある場合、従来のルートレベルの ‘entities.hashtags’ 配列にはそれが含まれません。 より長い Post メッセージと完全なエンティティメタデータを保持するために、新しい ‘extended_tweet’ フィールドが導入されました。“extended_tweet” オブジェクトは、140 文字を超える場合に、切り詰めのない完全な Post メッセージを格納する “full_text” フィールドを提供します。“extended_tweet” オブジェクトには、ハッシュタグ、リンク、メンションなどの完全な配列を持つ “entities” オブジェクトも含まれます。 拡張ポストであるかどうかは、ルートレベルの “truncated” ブール値で判別します。true(“truncated”: true)の場合は、ルートレベルのフィールドではなく “extended_tweet” のフィールドを解析してください。 以下の JSON 例では、ルートレベルの “text” フィールドが切り詰められており、Post メッセージに 3 つのハッシュタグが含まれているにもかかわらず、ルートレベルの “entities.hashtags” 配列は空になっています。これは拡張ポストのため、“truncated” フィールドは true に設定され、“extended_tweet” オブジェクトが完全な “full_text” と “entities” の Post メタデータを提供します。
{
	"created_at": "Thu May 10 17:41:57 +0000 2018",
	"id_str": "994633657141813248",
	"text": "140文字を超える拡張Tweetのもう一つの例。ドキュメントの例として生成され、[\"tru… https://t.co/U7Se4NM7Eu",
	"display_text_range": [0, 140],
	"truncated": true,
	"user": {
		"id_str": "944480690",
		"screen_name": "FloodSocial"
	},
	"extended_tweet": {
		"full_text": "140文字を超える拡張Tweetのもう一つの例。ドキュメントの例として生成され、[\"truncated\": true]と、完全なテキストと\"entities\"を含む\"extended_tweet\"オブジェクトの存在を示しています #documentation #parsingJSON #GeoTagged https://t.co/e9yhQTJSIA",
		"display_text_range": [0, 249],
		"entities": {
			"hashtags": [{
				"text": "documentation",
				"indices": [211, 225]
			}, {
				"text": "parsingJSON",
				"indices": [226, 238]
			}, {
				"text": "GeoTagged",
				"indices": [239, 249]
			}]
		}

	},
	"entities": {
		"hashtags": []
	}
}

ネイティブ拡張ユーザーオブジェクト

User オブジェクトには、参照されている X ユーザーについて記述する X のユーザーアカウントメタデータが含まれます。 

ユーザーデータ辞書

属性タイプ概要
idInt64このユーザーの一意の識別子の整数表現です。53ビットを超える数値であり、一部のプログラミング言語では解釈に問題が生じたり、サイレントな不具合が発生する可能性があります。この識別子を保存するには、符号付き64ビット整数を使用するのが安全です。Useid_str安全のため、識別子を取得してください。参照:X ID詳細については、を参照してください。例:

“id”: 6253282
id_strStringこのUserの一意識別子の文字列表現です。実装では、id にある、場合によっては扱いづらい大きな整数ではなく、こちらを使用してください。id。例:

“id_str”:“6253282”
氏名Stringユーザーが定義した名前。必ずしも個人名とは限りません。通常は50文字上限ですが、変更される場合があります。例:

“名前”:“API”
画面_名前String(文字列)このユーザーが自分を示すために使用するスクリーンネーム、ハンドル、または別名。screen_名前は一意ですが、変更される可能性があります。使用id_str可能な限りユーザー識別子として使用します。通常は最大で15文字ですが、過去の一部のアカウントにはそれより長い名前のものもあります。例:

“画面_名前”:“API”
場所文字列Nullable. このアカウントのプロフィールにおける、ユーザーが任意に入力した位置情報。必ずしも実在の場所を指すとは限らず、機械的に解析できないことがあります。このフィールドは検索サービスによって曖昧に解釈される場合があります。例:

“場所”:“サンフランシスコ(カリフォルニア州)“
派生エンリッチメントオブジェクトの配列エンタープライズ API 限定 ユーザー向けに導出された Enrichment メタデータのコレクション。提供するのはプロフィール地理情報エンリッチメント用メタデータ。JSONのデータ辞書を含む詳細は、参照ドキュメントをご覧ください。例:

“導出”:“ロケーション”: [“国”:“米国”,“国_コード”:“米国”、“ローカリティ”:“デンバー”]
URLStringnull 許容. ユーザーがプロフィールに関連付けて指定したURL。例:

“URL”:“https://developer.x.com
説明Stringnull 許容. ユーザーが自身のアカウントを説明するために定義した UTF-8 文字列。例:

“説明”:“本物のX API”
保護ブールtrue の場合、このユーザーが自分のPostを保護する設定を選択していることを示します。参照公開Postと非公開Postについて. 例:

“保護”: true
認証済みブールtrue の場合、ユーザーのアカウントが認証済みであることを示します。参照認証済みアカウント. 例:

“認証済み”: false
フォロワー_カウントIntこのアカウントの現在のフォロワー数です。特定の状況下では、一時的にこのフィールドが「0」と表示される場合があります。例:

“フォロワー_件数”: 21
友だち_カウントIntこのアカウントがフォローしているユーザー数(いわゆる「フォロー中」)。特定の状況下では、このフィールドが一時的に「0」と表示されることがあります。例:

“友達_件数”: 32
上場_カウントIntこのユーザーがメンバーである公開リストの数。例:

“上場_件数”: 9274
お気に入り_カウントInt型このユーザーがアカウントの存続期間中に「いいね」したPostの数。歴史的な理由により、フィールド名は英国式の綴りを使用しています。例:

“お気に入り_件数”: 13
ステータス_件数整数型ユーザーが発行したPost(リツイートを含む)の数。例:

“ステータス_カウント”: 42
作成済み_でStringX でユーザーアカウントが作成された UTC の日時。例:

“作成済み_で”:“月 11 29 21:18:15 +0000 2010”
プロフィール_バナー_URLStringユーザーがアップロードしたプロフィールバナーの標準的なウェブ表示を指す、HTTPSベースのURLです。URLの末尾にパス要素を追加することで、特定のディスプレイ向けに最適化されたさまざまな画像サイズを取得できます。サイズのバリエーションについては、を参照してください。ユーザーのプロフィール画像とバナー.

例:

“プロフィール_バナー_URL”:“https://si0.twimg.com/profile_banners/819797/1348102824
プロフィール_画像_URL_httpsString(文字列)ユーザーのプロフィール画像を指す HTTPS ベースのURL。例:

“プロフィール_イメージ_URL_https”:
https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
既定_プロフィールブールtrue の場合、ユーザーがプロフィールのテーマや背景を変更していないことを示します。例:

“既定_プロフィール”: false
デフォルト_プロフィール_イメージブールtrue の場合、ユーザーが独自のプロフィール画像をアップロードしておらず、代わりにデフォルトの画像が使用されていることを示します。例:

“既定_プロフィール_画像”: false

サポート終了(非推奨)の属性

フィールド説明
utc_offsetnull値は null に設定されます。引き続き GET account/settings で利用可能です
time_zonenull値は null に設定されます。引き続き GET account/settings の tzinfo_name として利用可能です
langnull値は null に設定されます。引き続き GET account/settings の language として利用可能です
geo_enablednull値は null に設定されます。引き続き GET account/settings で利用可能です。このフィールドは、POST statuses/update を使用して地理情報を添付するには、現在のユーザーで true である必要があります
followingnull値は null に設定されます。引き続き GET friendships/lookup で利用可能です
follow_request_sentnull値は null に設定されます。引き続き GET friendships/lookup で利用可能です
has_extended_profilenull非推奨。値は null に設定されます。
notificationsnull非推奨。値は null に設定されます。
profile_locationnull非推奨。値は null に設定されます。
contributors_enablednull非推奨。値は null に設定されます。
profile_image_urlnull非推奨。値は null に設定されます。注: プロフィール画像は profile_image_url_https フィールドでのみ利用可能です。
profile_background_colornull非推奨。値は null に設定されます。
profile_background_image_urlnull非推奨。値は null に設定されます。
profile_background_image_url_httpsnull非推奨。値は null に設定されます。
profile_background_tilenull非推奨。値は null に設定されます。
profile_link_colornull非推奨。値は null に設定されます。
profile_sidebar_border_colornull非推奨。値は null に設定されます。
profile_sidebar_fill_colornull非推奨。値は null に設定されます。
profile_text_colornull非推奨。値は null に設定されます。
profile_use_background_imagenull非推奨。値は null に設定されます。
is_translatornull非推奨。値は null に設定されます。
is_translation_enablednull非推奨。値は null に設定されます。
translator_typenull非推奨。値は null に設定されます。

ユーザーオブジェクトの例:

"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "#XDevelopersチームの公式アカウントです。#XAPIに関する最新情報、ニュース、イベント情報をお届けします。",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	}

ネイティブ拡張ジオオブジェクト

Post は位置情報に関連付けることができ、「ジオタグ付き」の Post を生成します。Post の位置情報は、X のユーザーインターフェースから、または API を使って Post を投稿する際に割り当てられます。Post の位置情報は、正確な「点」位置、または会場から地域全体までの広い範囲を表す「バウンディングボックス」を持つ X Place のいずれかです。 Post に関連付けられた位置情報を記述するために使用される「ルートレベル」の JSON オブジェクトは 3 つあります:placegeo、および coordinates です。 さらに、ネイティブ拡張形式には、ユーザーオブジェクト内に profile geo enrichmentderived location が含まれます。 place オブジェクトは、Post が場所でジオタグ付けされている場合は常に存在します。Places は、対応する地理座標を持つ固有名の場所です。ユーザーが自分の Post に場所を割り当てると、候補となる X Place の一覧が提示されます。API で投稿する場合は、投稿時に place_id を指定することで X Place を添付できます。Place に関連付けられた Post は、必ずしもその場所から発信されたものとは限らず、その場所に関するものである可能性もあります。 geo および coordinates オブジェクトは、Post に「正確な位置」が割り当てられている場合にのみ(null ではなく)存在します。正確な位置が指定されている場合、coordinates オブジェクトは地理座標を表す [long, lat] 配列を提供し、その位置に対応する X Place が割り当てられます。

Place データ辞書

FieldTypeDescription
idStringこの場所を表すID。整数ではなく文字列で表現される点に注意。例:

“id”:“01a9a39529b27f36”
urlStringこの場所に関する追加のプレースメタデータの参照先を示すURL。例:

“url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json
place_typeStringこのプレースの種類。例:

“place_type”:“city”
nameStringこのプレース名の短い人間可読の表現。例:

“name”:“Manhattan”
full_nameStringこのプレース名の完全な人間可読の表現。例:

“full_name”:“Manhattan, NY”
country_codeStringこのプレースを含む国を表す短縮国コード。例:

“country_code”:“US”
countryStringこのプレースを含む国名。例:

“country”:“United States”
bounding_boxObjectこのプレースを囲む座標のバウンディングボックス。例:


“bounding_box”:
“coordinates”: [
[
[
-74.026675,
40.683935
],
[
-74.026675,
40.877483
],
[
-73.910408,
40.877483
],
[
-73.910408,
40.3935
]
]
],
“type”: “Polygon”

attributesObjectPowerTrack、30日間およびフルアーカイブ検索API、Volume Streamsを使用している場合、このハッシュはnull。例:

“attributes”:

バウンディングボックス

フィールド説明
coordinatesArray of Array of Array of Floatこのバウンディングボックスが関連する Place エンティティを内包するボックスを定義する、経度・緯度の一連の点。各点は [longitude, latitude] 形式の配列。点はバウンディングボックスごとに配列にまとめられる。バウンディングボックスの配列はポリゴン表記との互換性のため、さらにもう一重の配列でラップされる。例:


“coordinates”: [
[
[
-74.026675,
40.683935
],
[
-74.026675,
40.877483
],
[
-73.910408,
40.877483
],
[
-73.910408,
40.3935
]
]
]
typeStringcoordinates プロパティにエンコードされているデータの種類。バウンディングボックスの場合は “Polygon”、正確な座標を持つ Post の場合は “Point”。例:

“type”:“Polygon”

Geo オブジェクト データ辞書

FieldTypeDescription
coordinatesCollection of FloatPost の位置の経度と緯度。形式は [latitude, longitude] のコレクション。例:

**  “geo”:

“type”:** “Point”,

**    “coordinates”: [

54.27784
,

-0.41068

    ]

  **
typeStringcoordinates プロパティにエンコードされているデータの種類。Post の座標 fields では “Point” になります。例:

“type”: “Point”
Coordinates オブジェクト データ辞書
FieldTypeDescription
coordinatesCollection of FloatPost の位置の経度と緯度。形式は [longitude, latitude] のコレクション。例:

**  “coordinates”:

“type”:** “Point”,

**    “coordinates”: [

-0.41068
,

54.27784

    ]

  **
typeStringcoordinates プロパティにエンコードされているデータの種類。Post の座標 fields では “Point” になります。例:

“type”: “Point”

派生ロケーション

フィールド説明
derivedlocations objectプロフィールのジオ拡張によって推定されたロケーション

“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”

**         

       

      ]

    **

例:

{
  "geo": null,
  "coordinates": null,
  "place": {
    "id": "07d9db48bc083000",
    "url": "https://api.x.com/1.1/geo/id/07d9db48bc083000.json",
    "place_type": "poi",
    "name": "McIntosh Lake",
    "full_name": "McIntosh Lake",
    "country_code": "US",
    "country": "United States",
    "bounding_box": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -105.14544,
            40.192138
          ],
          [
            -105.14544,
            40.192138
          ],
          [
            -105.14544,
            40.192138
          ],
          [
            -105.14544,
            40.192138
          ]
        ]
      ]
    },
    "attributes": {

    }
  }
}
{
  "geo": {
    "type": "Point",
    "coordinates": [
      40.74118764,
      -73.9998279
    ]
  },
  "coordinates": {
    "type": "Point",
    "coordinates": [
      -73.9998279,
      40.74118764
    ]
  },
  "place": {
    "id": "01a9a39529b27f36",
    "url": "https://api.x.com/1.1/geo/id/01a9a39529b27f36.json",
    "place_type": "city",
    "name": "Manhattan",
    "full_name": "Manhattan, NY",
    "country_code": "US",
    "country": "United States",
    "bounding_box": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -74.026675,
            40.683935
          ],
          [
            -74.026675,
            40.877483
          ],
          [
            -73.910408,
            40.877483
          ],
          [
            -73.910408,
            40.683935
          ]
        ]
      ]
    },
    "attributes": {

    }
  }
}
データ・ディクショナリ:エンタープライズ

X エンティティ  

このページ内の項目へ移動 概要 entities オブジェクト   - hashtag オブジェクト   - media オブジェクト   - media size オブジェクト   - URL オブジェクト   - ユーザー メンション オブジェクト   - symbol オブジェクト   - poll オブジェクト リツイートと引用ツイートの詳細 ユーザーオブジェクト内の entities ダイレクトメッセージ内の entities 次のステップ

はじめに

Entities は、X 上に投稿されたコンテンツに関するメタデータおよび追加のコンテキスト情報を提供します。entities セクションには、Post によく含まれる要素の配列が入っています:ハッシュタグ、ユーザーへのメンション、リンク、株式ティッカー(シンボル)、X の投票、添付メディア。X 側でテキスト本文を事前に解析(プリパース)しているため、これらの配列は開発者が Post を取り込む際に便利です。Post 本文内から明示的にこれらのエンティティを検索して見つける必要はなく、パーサーはこの JSON セクションを直接参照すれば済みます。 パースの便宜にとどまらず、entities セクションは有用な「付加価値」メタデータも提供します。たとえば、Enhanced URLs enrichment を使用している場合、URL メタデータには完全展開された URL に加え、関連するウェブサイトのタイトルや説明が含まれます。別の例として、ユーザーへのメンションがある場合、entities メタデータには数値のユーザー id が含まれ、各種の X API にリクエストする際に役立ちます。 すべての Post の JSON ペイロードには entities セクションが含まれ、hashtagsurlsuser_mentionssymbols の最小セットの属性が、たとえそれらのエンティティが Post メッセージに含まれていなくても存在します。たとえば、本文が「Hello World!」でメディアが添付されていない Post の JSON を確認すると、エンティティ配列がいずれも要素数 0 の、次のような内容が含まれています。
"entities": {
        "hashtags": [
        ],
        "urls": [
        ],
        "user_mentions": [
        ],
        "symbols": [
        ]
      }
Notes:
  • media と polls のエンティティは、その種別のコンテンツが Post に含まれている場合にのみ出現します。
  • ネイティブメディア(写真、動画、GIF)を扱う場合は、Extended Entities オブジェクト を使用してください。

Entities オブジェクト

entitiesextended_entities セクションはどちらも、エンティティのオブジェクト配列で構成されています。以下では、各エンティティオブジェクトの説明に加え、オブジェクトの属性名・型・概要を記載したデータディクショナリを示します。これらの属性に対応する PowerTrack Operators も明記し、JSON ペイロードのサンプルも掲載します。 Posts に一般的に含まれるエンティティ(ハッシュタグ、リンク、ユーザーのメンションなど)の集合です。この entities オブジェクトには media 属性も含まれますが、entities セクションでのその実装が完全に正確なのは、写真が 1 枚の Posts に限られます。写真が複数ある場合や、動画・アニメーション GIF を含む Posts については、extended_entities セクションを参照してください。

Entities データ辞書

entities オブジェクトは、他のエンティティのサブオブジェクト配列を保持するコンテナです。entities の構造を示した後に、これらのサブオブジェクトのデータ辞書と、それらに対応するオペレーターを提供します。
フィールド種類概要
ハッシュタグの配列ハッシュタグオブジェクトPost本文から抽出されたハッシュタグを表します。例:


“ハッシュタグ”: [

“インデックス”: [
32,
38
],
“テキスト”:“Node.js”

]
メディア配列(Array)メディアオブジェクトPostにアップロードされたメディア要素を表します。例:


“メディア”: [

“表示_URL”:“pic.x.com/5J1WJSRCy9”、
“拡張_URL”:“https://x.com/nolan_test/status/930077847535812610/photo/1”、
“id”: 9.300778475358126e17,
“id_str”:“930077847535812610”、
“インデックス”: [
13、
36
],
“メディア_URL”:“http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”、
“メディア_URL_https”:“https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg
“サイズ”:
       “親指”:
“h”: 150,
               “サイズ変更”:“トリミング”、
               “w”: 150

          “大”:
          “h”: 1366,
          “サイズを変更”:“フィット”、
          “w”: 2048

          “中程度”:
          “h”: 800,
          “リサイズ”:“適合”、
          “w”: 1200

          “小さい”:
          “h”: 454,
          “サイズ変更”:“適合”、
          “w”: 680
         
,
“型”:“写真”、
“URL”:“https://t.co/5J1WJSRCy9”,

]
URLの配列URL オブジェクトPost の本文に含まれる URL を表します。

例(Enhanced URLs の拡張が無効な場合):


“URL”: [

“インデックス”: [
32、
52
],
“URL”:“http://t.co/IOwBrTZR”、
“ディスプレイ_URL”:“youtube.com/watch?v=oHg5SJ…”、
“展開_URL”:“http://www.youtube.com/watch?v=oHg5SJYRHA0

]


例(Enhanced URLs エンリッチメントを有効にした場合):

“URL”: [

“URL”:“https://t.co/D0n7a53c2l”、
“拡張_url”:“http://bit.ly/18gECvy”、
“ディスプレイ_URL”:“bit.ly/18gECvy”、
“展開済み”:
“URL”:“https://www.youtube.com/watch?v=oHg5SJYRHA0”、
“ステータス”: 200,
“タイトル”:“Rickroll(リックロール)‘D”、
“説明”:“http://www.facebook.com/rickroll548荒らしが荒らし続ける限り、リックの“ロール”は決して止まらない。”

“インデックス”: [
62、
85
]

]
ユーザー_メンション配列:ユーザーメンションオブジェクトPostの本文内で言及されている他のXユーザーを表します。例:


“ユーザー_メンション”: [

“氏名”:“X API”、
“インデックス”: [
4、
15
],
“スクリーン_名前”:“xapi”、
“id”: 6253282,
“id_str”:“6253282”

]
記号配列(Array):Symbol オブジェクトPost のテキストに含まれる記号($cashtag など)を表します。例:


“記号”: [

“インデックス”: [
12、
17
],
“テキスト”:“twtr”

]
投票…の配列投票オブジェクトPost に含まれる X の投票(Poll)を表します。例:

“投票”: [

“オプション”: [

“ポジション”: 1,
“テキスト”:“私は一度ドキュメントを読みました。”


“位置”: 2,
“テキスト”:“私はドキュメントを2回読みました。”
}、

“ポジション”: 3,
“テキスト”:“私はドキュメントを何度も読み返します。”
}
],
“終了_日時”:“木 5月 25 22:20:27 +0000 2017”、
“継続時間_分”: 60

]

ハッシュタグオブジェクト  

entities セクションには、Post 本文に含まれる各ハッシュタグのオブジェクトを格納する hashtags 配列が含まれ、ハッシュタグがない場合は空配列になります。 PowerTrack の # オペレーターは text 属性に対してマッチします。has:hashtags オペレーターは、配列に少なくとも 1 つの要素がある場合にマッチします。
フィールド説明
indicesArray of IntPost テキスト内でハッシュタグが開始および終了する位置を示す整数配列。1 つ目の整数は Post テキスト文字列内の # 文字の位置を表します。2 つ目の整数はハッシュタグの直後の最初の文字の位置を表します。したがって、これら 2 つの数値の差は、ハッシュタグ名の長さに 1(「#」文字分)を加えた値になります。例:

“indices”:[32,38]
textString先頭の「#」文字を除いたハッシュタグ名。例:

“text”:“nodejs”

メディアオブジェクト  

entities セクションには、Post にメディアオブジェクトが「添付」されている場合、単一のメディアオブジェクトを含む media 配列が含まれます。ネイティブメディアが添付されていない場合は、entitiesmedia 配列は含まれません。以下の理由から、Post のネイティブメディアを処理する際は extended_entities セクションを使用してください:
  • メディアの type は、動画や GIF が Post に添付されている場合でも常に「photo」となります。
  • 最大 4 枚の写真を添付できても、entities セクションに記載されるのは最初の 1 枚のみです。
has:media 演算子は、この配列に要素が存在する場合にマッチします。
フィールド種類概要
ディスプレイ_URLStringクライアントに表示するメディアのURL。例:

“表示_URL”:“pic.x.com/rJC5Pxsu”
拡張_urlStringディスプレイの拡張版_url。メディア表示ページへのリンク。例:

“展開_URL”:“http://x.com/yunorno/status/114080493036773378/photo/1
idInt6464ビット整数で表されるメディアのID。例:

“id”:114080493040967680
id_strString文字列として表されたメディアのid。例:

“id_str”:“114080493040967680”
インデックスInt型の配列Post テキスト内で URL が始まり終わる位置を示す整数配列。最初の整数は、Post テキスト内の URL の先頭文字の位置を表します。2 つ目の整数は、URL の直後に現れる最初の非 URL 文字の位置(または URL が Post テキストの最後の部分である場合は文字列の末尾)を表します。例:

“インデックス”:[15,35]
メディア_URLStringアップロードされたメディアファイルを直接指す http:// URL。例:

“メディア_URL”:“http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg

ダイレクトメッセージ内のメディアについては、media_urlは、media_url_https と同一の HTTPS URL ですmedia_url_httpsまた、OAuth 1.0A を使用し、ユーザーのアクセス トークンでリクエストに署名してアクセスする必要があります。

認証済みの x.com セッションでは画像にアクセスできません。次をご覧くださいこちらのページこれらの最近の変更への対処方法を学ぶために。

これらの画像をウェブページに直接埋め込むことはできません。

参照する写真メディア URL のフォーマット写真のフォーマット方法については’のURL(例:)media_url_https、入手可能なsizes.
メディア_URL_httpsStringhttps ページに埋め込むための、アップロード済みメディアファイルを直接指す https:// URL。例:

“メディア_URL_https”:“https://p.twimg.com/AZVLmp-CIAAbkyy.jpg

ダイレクトメッセージのメディアについては、media_url_httpsOAuth 1.0A を使用し、ユーザーのアクセス トークンでリクエストに署名してアクセスする必要があります。

認証済みの x.com セッションからは画像にアクセスできません。次をご覧くださいこのページ最近の変更への対応方法を学ぶために。

これらの画像をウェブページに直接埋め込むことはできません。

参照してください写真メディア URL の形式写真の書式設定方法について’たとえば次のような URLmedia_url_https、利用可能な情報に基づきsizes
サイズSize オブジェクトメディアファイルの利用可能なサイズを示すオブジェクト。例:


“サイズ”:
“親指”:
“h”: 150,
“サイズ変更”:“切り抜き”、
“w”: 150
}、
“大”:
“h”: 1366,
“サイズ変更”:“適合”、
“w”: 2048
}、
“中程度”:
“h”: 800,
“サイズ変更”:“適合”、
“w”: 1200
}、
“小さい”:
“h”: 454,
“サイズ変更”:“適合”、
“w”: 680
}
}
}

参照してください写真メディア URL のフォーマット写真の形式設定方法について’のURL。例えば、media_url_https、利用可能なものに基づきsizes.
ソース_ステータス_idInt64null 許容。もともと別の Post に関連付けられていたメディアを含む Post の場合、この id は元の Post を指します。例:

“ソーステキスト_ステータス_id”: 205282515685081088
ソース_ステータス_id_strInt64NULL 可。もともと別の Post に関連付けられていたメディアを含む Post の場合、この文字列ベースの ID は元の Post を指します。例:

“ソース_ステータス_id_str”:“205282515685081088”
Stringアップロードされたメディアの種類。可能な種類には photo、video、animated が含まれます。_GIF。例:

“型”:“写真”
URLStringメディアリンクのラップ済みURL。これは、生のPostテキストに直接埋め込まれたURLおよびindicesパラメータの値に対応します。indicesパラメータ。例:

“URL”:“http://t.co/rJC5Pxsu

メディアサイズオブジェクト

ネイティブメディア(写真、動画、GIF)を含むすべてのPostには、高さ・幅のピクセル数を示す「thumb」「small」「medium」「large」の各サイズが含まれます。写真およびプレビュー画像のメディアURLについては、Photo Media URL formattingで、異なるサイズの写真メディアを読み込むためのURLの構成方法を定義しています。

Sizes object 

FieldTypeDescription
thumbSize Objectメディアのサムネイルサイズ版に関する情報。例:

“thumb”:“h”:150, “resize”:“crop”, “w”:150}

サムネイルサイズの写真メディアは150×150の範囲に_fill_で収まるように制限され、クロップされます。
largeSize Objectメディアのラージサイズ版に関する情報。例:

“large”:“h”:454, “resize”:“fit”, “w”:680}

スモールサイズの写真メディアは680×680の範囲内に_fit_で収まるように制限されます。
mediumSize Objectメディアのミディアムサイズ版に関する情報。例:

“medium”:“h”:800, “resize”:“fit”, “w”:1200}

ミディアムサイズの写真メディアは1200×1200の範囲内に_fit_で収まるように制限されます。
smallSize Objectメディアのスモールサイズ版に関する情報。例:

“small”:“h”:1366, “resize”:“fit”, “w”:2048}

ラージサイズの写真メディアは2048×2048の範囲内に_fit_で収まるように制限されます。

サイズオブジェクト 

フィールド説明
wIntこのサイズの幅(ピクセル)。例:

“w”:150
hIntこのサイズの高さ(ピクセル)。例:

“h”:150
resizeStringこのサイズを取得するために使用されたリサイズ方法。値が fit の場合、メディアは元のアスペクト比を保ったまま一方の辺に収まるようにリサイズされます。値が crop の場合、特定の解像度に合わせるためにメディアがトリミングされます。例:

“resize”:“crop”

写真メディアURLのフォーマット

X上の写真メディアは複数サイズで読み込めます。特定の画像ビューポートに収まる範囲で、できるだけ小さい画像サイズを読み込むのが最適です。異なるサイズを読み込むには、Size Objectmedia_url(または media_url_https)を所定の形式で組み合わせます。写真メディアURLの構築例には、既に提供されているmedia entityの例オブジェクトを使用します。 media_url または media_url_https はそれだけでも読み込め、既定では medium バリアントが読み込まれます。可能であれば、完全にフォーマットされた写真メディアURLを指定することを推奨します。 写真メディアURLは3つの要素で構成されます:
Base URLBase URLは、ファイル拡張子を除いたメディアURLです。

例:

“media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”,

このときのBase URLは次のとおりです:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq
FormatFormatは、画像のファイル形式を示します。利用可能な形式は jpg または png で、メディアURLの拡張子として示されます。

例:

“media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”,

このときのFormatは: jpg
NameNameは、読み込むサイズのフィールド名です。

例:


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

大サイズの写真を読み込む場合のNameは: large です
これら3つの要素(Base URL、Format、Name)を組み合わせて、読み込む写真メディアURLを作成します。この方法で画像を読み込む形式は legacymodern の2種類があります。すべての画像読み込みで legacy 形式の使用はやめ、modern 形式を使用してください。modern 形式を使用すると、呼び出し元のCDNヒット率が向上し、データセンターでメディアを生成・読み込みする必要性が低くなるため、読み込み遅延が改善します。
旧形式旧形式は非推奨です。写真メディアの読み込みはすべてモダン形式へ移行してください。

<base_url>.<format>:<name>

例:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large
モダン形式写真読み込み用のモダン形式は2015年にXで確立され、2017年以降は事実上の標準となっています。写真メディアの読み込みはすべてこの形式へ移行してください。

<base_url>?format=<format>&name=<name>

例:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq?format=jpg&amp;name=large


注: 写真メディアURLのクエリ文字列内の項目はアルファベット順です。メディアの読み込みで追加のクエリ項目が加わる場合でも、アルファベット順を維持する必要があります。たとえば、仮に preferred_format という新しいクエリ項目がある場合、クエリ文字列では formatname の後に配置されます。

URL オブジェクト 

entities セクションには、Post 本文に含まれる各リンクに対応するオブジェクトを格納する urls 配列が含まれ、リンクがない場合は空配列になります。 has:links 演算子は、配列に少なくとも 1 件の項目がある場合にマッチします。url: 演算子は expanded_url 属性に対するマッチに使用されます。Expanded URL enrichment を使用している場合、url: 演算子は unwound.url(完全に展開された URL)属性に対するマッチに使用されます。Enhanced URL enrichment を使用している場合、url_title: および url_description: 演算子は、それぞれ unwound.title および unwound.description 属性に対するマッチに使用されます。
フィールド説明
display_urlStringPost に貼り付け/入力された URL。例:

“display_url”:“bit.ly/2so49n2”
expanded_urlStringdisplay_url の展開版。例:

“expanded_url”:“http://bit.ly/2so49n2
indicesArray of IntURL が Post テキスト内で開始および終了する位置を示す整数配列。最初の整数は Post テキスト内における URL の先頭文字の位置、2 番目の整数は URL の末尾の次に続く非 URL 文字の位置を表します。例:

“indices”:[30,53]
urlStringラップされた URL。生の Post テキストに直接埋め込まれた値および indices パラメータの値に対応します。例:

“url”:“https://t.co/yzocNFvJuL
Expanded および/または Enhanced URL エンリッチメントを使用している場合、unwound 属性の下で次のメタデータが利用できます:
フィールド説明
urlStringPost に含まれるリンクの完全展開版。例:

“url”:“https://blog.x.com/en&#95;us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html
statusInt展開処理の最終 HTTP ステータス。200 は成功を示します。例:

200
titleStringリンクの HTML タイトル。例:

“title”:“Using X as a ‘go-to’ communication channel during severe weather”
descriptionStringリンクの HTML 説明。例:

“description”:“Using X as a ‘go-to’ communication channel during severe weather”

ユーザーメンションオブジェクト  

entities セクションには、Post 本文に含まれる各ユーザーメンションに対応するオブジェクトを要素とする user_mentions 配列が含まれ、ユーザーメンションが存在しない場合は空配列になります。 PowerTrack の @ 演算子は screen_name 属性にマッチするために使用されます。has:mentions 演算子は、配列に少なくとも 1 件の項目がある場合にマッチします。
フィールド説明
idInt64メンションされたユーザーの ID(整数)。例:

“id”:6253282
id_strStringメンションされたユーザーの ID(文字列)。例:

“id_str”:“6253282”
indicesArray of IntPost テキスト内でユーザー参照が開始・終了する位置を示す整数配列。最初の整数はユーザーメンションの「@」文字の位置を表します。2 番目の整数は、ユーザーメンションに続く最初の screen_name 以外の文字の位置を表します。例:

“indices”:[4,15]
nameString参照されたユーザーの表示名。例:

“name”:“API”
screen_nameString参照されたユーザーの screen_name。例:

“screen_name”:“api”

シンボルオブジェクト  

entities セクションには、Post 本文に含まれる各 $cashtag ごとに 1 つのオブジェクトを格納した symbols 配列が含まれ、シンボルが存在しない場合は空の配列が含まれます。 PowerTrack の $ 演算子は text 属性に対してマッチングするために使用します。has:symbols 演算子は、配列内に少なくとも 1 件の項目がある場合にマッチします。
フィールド説明
indicesInt の配列Post テキスト内でシンボル/cashtag が開始・終了する位置のオフセットを示す整数の配列。最初の整数は Post テキスト文字列内の 文字の位置を表します。2番目の整数はcashtagの直後の最初の文字の位置を表します。したがって、2つの数値の差はcashtag名の長さに1(「 文字の位置を表します。2 番目の整数は cashtag の直後の最初の文字の位置を表します。したがって、2 つの数値の差は cashtag 名の長さに 1(「」文字分)を加えた値になります。例:

“indices”:[12,17]
textString先頭の「$」文字を除いた cashtag の名称。例:

“text”:“twtr”

Poll オブジェクト

entities セクションには、Post に投票が含まれている場合、poll オブジェクトを1件だけ含む polls 配列が入ります。投票が含まれていない場合は、entities セクションに polls 配列は含まれません。 これらの Poll メタデータは、次のエンタープライズ API でのみ利用可能です。
フィールド説明
optionsOption オブジェクトの配列各選択肢を表す配列で、各要素には投票内での位置とその位置のテキストが含まれます。例:

“options”: [

“position”: 1,
“text”: “I read documentation once.”
}
]
}
end_datetime文字列投票が終了する日時(UTC)のタイムスタンプ。例:

“end_datetime”: “Thu May 25 22:20:27 +0000 2017”
duration_minutes文字列投票の継続時間(分)。例:

“duration_minutes”: 60

リツイートと引用ツイートの詳細

X APIの観点では、リツイートと引用ツイートは、元のPostを埋め込みオブジェクトとして含む特殊な種類のPostです。したがって、リツイートおよび引用ツイートのオブジェクトは、子である「元の」Postの親となり(そのためサイズは2倍になります)。リツイートにはトップレベルの「retweeted_status」オブジェクトが、引用ツイートには「quoted_status」オブジェクトがあります。整合性のため、これらトップレベルのリツイートおよび引用ツイートのオブジェクトにも text プロパティと関連する entities が存在します。ただし、トップレベルの entities は、埋め込まれた「元の」entities と異なる場合があります。リツイートの場合、新しいテキストは元のPost本文の先頭に追加されます。引用Postの場合、新しいテキストはPost本文の末尾に追加されます。 一般的には、retweeted_status が存在する場合、元のPostから text、entities、元の投稿者、日付を取得するのがベストプラクティスです。例外は、追加された引用部分に含まれるXのエンティティを取得する場合です。詳細とヒントは以下をご覧ください。

リツイート

リツイートに関する重要なポイントは、Post に追加の X の entities を加えられないという点です。ユーザーはリツイート時にハッシュタグや URL、その他の詳細を追加できません。ただし、リツイート(トップレベル)の text 属性は、元の Post のテキストの先頭に「RT @username: 」が付与されたものになります。   場合によっては、特にユーザー名が長いアカウントでは、これらの新たに追加される文字と元の Post 本文の組み合わせにより、元の Post のテキスト長制限である 140 文字を容易に超えてしまうことがあります。140 文字ベースの表示と保存を維持するため、トップレベルの本文では Post 本文の末尾を切り詰め、三点リーダー(「…」)を追加します。結果として、元の Post の末尾に位置していた一部のトップレベルの entities が不正確になったり欠落したりする場合があります。例えば、切り詰められたハッシュタグや URL エントリなどです。 この Post、 https://x.com/FloodSocial/status/907974220298125312 には、以下の Post テキストがあります:                Just another test Post that needs to be exactly 140 characters with trailing URL and hashtag http://wapo.st/2w8iwPQ #Testing 上記の例では、URL とハッシュタグの両方が影響を受けています。ハッシュタグは完全に切り詰められ、URL は一部が切り詰められたため、これらはトップレベルの entities から欠落しています。また、text フィールドの先頭に付与される「RT @floodsocial: 」というプレフィックスにより、追加の user_mentions トップレベルエンティティが生じていることにも気付くでしょう。 一方で、retweeted_status 内の Post の text と entities は、切り詰めや不正確な entities が一切なく、元の Post を完全に反映しています。そのため、リツイートでは入れ子の retweeted_status オブジェクトを参照することを推奨します。

引用ツイート

引用ツイートは2016年に導入されました。リツイートと異なり、Postを「引用」すると、共有されたPostの「上に」新しいコンテンツを追加します。この新しいコンテンツには、元のPostと同様に、新しいテキスト、ハッシュタグ、メンション、URL などを含めることができます。 引用ツイートにはネイティブメディア(写真、動画、GIF)を含めることができ、entitiesオブジェクト内に表示されます。 Xのentitiesは追加されることがあるため、引用のentitiesは元のentitiesと異なる可能性が高いです。 この例では、新しいURLとハッシュタグが引用ツイートの末尾に配置されています。 このPost、https://x.com/FloodSocial/status/907983973225160704 のPostテキストは次のとおりです:                   不思議で同じくらい悲劇的——島が洪水に見舞われるとき… 引用ツイートの大西洋横断テスト | @thisuser @thatuserhttp://bit.ly/2vMMDuu #testing この場合、トップレベルのentitiesは引用の詳細を反映していません。  しかし、extended_tweet内のPostテキストとentitiesは、切り詰めや不正確なentitiesなしで引用ツイートを完全に反映しています。したがって、引用ツイートではネストされた_extended_tweet_オブジェクトを参照することを推奨します。

ユーザーオブジェクトの Entities

ユーザーオブジェクトの Entities は、ユーザーが設定したプロフィールの URL および description の fields に現れる URL を表します。hashtags や user_mentions は対象外です。Post の entities と異なり、ユーザーの entities は親オブジェクト内の複数の fields に適用される場合があります。どの field にエンティティ化された URL が含まれているかを明確にするため、親ノードとして url と description が用意されています。 この例では、ユーザーの url field には t.co リンクが含まれており、レスポンスの entities/url/urls[0] ノード内で完全に展開されています。ユーザーの description には短縮(ラップ)URL は含まれていません。

JSON の例

{
  "id": 6253282,
  "id_str": "6253282",
  "name": "X API"
  "screen_name": "xapi",
  "location": "米国カリフォルニア州サンフランシスコ",
  "description": "The Real X API。API の変更やサービス障害について投稿し、X と当社 API に関するご質問にも喜んでお答えします。返答がない場合は、私のウェブサイトをご覧ください。",
  "url": "http:\/\/t.co\/78pYTvWfJd",
  "entities": {
    "url": {
      "urls": [
        {
          "url": "http:\/\/t.co\/78pYTvWfJd",
          "expanded_url": "http:\/\/dev.x.com",
          "display_url": "dev.x.com",
          "indices": [
            0,
            22
          ]
        }
      ]
    },
    "description": {
      "urls": [

      ]
    }
  }
}

X の拡張エンティティ

このページの項目へ移動 イントロダクション Extended Entities オブジェクト 例: Tweet と JSON ペイロード 次のステップ

はじめに

Post にネイティブメディア(外部リンクではなく Post のユーザーインターフェースから共有されたもの)が含まれている場合、extended_entities セクションも含まれます。ネイティブメディア(写真、動画、GIF)については、いくつかの理由から extended_entities が推奨されるメタデータの取得元です。現在、Post には最大 4 枚の写真を添付できます。entities メタデータには最初の 1 枚の写真しか含まれません(2014 年までは写真は 1 枚のみ添付可能でした)が、extended_entities セクションには添付された写真がすべて含まれます。ネイティブメディアに関して、entities.media メタデータのもう一つの欠点は、添付メディアが動画やアニメーション GIF であってもメディアタイプが常に「photo」と示される点です。実際のメディアタイプは extended_entities.media[].type 属性で指定され、photovideo、または animated_gif のいずれかに設定されます。以上の理由から、ネイティブメディアを扱う場合は extended_entities メタデータを使用するのが最適です。 写真、動画、アニメーション GIF が添付されたすべての Post には extended_entities JSON オブジェクトが含まれます。extended_entities オブジェクトには、media オブジェクトからなる単一の media 配列が含まれます(データ辞書は entities セクションを参照)。ハッシュタグやリンクなどの他のエンティティタイプは extended_entities セクションには含まれません。extended_entities セクション内の media オブジェクトの構造は、entities セクションに含まれるものと同一です。 Post には 1 種類のメディアのみ添付できます。写真は最大 4 枚まで、動画と GIF は 1 つまで添付可能です。extended_entities セクションのメディア type メタデータはメディアタイプ(「photo」「video」「animated_gif」)を正しく示し、最大 4 枚の写真に対応しているため、ネイティブメディアにおける推奨メタデータソースです。
{
      "extended_entities": {
        "media": [

        ]
      }
    }

Post と JSON ペイロードの例

以下に、いくつかの Post と、それらに関連する entities メタデータの例を示します。 ネイティブ写真 4 枚を含む Post ハッシュタグ、ユーザーへのメンション、キャッシュタグ、URL、そしてネイティブ写真 4 枚を含む Post:
この Post の entities セクションは次のとおりです:
{
      "entities": {
        "hashtags": [
          {
            "text": "hashtag",
            "indices": [
              59,
              67
            ]
          }
        ],
        "urls": [
          {
            "url": "https://t.co/RzmrQ6wAzD",
            "expanded_url": "http://bit.ly/2pUk4be",
            "display_url": "bit.ly/2pUk4be",
            "unwound": {
              "url": "https://blog.gnip.com/tweeting-in-the-rain/",
              "status": 200,
              "title": "Tweeting in the Rain, Part 1 - Gnip Blog - Social Data and Data Science Blog",
              "description": "If you would have told me a few years ago that one day I’d be comparing precipitation and social media time-series data, I would have assumed you were joking.  For 13 years at OneRain I helped develop software and monitoring … Continue reading →"
            },
            "indices": [
              35,
              58
            ]
          }
        ],
        "user_mentions": [
          {
            "screen_name": "MentionThis",
            "name": "Just Me",
            "id": 50247739,
            "id_str": "50247739",
            "indices": [
              16,
              28
            ]
          }
        ],
        "symbols": [
          {
            "text": "twtr",
            "indices": [
              29,
              34
            ]
          }
        ],
        "media": [
          {
            "id": 861627472244162561,
            "id_str": "861627472244162561",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          }
        ]
      }
    }
以下の「拡張」ペイロードにのみ、最大4枚のネイティブ写真が含まれます。配列の先頭の写真は、拡張されていない X のentitiesセクションに含まれる単一の写真と同一である点に注意してください。写真のmediaメタデータ構造は、entitiesセクションとextended_entitiesセクションのいずれでも同一です。 このPostのextended_entitiesセクションは次のとおりです:
{
    "extended_entities": {
        "media": [
          {
            "id": 861627472244162561,
            "id_str": "861627472244162561",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627472244203520,
            "id_str": "861627472244203520",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPVYAAZbEs.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPVYAAZbEs.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 680,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 1200,
                "h": 1200,
                "resize": "fit"
              },
              "large": {
                "w": 2048,
                "h": 2048,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627474144149504,
            "id_str": "861627474144149504",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_Udn2UUQAADZIS.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_Udn2UUQAADZIS.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627474760708096,
            "id_str": "861627474760708096",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_Udn4nUMAAgcIa.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_Udn4nUMAAgcIa.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 680,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 1200,
                "h": 1200,
                "resize": "fit"
              },
              "large": {
                "w": 2048,
                "h": 2048,
                "resize": "fit"
              }
            }
          }
        ]
      }
    }

ネイティブ動画付きのPost

以下は、動画を含むこのPostの拡張エンティティ・メタデータです:
{
      "extended_entities": {
        "media": [
          {
            "id": 869317980307415040,
            "id_str": "869317980307415040",
            "indices": [
              31,
              54
            ],
            "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "url": "https://t.co/TLSTTOvvmP",
            "display_url": "pic.x.com/TLSTTOvvmP",
            "expanded_url": "https://x.com/FloodSocial/status/869318041078820864/video/1",
            "type": "video",
            "sizes": {
              "small": {
                "w": 340,
                "h": 604,
                "resize": "fit"
              },
              "large": {
                "w": 720,
                "h": 1280,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 600,
                "h": 1067,
                "resize": "fit"
              }
            },
            "video_info": {
              "aspect_ratio": [
                9,
                16
              ],
              "duration_millis": 10704,
              "variants": [
                {
                  "bitrate": 320000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/180x320/FMei8yCw7yc_Z7e-.mp4"
                },
                {
                  "bitrate": 2176000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/720x1280/octt5pFbISkef8RB.mp4"
                },
                {
                  "bitrate": 832000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/360x640/2OmqK74SQ9jNX8mZ.mp4"
                },
                {
                  "content_type": "application/x-mpegURL",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/pl/wcJQJ2nxiFU4ZZng.m3u8"
                }
              ]
            }
          }
        ]
      }
    }
広告主が動画の再生をXが所有・運営するプラットフォームのみに限定することを選択した場合、video_info オブジェクトは additional_media_info オブジェクトに置き換えられます。 additional_media_info には、titledescriptionembeddable flag など、パブリッシャーが提供する追加のメディア情報が含まれます。embeddable=false の場合、動画コンテンツはXの公式クライアントでのみ利用可能になります。この場合、ペイロード内で提供されるすべての動画URLはX由来となり、ユーザーはリンクをクリックしてXが所有するプロパティ上で動画を開くことができます。 この状況で拡張 entities オブジェクトがどのようになるかの例を以下に示します。
{
      "extended_entities": {
        "media": [
          {
            "id": 924685332347469824,
            "id_str": "924685332347469824",
            "indices": [
              49,
              72
            ],
            "media_url": "http://pbs.twimg.com/media/DNUkdLMVwAEzj8K.jpg",
            "media_url_https": "https://pbs.twimg.com/media/DNUkdLMVwAEzj8K.jpg",
            "url": "https://t.co/90xOJqKMox",
            "display_url": "pic.x.com/90xOJqKMox",
            "expanded_url": "https://x.com/nyjets/status/924685391524798464/video/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 383,
                "resize": "fit"
              },
              "medium": {
                "w": 1200,
                "h": 675,
                "resize": "fit"
              },
              "large": {
                "w": 1280,
                "h": 720,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              }
            },
            "additional_media_info": {
              "title": "#ATLvsNYJ: McCownからTomlinsonへのTD",
              "description": "NFL",
              "embeddable": false,
              "monetizable": true
            }
          }
        ]
      }
    }
上で説明したとおり、こちらは type が「photo」に誤って設定されている entities セクションです。改めて、extended_entities セクションを、“video” や “animated_gif” を含むすべてのネイティブメディアタイプに対して優先的に使用してください。
    {
    "entities": {
        "hashtags": [

        ],
        "urls": [

        ],
        "user_mentions": [

        ],
        "symbols": [

        ],
        "media": [
          {
            "id": 869317980307415040,
            "id_str": "869317980307415040",
            "indices": [
              31,
              54
            ],
            "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "url": "https://t.co/TLSTTOvvmP",
            "display_url": "pic.x.com/TLSTTOvvmP",
            "expanded_url": "https://x.com/FloodSocial/status/869318041078820864/video/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 340,
                "h": 604,
                "resize": "fit"
              },
              "large": {
                "w": 720,
                "h": 1280,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 600,
                "h": 1067,
                "resize": "fit"
              }
            }
          }
        ]
      }

    }

アニメーションGIF付きのPost

以下は、アニメーションGIF付きのこのPostの拡張エンティティに関するメタデータです。
{
      "extended_entities": {
        "media": [
          {
            "id": 870042654213459968,
            "id_str": "870042654213459968",
            "indices": [
              29,
              52
            ],
            "media_url": "http://pbs.twimg.com/tweet_video_thumb/DBMDLy_U0AAqUWP.jpg",
            "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/DBMDLy_U0AAqUWP.jpg",
            "url": "https://t.co/nD6G4bWSKb",
            "display_url": "pic.x.com/nD6G4bWSKb",
            "expanded_url": "https://x.com/FloodSocial/status/870042717589340160/photo/1",
            "type": "animated_gif",
            "sizes": {
              "medium": {
                "w": 350,
                "h": 262,
                "resize": "fit"
              },
              "small": {
                "w": 340,
                "h": 255,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 350,
                "h": 262,
                "resize": "fit"
              }
            },
            "video_info": {
              "aspect_ratio": [
                175,
                131
              ],
              "variants": [
                {
                  "bitrate": 0,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/tweet_video/DBMDLy_U0AAqUWP.mp4"
                }
              ]
            }
          }
        ]
      }
    }

ネイティブ Enriched の例ペイロード

ポスト

{
	"created_at": "Fri Sep 18 18:36:15 +0000 2020",
	"id": 1307025659294675000,
	"id_str": "1307025659294674945",
	"text": "新しいTweetペイロードv2のアップデート内容を紹介する記事です https://t.co/oeF3ZHeKQQ",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
	"truncated": false,
	"in_reply_to_status_id": 1304102743196356600,
	"in_reply_to_status_id_str": "1304102743196356610",
	"in_reply_to_user_id": 2244994945,
	"in_reply_to_user_id_str": "2244994945",
	"in_reply_to_screen_name": "XDevelopers",
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "#XDevelopersチームの公式アカウントです。#XAPIに関するアップデート、ニュース、イベント情報をお届けします。",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"quote_count": 1,
	"reply_count": 2,
	"retweet_count": 11,
	"favorite_count": 70,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"display_url": "dev.to/twitterdev/und…",
			"unwound": {
				"url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
				"status": 200,
				"title": "X API v2の新しいTweetペイロードを理解する",
				"description": "Xは最近、新機能を提供するためにゼロから再構築された新しいX API v2を発表しました...",
			},
			"indices": [
				74,
				97
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Postへの返信

{
	"created_at": "Fri Aug 21 19:10:05 +0000 2020",
	"id": 1296887316556980200,
	"id_str": "1296887316556980230",
	"text": "@PennMedCDHがXのデータを活用してCOVID-19の健康危機を分析している様子をご覧ください 📊\n\nhttps://t.co/1tdA8uDWes",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Webアプリ</a>",
	"truncated": false,
	"in_reply_to_status_id": 1296887091901718500,
	"in_reply_to_status_id_str": "1296887091901718529",
	"in_reply_to_user_id": 2244994945,
	"in_reply_to_user_id_str": "2244994945",
	"in_reply_to_screen_name": "XDevelopers",
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "#XDevelopersチームの公式アカウントです。#XAPIに関する最新情報、ニュース、イベント情報をお届けします。",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"quote_count": 2,
	"reply_count": 3,
	"retweet_count": 9,
	"favorite_count": 26,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"display_url": "developer.x.com/en/use-cases/s…",
			"unwound": {
				"url": "https://developer.x.com/en/use-cases/success-stories/penn",
				"status": 200,
				"title": "ペンメディシン デジタルヘルスセンター",
				"description": "ペンメディシン デジタルヘルスセンターは、感情分析、報告された症状、州別データ、COVID-19アウトブレイクに関する国境データを詳細に示すチャートを含むCOVID-19 Xマップを作成しました。さらに、Penn Med With Youイニシアチブでは、Xから収集した地域別の集計情報を活用し、ウェブサイトとテキストメッセージサービスで情報を提供しています。このサービスは、関連性が高くタイムリーなリソースを配信するためにこの情報を活用しています。"
			},
			"indices": [
				87,
				110
			]
		}],
		"user_mentions": [{
			"screen_name": "PennMedCDH",
			"name": "Penn Med CDH",
			"id": 1615654896,
			"id_str": "1615654896",
			"indices": [
				8,
				19
			]
		}],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

拡張 Post

{
	"created_at": "Wed Aug 19 16:26:16 +0000 2020",
	"id": 1296121314218897400,
	"id_str": "1296121314218897408",
	"text": "返信を非表示にするエンドポイントが本日公開されます!\n\n開発者はTweetへの返信を非表示にできます - 開発者が… https://t.co/VyfXs1RTXn",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Webアプリ</a>",
	"truncated": true,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "#XDevelopers チームの公式アカウントであり、#XAPI に関する最新情報、ニュース、イベントの公式情報源です。",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"extended_tweet": {
		"full_text": "返信を非表示にするエンドポイントが本日公開されます!\n\n開発者はTweetへの返信を非表示にできます - #XAPI を使用して公開会話の健全性を向上させるための重要な手段です。\n\nhttps://t.co/khXhTurm9x",
		"display_text_range": [
			0,
			215
		],
		"entities": {
			"hashtags": [{
				"text": "XAPI",
				"indices": [
					178,
					189
				]
			}],
			"urls": [{
				"url": "https://t.co/khXhTurm9x",
				"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
				"display_url": "devcommunity.com/t/hide-replies…",
				"unwound": {
					"url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
					"status": 200,
					"title": "新しいX APIで返信の非表示機能が利用可能になりました",
					"description": "本日、新しいX APIにおける返信非表示エンドポイントの一般提供を発表いたします。返信非表示エンドポイントを使用すると、ユーザーが自分のTweetへの返信を非表示または再表示できるツールを構築できます。ユーザーは、攻撃的、気を散らす、誤解を招くコメントへの注目を減らしたり、会話をより魅力的にするなど、さまざまな理由で返信を管理します。このエンドポイントを通じて、Xのユーザーがより迅速かつ効率的に返信を非表示または再表示できるツールを構築できます..."
				},
				"indices": [
					192,
					215
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"quote_count": 23,
	"reply_count": 9,
	"retweet_count": 54,
	"favorite_count": 172,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/VyfXs1RTXn",
			"expanded_url": "https://x.com/i/web/status/1296121314218897408",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

extended_entities を含む Post

{
	"created_at": "Wed Aug 12 17:01:42 +0000 2020",
	"id": 1293593516040269800,
	"id_str": "1293593516040269825",
	"text": "ついに登場!🥁 新しい #XAPI をご紹介します。\n\nX API v2 をゼロから再構築し、デベロッパーコミュニティにより良いサービスを提供します… https://t.co/UeCndQGMjx",
	"display_text_range": [
		0,
		140
	],
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
	"truncated": true,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "#XDevelopers チームの公式アカウント。#XAPI に関する最新情報、ニュース、イベントをお届けします。",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"extended_tweet": {
		"full_text": "ついに登場!🥁 新しい #XAPI をご紹介します。\n\nX API v2 をゼロから再構築し、デベロッパーコミュニティにより良いサービスを提供します。そして本日のローンチは始まりに過ぎません。\n\nhttps://t.co/32VrwpGaJw https://t.co/KaFSbjWUA8",
		"display_text_range": [
			0,
			218
		],
		"entities": {
			"hashtags": [{
				"text": "XAPI",
				"indices": [
					42,
					53
				]
			}],
			"urls": [{
				"url": "https://t.co/32VrwpGaJw",
				"expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
				"display_url": "blog.x.com/developer/en_u…",
				"unwound": {
					"url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
					"status": 200,
					"title": "新しく改良された X API のご紹介",
					"description": "新しい X API のご紹介 - ゼロから再構築し、デベロッパーが X 上で行われる公開会話に世界を繋げられるよう、新機能をより迅速に提供します。"
				},
				"indices": [
					195,
					218
				]
			}],
			"user_mentions": [],
			"symbols": [],
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		},
		"extended_entities": {
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		}
	},
	"quote_count": 332,
	"reply_count": 172,
	"retweet_count": 958,
	"favorite_count": 2844,
	"entities": {
		"hashtags": [{
			"text": "XAPI",
			"indices": [
				42,
				53
			]
		}],
		"urls": [{
			"url": "https://t.co/UeCndQGMjx",
			"expanded_url": "https://x.com/i/web/status/1293593516040269825",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

リツイート

{
	"created_at": "Tue Feb 18 19:33:59 +0000 2020",
	"id": 1229851574555508700,
	"id_str": "1229851574555508737",
	"text": "RT @suhemparack: APLを使ってXのAlexa Skillを作成し、Echo ShowでTweetとトレンドを表示できるようにしました!\n\nこちらをご覧ください…",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Webアプリ</a>",
	"truncated": false,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "X Developers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "#XDevelopersチームの公式アカウントで、#XAPIに関する最新情報、ニュース、イベントの公式情報源です。",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"retweeted_status": {
		"created_at": "Tue Feb 18 19:01:58 +0000 2020",
		"id": 1229843515603144700,
		"id_str": "1229843515603144704",
		"text": "APLを使ってXのAlexa Skillを作成し、Echo ShowでTweetとトレンドを表示できるようにしました!\n\nこちらをご覧ください… https://t.co/RP9NgltX7i",
		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Webアプリ</a>",
		"truncated": true,
		"in_reply_to_status_id": null,
		"in_reply_to_status_id_str": null,
		"in_reply_to_user_id": null,
		"in_reply_to_user_id_str": null,
		"in_reply_to_screen_name": null,
		"user": {
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"name": "Suhem Parack",
			"screen_name": "suhemparack",
			"location": "Seattle, WA",
			"url": "https://developer.x.com",
			"description": "@Xの学術研究向けデベロッパーリレーションズ。Xデータを使った研究についてお気軽にご相談ください。前職: Amazon Alexa。意見は個人的なものです",
			"translator_type": "none",
			"protected": false,
			"verified": false,
			"followers_count": 732,
			"friends_count": 501,
			"listed_count": 12,
			"favourites_count": 358,
			"statuses_count": 458,
			"created_at": "Thu Apr 27 20:56:22 +0000 2017",
			"utc_offset": null,
			"time_zone": null,
			"geo_enabled": false,
			"lang": null,
			"contributors_enabled": false,
			"is_translator": false,
			"profile_background_color": "F5F8FA",
			"profile_background_image_url": "",
			"profile_background_image_url_https": "",
			"profile_background_tile": false,
			"profile_link_color": "1DA1F2",
			"profile_sidebar_border_color": "C0DEED",
			"profile_sidebar_fill_color": "DDEEF6",
			"profile_text_color": "333333",
			"profile_use_background_image": true,
			"profile_image_url": "http://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
			"profile_banner_url": "https://pbs.twimg.com/profile_banners/857699969263964161/1593055939",
			"default_profile": true,
			"default_profile_image": false,
			"following": null,
			"follow_request_sent": null,
			"notifications": null
		},
		"geo": null,
		"coordinates": null,
		"place": null,
		"contributors": null,
		"is_quote_status": false,
		"extended_tweet": {
			"full_text": "APLを使ってXのAlexa Skillを作成し、Echo ShowでTweetとトレンドを表示できるようにしました!\n\nこちらをご覧ください 👇\n\nhttps://t.co/l5J8wq748G",
			"display_text_range": [
				0,
				150
			],
			"entities": {
				"hashtags": [],
				"urls": [{
					"url": "https://t.co/l5J8wq748G",
					"expanded_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
					"display_url": "dev.to/twitterdev/bui…",
					"unwound": {
						"url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
						"status": 200,
						"title": null,
						"description": null
					},
					"indices": [
						127,
						150
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"quote_count": 6,
		"reply_count": 1,
		"retweet_count": 19,
		"favorite_count": 71,
		"entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/RP9NgltX7i",
				"expanded_url": "https://x.com/i/web/status/1229843515603144704",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					116,
					139
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"favorited": false,
		"retweeted": false,
		"possibly_sensitive": false,
		"filter_level": "low",
		"lang": "en"
	},
	"is_quote_status": false,
	"quote_count": 0,
	"reply_count": 0,
	"retweet_count": 0,
	"favorite_count": 0,
	"entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "suhemparack",
			"name": "Suhem Parack",
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"indices": [
				3,
				15
			]
		}],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

引用Tweet

{
	"created_at": "Mon Nov 16 18:09:36 +0000 2020",
	"id": 1328399838128468000,
	"id_str": "1328399838128467969",
	"text": "予定通り、以下で参照されているLabs v2エンドポイントは廃止されました。ご不明な点がございましたらフォーラムでお知らせください… https://t.co/ahQvTYaOcZ",
	"display_text_range": [
		0,
		140
	],
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Webアプリ</a>",
	"truncated": true,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "#XDevelopersチームの公式アカウントであり、#XAPIに関する最新情報、ニュース、イベントの公式情報源です。",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"quoted_status_id": 1327011423252144000,
	"quoted_status_id_str": "1327011423252144128",
	"quoted_status": {
		"created_at": "Thu Nov 12 22:12:32 +0000 2020",
		"id": 1327011423252144000,
		"id_str": "1327011423252144128",
		"text": "👋 X Developer Labs v2の返信を非表示機能と最近の検索機能が来週月曜日、11月に廃止されることをお知らせします… https://t.co/EEWN2Q9aXh",
		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Webアプリ</a>",
		"truncated": true,
		"in_reply_to_status_id": null,
		"in_reply_to_status_id_str": null,
		"in_reply_to_user_id": null,
		"in_reply_to_user_id_str": null,
		"in_reply_to_screen_name": null,
		"user": {
			"id": 2244994945,
			"id_str": "2244994945",
			"name": "X Dev",
			"screen_name": "XDevelopers",
			"location": "127.0.0.1",
			"url": "https://developer.x.com/en/community",
			"description": "#XDevelopersチームの公式アカウントであり、#XAPIに関する最新情報、ニュース、イベントの公式情報源です。",
			"translator_type": "regular",
			"protected": false,
			"verified": true,
			"followers_count": 512292,
			"friends_count": 2038,
			"listed_count": 1666,
			"favourites_count": 2147,
			"statuses_count": 3634,
			"created_at": "Sat Dec 14 04:35:55 +0000 2013",
			"utc_offset": null,
			"time_zone": null,
			"geo_enabled": true,
			"lang": null,
			"contributors_enabled": false,
			"is_translator": false,
			"profile_background_color": "FFFFFF",
			"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
			"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
			"profile_background_tile": false,
			"profile_link_color": "0084B4",
			"profile_sidebar_border_color": "FFFFFF",
			"profile_sidebar_fill_color": "DDEEF6",
			"profile_text_color": "333333",
			"profile_use_background_image": false,
			"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
			"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
			"default_profile": false,
			"default_profile_image": false,
			"following": null,
			"follow_request_sent": null,
			"notifications": null
		},
		"geo": null,
		"coordinates": null,
		"place": null,
		"contributors": null,
		"is_quote_status": false,
		"extended_tweet": {
			"full_text": "👋 X Developer Labs v2の返信を非表示機能と最近の検索機能が来週月曜日、11月16日に廃止されることをお知らせします。v2 #XAPIで現在利用可能な新しい返信を非表示エンドポイントと最近の検索エンドポイントへの移行をお勧めします。詳細: https://t.co/r6z6CI7kEy",
			"display_text_range": [
				0,
				273
			],
			"entities": {
				"hashtags": [{
					"text": "XAPI",
					"indices": [
						228,
						239
					]
				}],
				"urls": [{
					"url": "https://t.co/r6z6CI7kEy",
					"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
					"display_url": "devcommunity.com/t/retiring-lab…",
					"unwound": {
						"url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
						"status": 200,
						"title": "Labs v2の最近の検索と返信を非表示機能の廃止",
						"description": "アーリーアクセスおよび返信を非表示機能のお知らせでお伝えした通り、以下のX Developer Labs v2エンドポイントは11月16日に廃止されます。Labs v2最近の検索 Labs v2返信を非表示 これらのエンドポイントを呼び出すと、HTTP 410ステータスで応答し、データは返されません。Labsからのフィードバックに基づき、対応する機能をX API v2に組み込みました。関連するドキュメントは以下のリンクからご覧いただけます。まだv2アクセスに登録されていない場合は、こちらをクリックして登録してください..."
					},
					"indices": [
						250,
						273
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"quote_count": 4,
		"reply_count": 2,
		"retweet_count": 8,
		"favorite_count": 33,
		"entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/EEWN2Q9aXh",
				"expanded_url": "https://x.com/i/web/status/1327011423252144128",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					117,
					140
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"favorited": false,
		"retweeted": false,
		"possibly_sensitive": false,
		"filter_level": "low",
		"lang": "en"
	},
	"quoted_status_permalink": {
		"url": "https://t.co/JaxttUMmjX",
		"expanded": "https://x.com/XDevelopers/status/1327011423252144128",
		"display": "x.com/XDevelopers/sta…"
	},
	"is_quote_status": true,
	"extended_tweet": {
		"full_text": "予定通り、以下で参照されているLabs v2エンドポイントは廃止されました。X API v2に関してご質問やサポートが必要な場合は、フォーラムでお知らせください! https://t.co/JaxttUMmjX",
		"display_text_range": [
			0,
			166
		],
		"entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/JaxttUMmjX",
				"expanded_url": "https://x.com/XDevelopers/status/1327011423252144128",
				"display_url": "x.com/XDevelopers/sta…",
				"indices": [
					167,
					190
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"quote_count": 1,
	"reply_count": 4,
	"retweet_count": 7,
	"favorite_count": 29,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/ahQvTYaOcZ",
			"expanded_url": "https://x.com/i/web/status/1328399838128467969",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

引用Tweetのリツイート

{
 	"created_at": "Thu Feb 06 17:26:44 +0000 2020",
 	"id": 1225470895902412800,
 	"id_str": "1225470895902412800",
 	"text": "RT @AureliaSpecker: 📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses…",
 	"source": "<a href=\"http://x.com/download/iphone\" rel=\"nofollow\">X for iPhone</a>",
 	"truncated": false,
 	"in_reply_to_status_id": null,
 	"in_reply_to_status_id_str": null,
 	"in_reply_to_user_id": null,
 	"in_reply_to_user_id_str": null,
 	"in_reply_to_screen_name": null,
 	"user": {
 		"id": 2244994945,
 		"id_str": "2244994945",
 		"name": "X Dev",
 		"screen_name": "XDevelopers",
 		"location": "127.0.0.1",
 		"url": "https://developer.x.com/en/community",
 		"description": "#XDevelopers チームの公式情報源です。#XAPI に関する最新情報、ニュース、イベント情報を提供しています。",
 		"translator_type": "regular",
 		"protected": false,
 		"verified": true,
 		"followers_count": 512292,
 		"friends_count": 2038,
 		"listed_count": 1666,
 		"favourites_count": 2147,
 		"statuses_count": 3634,
 		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
 		"utc_offset": null,
 		"time_zone": null,
 		"geo_enabled": true,
 		"lang": null,
 		"contributors_enabled": false,
 		"is_translator": false,
 		"profile_background_color": "FFFFFF",
 		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
 		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
 		"profile_background_tile": false,
 		"profile_link_color": "0084B4",
 		"profile_sidebar_border_color": "FFFFFF",
 		"profile_sidebar_fill_color": "DDEEF6",
 		"profile_text_color": "333333",
 		"profile_use_background_image": false,
 		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
 		"default_profile": false,
 		"default_profile_image": false,
 		"following": null,
 		"follow_request_sent": null,
 		"notifications": null
 	},
 	"geo": null,
 	"coordinates": null,
 	"place": null,
 	"contributors": null,
 	"retweeted_status": {
 		"created_at": "Tue Feb 04 15:01:25 +0000 2020",
 		"id": 1224709550214873000,
 		"id_str": "1224709550214873090",
 		"text": "📣 昨年11月に書いたロンドン通勤チュートリアルを気に入っていただけた方は、リファクタリング版もぜひチェックしてください… https://t.co/cAepHunkFp",
 		"display_text_range": [
 			0,
 			140
 		],
 		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
 		"truncated": true,
 		"in_reply_to_status_id": null,
 		"in_reply_to_status_id_str": null,
 		"in_reply_to_user_id": null,
 		"in_reply_to_user_id_str": null,
 		"in_reply_to_screen_name": null,
 		"user": {
 			"id": 1102321381,
 			"id_str": "1102321381",
 			"name": "Aurelia Specker",
 			"screen_name": "AureliaSpecker",
 			"location": "London, UK",
 			"url": null,
 			"description": "devrel @TwitterUK • ロンドン在住スイス人 • 観葉植物の母 • @_dormrod 専属美容師",
 			"translator_type": "none",
 			"protected": false,
 			"verified": false,
 			"followers_count": 1032,
 			"friends_count": 1331,
 			"listed_count": 26,
 			"favourites_count": 4979,
 			"statuses_count": 854,
 			"created_at": "Fri Jan 18 23:45:43 +0000 2013",
 			"utc_offset": null,
 			"time_zone": null,
 			"geo_enabled": true,
 			"lang": null,
 			"contributors_enabled": false,
 			"is_translator": false,
 			"profile_background_color": "8B542B",
 			"profile_background_image_url": "http://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_tile": false,
 			"profile_link_color": "5E341C",
 			"profile_sidebar_border_color": "D9B17E",
 			"profile_sidebar_fill_color": "EADEAA",
 			"profile_text_color": "333333",
 			"profile_use_background_image": true,
 			"profile_image_url": "http://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_banner_url": "https://pbs.twimg.com/profile_banners/1102321381/1587552672",
 			"default_profile": false,
 			"default_profile_image": false,
 			"following": null,
 			"follow_request_sent": null,
 			"notifications": null
 		},
 		"geo": null,
 		"coordinates": null,
 		"place": null,
 		"contributors": null,
 		"quoted_status_id": 1195000047089389600,
 		"quoted_status_id_str": "1195000047089389573",
 		"quoted_status": {
 			"created_at": "Thu Nov 14 15:26:27 +0000 2019",
 			"id": 1195000047089389600,
 			"id_str": "1195000047089389573",
 			"text": "X API を使ってカスタム通勤情報を取得する方法のチュートリアルを書きました🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
 			"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
 			"truncated": true,
 			"in_reply_to_status_id": null,
 			"in_reply_to_status_id_str": null,
 			"in_reply_to_user_id": null,
 			"in_reply_to_user_id_str": null,
 			"in_reply_to_screen_name": null,
 			"user": {
 				"id": 1102321381,
 				"id_str": "1102321381",
 				"name": "Aurelia Specker",
 				"screen_name": "AureliaSpecker",
 				"location": "London, UK",
 				"url": null,
 				"description": "devrel @TwitterUK • ロンドン在住スイス人 • 観葉植物の母 • @_dormrod 専属美容師",
 				"translator_type": "none",
 				"protected": false,
 				"verified": false,
 				"followers_count": 1032,
 				"friends_count": 1331,
 				"listed_count": 26,
 				"favourites_count": 4979,
 				"statuses_count": 854,
 				"created_at": "Fri Jan 18 23:45:43 +0000 2013",
 				"utc_offset": null,
 				"time_zone": null,
 				"geo_enabled": true,
 				"lang": null,
 				"contributors_enabled": false,
 				"is_translator": false,
 				"profile_background_color": "8B542B",
 				"profile_background_image_url": "http://abs.twimg.com/images/themes/theme8/bg.gif",
 				"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme8/bg.gif",
 				"profile_background_tile": false,
 				"profile_link_color": "5E341C",
 				"profile_sidebar_border_color": "D9B17E",
 				"profile_sidebar_fill_color": "EADEAA",
 				"profile_text_color": "333333",
 				"profile_use_background_image": true,
 				"profile_image_url": "http://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 				"profile_image_url_https": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 				"profile_banner_url": "https://pbs.twimg.com/profile_banners/1102321381/1587552672",
 				"default_profile": false,
 				"default_profile_image": false,
 				"following": null,
 				"follow_request_sent": null,
 				"notifications": null
 			},
 			"geo": null,
 			"coordinates": null,
 			"place": null,
 			"contributors": null,
 			"is_quote_status": false,
 			"extended_tweet": {
 				"full_text": "X APIを使って通勤情報をカスタマイズする方法のチュートリアルを書きました🚇\n\n#DEVcommunity #Pythontutorial \n\nこちらからどうぞ 👇\nhttps://t.co/sOjXW4YhbN",
 				"display_text_range": [
 					0,
 					160
 				],
 				"entities": {
 					"hashtags": [{
 							"text": "DEVcommunity",
 							"indices": [
 								85,
 								98
 							]
 						},
 						{
 							"text": "Pythontutorial",
 							"indices": [
 								99,
 								114
 							]
 						}
 					],
 					"urls": [{
 						"url": "https://t.co/sOjXW4YhbN",
 						"expanded_url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 						"display_url": "dev.to/twitterdev/usi…",
 						"unwound": {
 							"url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 							"status": 200,
 							"title": null,
 							"description": null
 						},
 						"indices": [
 							137,
 							160
 						]
 					}],
 					"user_mentions": [],
 					"symbols": []
 				}
 			},
 			"quote_count": 4,
 			"reply_count": 5,
 			"retweet_count": 31,
 			"favorite_count": 123,
 			"entities": {
 				"hashtags": [{
 						"text": "DEVcommunity",
 						"indices": [
 							85,
 							98
 						]
 					},
 					{
 						"text": "Pythontutorial",
 						"indices": [
 							99,
 							114
 						]
 					}
 				],
 				"urls": [{
 					"url": "https://t.co/pL0qJ4vhtE",
 					"expanded_url": "https://x.com/i/web/status/1195000047089389573",
 					"display_url": "x.com/i/web/status/1…",
 					"indices": [
 						116,
 						139
 					]
 				}],
 				"user_mentions": [],
 				"symbols": []
 			},
 			"favorited": false,
 			"retweeted": false,
 			"possibly_sensitive": false,
 			"filter_level": "low",
 			"lang": "en"
 		},
 		"quoted_status_permalink": {
 			"url": "https://t.co/dXrJYvn3hY",
 			"expanded": "https://x.com/AureliaSpecker/status/1195000047089389573",
 			"display": "x.com/AureliaSpecker…"
 		},
 		"is_quote_status": true,
 		"extended_tweet": {
 			"full_text": "📣 昨年11月に書いたロンドン通勤チュートリアルを気に入っていただけた方は、Xの新しい検索エンドポイントを使ったリファクタリング版をぜひご覧ください 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @XDev @XAPI https://t.co/dXrJYvn3hY",
 			"display_text_range": [
 				0,
 				229
 			],
 			"entities": {
 				"hashtags": [{
 						"text": "DEVcommunity",
 						"indices": [
 							176,
 							189
 						]
 					},
 					{
 						"text": "Pythontutorial",
 						"indices": [
 							190,
 							205
 						]
 					}
 				],
 				"urls": [{
 						"url": "https://t.co/87XIPZmZBJ",
 						"expanded_url": "https://bit.ly/2OrnrCC",
 						"display_url": "bit.ly/2OrnrCC",
 						"unwound": {
 							"url": "https://dev.to/twitterdev/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe",
 							"status": 200,
 							"title": null,
 							"description": null
 						},
 						"indices": [
 							151,
 							174
 						]
 					},
 					{
 						"url": "https://t.co/dXrJYvn3hY",
 						"expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
 						"display_url": "x.com/AureliaSpecker…",
 						"indices": [
 							230,
 							253
 						]
 					}
 				],
 				"user_mentions": [{
 						"screen_name": "XDev",
 						"name": "X Dev",
 						"id": 2244994945,
 						"id_str": "2244994945",
 						"indices": [
 							206,
 							217
 						]
 					},
 					{
 						"screen_name": "XAPI",
 						"name": "X API",
 						"id": 6253282,
 						"id_str": "6253282",
 						"indices": [
 							218,
 							229
 						]
 					}
 				],
 				"symbols": []
 			}
 		},
 		"quote_count": 2,
 		"reply_count": 0,
 		"retweet_count": 12,
 		"favorite_count": 43,
 		"entities": {
 			"hashtags": [],
 			"urls": [{
 				"url": "https://t.co/cAepHunkFp",
 				"expanded_url": "https://x.com/i/web/status/1224709550214873090",
 				"display_url": "x.com/i/web/status/1…",
 				"indices": [
 					117,
 					140
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		},
 		"favorited": false,
 		"retweeted": false,
 		"possibly_sensitive": false,
 		"filter_level": "low",
 		"lang": "en"
 	},
 	"quoted_status_id": 1195000047089389600,
 	"quoted_status_id_str": "1195000047089389573",
 	"quoted_status": {
 		"created_at": "Thu Nov 14 15:26:27 +0000 2019",
 		"id": 1195000047089389600,
 		"id_str": "1195000047089389573",
 		"text": "X APIを使って通勤情報をカスタマイズする方法のチュートリアルを書きました🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
 		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
 		"truncated": true,
 		"in_reply_to_status_id": null,
 		"in_reply_to_status_id_str": null,
 		"in_reply_to_user_id": null,
 		"in_reply_to_user_id_str": null,
 		"in_reply_to_screen_name": null,
 		"user": {
 			"id": 1102321381,
 			"id_str": "1102321381",
 			"name": "Aurelia Specker",
 			"screen_name": "AureliaSpecker",
 			"location": "London, UK",
 			"url": null,
 			"description": "devrel @TwitterUK • ロンドン在住スイス人 • 観葉植物の母 • @_dormrodの専属美容師",
 			"translator_type": "none",
 			"protected": false,
 			"verified": false,
 			"followers_count": 1032,
 			"friends_count": 1331,
 			"listed_count": 26,
 			"favourites_count": 4979,
 			"statuses_count": 854,
 			"created_at": "Fri Jan 18 23:45:43 +0000 2013",
 			"utc_offset": null,
 			"time_zone": null,
 			"geo_enabled": true,
 			"lang": null,
 			"contributors_enabled": false,
 			"is_translator": false,
 			"profile_background_color": "8B542B",
 			"profile_background_image_url": "http://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_tile": false,
 			"profile_link_color": "5E341C",
 			"profile_sidebar_border_color": "D9B17E",
 			"profile_sidebar_fill_color": "EADEAA",
 			"profile_text_color": "333333",
 			"profile_use_background_image": true,
 			"profile_image_url": "http://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_banner_url": "https://pbs.twimg.com/profile_banners/1102321381/1587552672",
 			"default_profile": false,
 			"default_profile_image": false,
 			"following": null,
 			"follow_request_sent": null,
 			"notifications": null
 		},
 		"geo": null,
 		"coordinates": null,
 		"place": null,
 		"contributors": null,
 		"is_quote_status": false,
 		"extended_tweet": {
 			"full_text": "X APIを使って自分に合った通勤情報を取得する方法のチュートリアルを書きました🚇\n\n#DEVcommunity #Pythontutorial \n\nぜひチェックしてください 👇\nhttps://t.co/sOjXW4YhbN",
 			"display_text_range": [
 				0,
 				160
 			],
 			"entities": {
 				"hashtags": [{
 						"text": "DEVcommunity",
 						"indices": [
 							85,
 							98
 						]
 					},
 					{
 						"text": "Pythontutorial",
 						"indices": [
 							99,
 							114
 						]
 					}
 				],
 				"urls": [{
 					"url": "https://t.co/sOjXW4YhbN",
 					"expanded_url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 					"display_url": "dev.to/twitterdev/usi…",
 					"unwound": {
 						"url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 						"status": 200,
 						"title": null,
 						"description": null
 					},
 					"indices": [
 						137,
 						160
 					]
 				}],
 				"user_mentions": [],
 				"symbols": []
 			}
 		},
 		"quote_count": 4,
 		"reply_count": 5,
 		"retweet_count": 31,
 		"favorite_count": 123,
 		"entities": {
 			"hashtags": [{
 					"text": "DEVcommunity",
 					"indices": [
 						85,
 						98
 					]
 				},
 				{
 					"text": "Pythontutorial",
 					"indices": [
 						99,
 						114
 					]
 				}
 			],
 			"urls": [{
 				"url": "https://t.co/pL0qJ4vhtE",
 				"expanded_url": "https://x.com/i/web/status/1195000047089389573",
 				"display_url": "x.com/i/web/status/1…",
 				"indices": [
 					116,
 					139
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		},
 		"favorited": false,
 		"retweeted": false,
 		"possibly_sensitive": false,
 		"filter_level": "low",
 		"lang": "en"
 	},
 	"quoted_status_permalink": {
 		"url": "https://t.co/dXrJYvn3hY",
 		"expanded": "https://x.com/AureliaSpecker/status/1195000047089389573",
 		"display": "x.com/AureliaSpecker…"
 	},
 	"is_quote_status": true,
 	"quote_count": 0,
 	"reply_count": 0,
 	"retweet_count": 0,
 	"favorite_count": 0,
 	"entities": {
 		"hashtags": [],
 		"urls": [],
 		"user_mentions": [{
 			"screen_name": "AureliaSpecker",
 			"name": "Aurelia Specker",
 			"id": 1102321381,
 			"id_str": "1102321381",
 			"indices": [
 				3,
 				18
 			]
 		}],
 		"symbols": []
 	},
 	"favorited": false,
 	"retweeted": false,
 	"filter_level": "low",
 	"lang": "en",
 	"matching_rules": [{
 		"tag": null
 	}]
 }

エンタープライズ Activity Streams データオブジェクト

Activity Streams のデータ形式が X API v2 の形式にどのようにマッピングされるか、詳しく知りたい方へ。
比較ガイドをご覧ください: Activity Streams と X API v2 の比較
ご留意ください: エンタープライズ向けのデータ API では、Enriched Native 形式の利用を強く推奨します。 
  • Enriched Native 形式には、poll metadata をはじめとする 2017 年以降の新しいメタデータや、reply_count、quote_count などの追加メトリクスがすべて含まれます。
  • Activity Streams 形式は、2017 年の文字数更新以降、新しいメタデータやエンリッチメントで更新されていません。

アクティビティオブジェクト

Activity Streams は、Gnip によって作成された、X の元のデータ形式をオブジェクトスキーマへ写像したもので、サードパーティのActivity Base Schema(説明はこちら)を用いて Post データや他のソーシャルメディアデータの「形式の正規化」を目的としています。Post はアクティビティストリームのスキーマに正規化され、ネストされたオブジェクトとして note、person、place、service といったオブジェクトタイプを含みます。Post には、Retweet のためのネストされた Post アクティビティオブジェクトや、twitter_quoted_status、long_object などが含まれる場合があります。 ベースレベルのオブジェクトタイプ「activity」は、ネイティブ拡張形式におけるPost のベースレベルオブジェクトに類似しています。アクティビティストリーム形式のペイロード例はこちらをご参照ください。

データ辞書

以下では、これらの「ルートレベル」の “activity” 属性に関するデータ辞書と、子オブジェクトのデータ辞書へのリンクを示します。
アトリビュートタイプ概要
idstringPost の一意な IRI。詳しくは、“タグ”はスキームです。“search.x.com”スキームのドメインを表し、2005 はそのスキームが策定された年です。
Posts を保存する際は、これを一意の識別子または主キーとして使用してください。
“id”:“tag:search.x.com,2005:1050118621198921728”
objectType文字列オブジェクトの種類。常に「activity」に設定”アクティビティ”
“objectType”:“アクティビティ”
オブジェクトオブジェクト投稿中または共有中のPostを表すオブジェクト。
リツイートの場合、これには全体が含まれます”アクティビティ”, 該当するfieldsはこのスキーマで説明されています。
オリジナルのPostの場合、ここには”注記”ここで説明されているfieldsを含むobjectです。
“オブジェクト”:
“オブジェクト”:
“object_type”:“注記”、
“id”:“object:search.x.com,2005:1050118621198921728”、
“概要”:“表現の幅を広げるため、性別や肌の色の修飾子を含むものも含め、すべての絵文字を同じようにカウントすることにします…https://t.co/MkGjXf9aXm”,
“リンク”:“http://x.com/API/statuses/1050118621198921728”、
“postedTime”:“2018-10-10T20:19:24.000Z”
long_オブジェクトオブジェクトPost のテキストが140文字を超える場合に、全文を表すオブジェクト。


“長い_オブジェクト”:
“本文”:“より豊かな表現を可能にするため、絵文字は性別や肌の色の修飾子付きも含め、すべて同一にカウントするようになりました 👍🏻👍🏽👍🏿。これは、当社のオープンソースライブラリである Twitter-Text に反映されています。 \n\nTwitter-Text をお使いですか?詳しくはフォーラムの投稿をご覧ください:https://t.co/Nx1XZmRCXA”、
“ディスプレイ_テキスト_レンジ”: [
0,
277
],
“Twitter_エンティティー”:
“ハッシュタグ”: [],
“URL”: [

“URL”:“https://t.co/Nx1XZmRCXA”、
“展開_URL”:“https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607”、
“ディスプレイ_URL”:“devcommunity.com/t/new-update-t…”、
“インデックス”: [
254、
277
]

],
“ユーザー_メンション”: [],
“記号”: []

表示_テキスト_レンジ配列Postテキストが140文字を超える場合。


“表示_テキスト_範囲”: [
0,
142
]
動詞stringユーザーが実行するアクションの種類。
投稿は “post”
リツイートは “share”
削除された投稿は “delete”
この「動詞」により、Tweet と真のリツイートを正しく区別できます。ただし、これは真のリツイートにのみ適用され、X のリツイート機能を使わない改変済みまたは引用された Tweet には適用されません。AS の動詞の説明は
こちらをクリック.
削除では、以下のサンプルペイロードに示すとおり、含まれる fields は限られる点にご留意ください。
“動詞”:“ポスト”
postedTime日付(ISO 8601形式)アクションが発生した時刻。例:Post が投稿された時刻。


“postedTime”:“2018-10-10T20:19:24.000Z”
ジェネレーターオブジェクトPostを投稿するために使用されたユーティリティを表すオブジェクト。これには、名前(“表示名”)とリンク(“リンク”)は、Post を生成するソースのアプリ向けです。
“ジェネレータ”:
“表示名”:“X Web クライアント”、
“リンク”:“http://x.com
プロバイダオブジェクトアクティビティの提供元を表す JSON オブジェクト。これには objectType (“サービス”)、プロバイダの名称(“表示名”)、および提供元へのリンク’のウェブサイト(“リンク”)。
“プロバイダ”:

“objectType”:“サービス”、
“表示名”:“X”、
“リンク”:“http://www.x.com
リンクstringPost のパーマリンク。
“リンク”:“http://x.com/API/statuses/1050118621198921728
本文stringPost の本文。

リツイートでは、X がルートレベルの body の値に次を追加して変更する点に注意してください”RT @username”文頭に「RT @username」を付け、元のテキストを切り詰めて末尾に三点リーダー(…)を加えます。したがって、Retweet の場合は、アプリで object.body を参照し、元の Post(リツイート対象)の改変されていないテキストを抽出していることを確認してください。
“本文”:“チャンピオンシップから昇格してきたカーディフ、クリスタル・パレス、ハル・シティの参入で、シーズン終盤は激しい残留争いになりそうだ。“
ディスプレイ_テキスト_範囲配列本文中で、表示対象となる Post を示す文字範囲を説明します。先頭に @メンションがある Post の開始位置は 0 より大きくなり、メディアが添付されている場合や 140 文字を超える Post では、表示範囲が示されます_テキスト_long オブジェクト内の range_オブジェクト。

“ディスプレイ_テキスト_範囲”: [
14,
42
]
または
”長期間_オブジェクト”:
“表示_テキスト_レンジ”: [
0、
277
]…
アクタオブジェクト投稿した X ユーザーを表すオブジェクト。Actor Object は X ユーザーを指し、そのユーザーに関するすべてのメタデータを含みます。
参照
アクターオブジェクトの詳細
in_reply_toオブジェクト該当する場合、返信先のPostを参照するJSONオブジェクトです。Postへのリンクを含みます。
“in_reply_to”:

“リンク”:“http://x.com/GOP/statuses/349573991561838593
場所オブジェクトXプラットフォームからそのまま受け渡される、Post が作成された X の「Place」を表す JSON オブジェクト。

詳細は
locationオブジェクト
Twitter_エンティティオブジェクトX の entities オブジェクト’X のネイティブな data 形式に含まれる entities オブジェクトで、urls、mentions、hashtags のリストを持ちます。Entities については X のドキュメントを参照してください。Retweet では、X がルートレベルで抽出した entities の値を省略(切り詰め)する場合があります。したがって、Retweet の場合は、アプリで object.twitter_entities を参照してください。_非切り詰めの値を使用していることを確認するために、entities を参照してください。

X を参照_entities オブジェクトの詳細
X(旧Twitter)_拡張版_エンティティオブジェクトX のオブジェクト’のネイティブなデータ形式に含まれる”メディア”。これは、Post に対して Twitter(現 X)の_entities オブジェクトに data が存在する場合”メディア”フィールドであり、Post に複数の写真がある場合はそれらをすべて含みます。なお、複数写真の Post のメディア情報はここから取得するのが正しい方法です。

複数の写真は、“media” 配列内でカンマ区切りの JSON オブジェクトとして表現されます。“メディア”配列。

参照してくださいtwitter_extended_entities オブジェクト詳細
Gnipオブジェクトアクティビティのペイロードに追加され、マッチしたルールを示し、ストリームまたは製品で有効なエンリッチメントに基づく拡張データが付与されるオブジェクト。

参照してくださいgnip オブジェクトの詳細
編集_履歴オブジェクトPost のすべてのバージョンを示す一意の識別子。編集されていない Post には ID が 1 つだけ存在します。編集履歴がある Post には複数の ID があり、編集の順序を反映して昇順に並び、配列の最後の要素が最新バージョンになります。

Postのidを使用すると、過去のバージョンのPostを復元して表示できます。

例:

編集_履歴”:
“初期値_Tweet_id”:“1283764123”
“編集_Tweet_ids”: [“1283764123”,“1394263866”]
編集_コントロール項目オブジェクト存在する場合、Postの残り編集可能時間と残り編集回数を示します。Postは作成後30分間のみ編集でき、最大5回まで編集可能です。

Post の ID は、Post の過去バージョンを再生成(ハイドレート)して表示するために使用できます。

例:

“編集_コントロール”:
“編集可能_まで_ms”: 123
“編集内容_残り”: 3
編集可ブール型存在する場合、公開時点でPostが編集対象だったかどうかを示します。このフィールドは動的ではなく、Postが編集可能な時間制限や編集回数の上限に達しても、TrueからFalseに切り替わることはありません。次の特性がある場合、このフィールドはfalseになります:

* Postがプロモーション中である
* Postに投票が含まれる
* Postが自己スレッド以外への返信である
* Postがリツイートである(引用Postは編集対象)
* Postがnullcastである
* コミュニティPostである
* Super FollowのPostである
* 共同作成されたPostである’Post が編集可能な時間制限または最大編集回数に達すると、t トグルは True から False に切り替わります。次の Post の機能がある場合、このフィールドは false になります:

- Postがプロモートされています
- Post に投票がある
- Post は自己スレッドではない返信である
- Post がリツイートである(引用Tweetは編集可能である点に注意)
- Post は nullcast です
- コミュニティPost
- Super FollowのPost
- 共同のPost

追加の Post 属性

属性説明
twitter_langstring
favoritesCountintnull 可能。 この Post が X ユーザーに「いいね」されたおおよその回数を示します。

“favoritesCount”:298
retweetCountintこの Post がリツイートされた回数。例:

“retweetCount”:153

非推奨の属性

フィールド説明
geoobjectPost が作成された地点の位置情報。
twitter_filter_levelstring互換性を損なわないように残されている非推奨フィールド

入れ子の Post アクティビティオブジェクト

いくつかのケースでは、Post オブジェクトに他の入れ子の Post が含まれます。入れ子のオブジェクトを扱う場合、その JSON ペイロードには複数のオブジェクトが含まれ、各 Post オブジェクトがそれぞれ独自のオブジェクトを持つ場合があります。ルートレベルのオブジェクトには、Retweet なのか Quote Tweet なのかといった実行されたアクションの種類に関する情報が含まれ、共有されている「original」Post を記述するオブジェクトが含まれる場合もあります。Extended Posts には、2017 年のアップデート時に互換性の破壊を避けるために用いられた、140 文字を超える内容を保持する入れ子の拡張オブジェクトが含まれます。各入れ子オブジェクトのディクショナリについては以下で説明します。 Retweets Retweets のアクティビティストリーム形式には、Retweet されている元の Post を表すための、タイプ「activity」と動詞「note」を持つ入れ子のオブジェクトが含まれます。
{
	"id": "tag:search.x.com,2005:222222222222",
	"objectType": "activity",
	"verb": "share",
	"body": "RT @TheOriginalTweeter: Coffee and art ☕️",
	"actor": {
		"displayName": "TheRetweeter"
	},
	"object": {
		"id": "tag:search.x.com,2005:11111111111",
		"objectType": "activity",
		"verb": "post",
		"body": "Coffee and art ☕️",
		"actor": {
			"displayName": "TheOriginalTweeter"
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:11111111111",
			"summary": "Coffee and art ☕️",
			"link": "http://x.com/originaltweeter/statuses/11111111111",
			"postedTime": "2020-12-04T11:00:01.000Z"
		},
		"twitter_entities": {},
		"twitter_extended_entities": {}
	},
	"twitter_entities": {},
	"twitter_extended_entities": {},
	"gnip": {}
}
X の引用ステータス Activity Streams 形式で埋め込まれた引用Tweet { "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": {} } } リツイートされた引用Tweet:
    {
    	"id": "tag:search.x.com,2005:1293612267087384577",
    	"objectType": "activity",
    	"verb": "share",
    	"postedTime": "2020-08-12T18:16:13.000Z",
    	"generator": {},
    	"provider": {},
    	"link": "http://x.com/XDevelopers/statuses/1293612267087384577",
    	"body": "RT @compston: So excited to make this first set of endpoints available - many more to come before we're done. The @XDevelopers #DevRel team…",
    	"actor": {},
    	"object": {},
    	"favoritesCount": 0,
    	"twitter_entities": {},
    	"twitter_lang": "en",
    	"retweetCount": 13,
    	"gnip": {},
    	"twitter_filter_level": "low",
    	"twitter_quoted_status": {}
    }

ロングオブジェクト

extended_tweet の Activity Streams 形式
{
  "id": "tag:search.x.com,2005:1050118621198921728",
  "objectType": "activity",
  "verb": "post",
  "postedTime": "2018-10-10T20:19:24.000Z",
  "generator": {
    "displayName": "X Webクライアント",
    "link": "http://x.com"
  },
  "provider": {
    "objectType": "service",
    "displayName": "X",
    "link": "http://www.x.com"
  },
  "link": "http://x.com/API/statuses/1050118621198921728",
  "body": "より多様な表現を可能にするため、性別や肌の色を含むすべての絵文字を同等にカウントするようになりました… https://t.co/MkGjXf9aXm",
  "long_object": {
    "body": "より多様な表現を可能にするため、性別や肌の色の修飾子を含むすべての絵文字を同等にカウントするようになりました 👍🏻👍🏽👍🏿。この変更は、当社のオープンソースライブラリであるTwitter-Textに反映されています。\n\nTwitter-Textをご利用の場合は、詳細についてフォーラムの投稿をご覧ください: https://t.co/Nx1XZmRCXA",
    "display_text_range": [
      0,
      277
    ],
    "twitter_entities": {twitter_entitiesオブジェクトを参照},
  "actor": {actorオブジェクトを参照},
  "object": {
    "objectType": "note",
    "id": "object:search.x.com,2005:1050118621198921728",
    "summary": "より多様な表現を可能にするため、性別や肌の色を含むすべての絵文字を同等にカウントするようになりました… https://t.co/MkGjXf9aXm",
    "link": "http://x.com/API/statuses/1050118621198921728",
    "postedTime": "2018-10-10T20:19:24.000Z"
  },
  "favoritesCount": 298,
  "twitter_entities": {twitter_entitiesオブジェクトを参照},
  "twitter_lang": "en",
  "retweetCount": 153,
  "gnip": {gnipオブジェクトを参照},
  "twitter_filter_level": "low"
}

Actor object

Actor object には、アクティビティを作成した X ユーザーを示す X ユーザーアカウントのメタデータが含まれます。

データディクショナリ

属性説明
objectTypestring”objectType”: “person”
idstringこの作成者の一意の識別子を表す文字列。例:

“id:x.com:2244994945”
linkhttp://www.x.com/XDeveloeprs
displayNameStringユーザーが定義した名前。必ずしも人物の実名ではありません。通常は50文字までですが、変更される可能性があります。例:

“displayName”: “XDevelopers”
preferredUsernamestringこのユーザーが自身を識別するスクリーン名、ハンドル、またはエイリアス。一意ですが変更される可能性があります。可能な限り id をユーザー識別子として使用してください。通常は最大15文字ですが、一部の古いアカウントはより長い名前を持つ場合があります。例:

“preferredUsername”: “XDevelopers”
locationobject** “location”:

“objectType”:** “place”,

“displayName”: “127.0.0.1”

** }**
linksarrayNull許容 。ユーザーがプロフィールに関連付けて提供したURL。例:

** “links”: [

{

“href”:** “https://developer.x.com/en/community,

“rel”: “me”

** }

]**
summarystringNull許容 。ユーザーが定義したアカウントを説明するUTF-8文字列。例:

“summary”: “The voice of the #XDevelopers team…“
protectedBooleantrueの場合、このユーザーがポストを非公開に設定していることを示します。公開ポストと非公開ポストについてを参照してください。例:

“protected”: true
verifiedBooleantrueの場合、ユーザーが認証済みアカウントを持っていることを示します。認証済みアカウントを参照してください。例:

“verified”: false
followersCountIntこのアカウントが現在持っているフォロワーの数。特定の負荷状況下では、このフィールドは一時的に「0」を示します。例:

“followers_count”: 21
friendsCountIntこのアカウントがフォローしているユーザーの数(「フォロー中」とも呼ばれます)。特定の負荷状況下では、このフィールドは一時的に「0」を示します。例:

“friends_count”: 32
listedCountIntこのユーザーがメンバーとなっている公開リストの数。例:

“listed_count”: 9274
favoritesCountIntこのユーザーがアカウントの存続期間中にいいねしたポストの数。歴史的な理由により、フィールド名には英国式のスペルが使用されています。例:

“favourites_count”: 13
statusesCountIntユーザーが発行したポスト(リポストを含む)の数。例:

“statuses_count”: 42
postedTimedateユーザーアカウントがXで作成されたUTC日時。例:

“postedTime”: “2013-12-14T04:35:55.036Z”
imagestringユーザーのプロフィール画像を指すHTTPSベースのURL。例:

“image”:https://pbs.twimg.com/profile&#95;images/1283786620521652229/lEODkLTh&#95;normal.jpg

サポート終了(非推奨)の属性

フィールド説明
utcOffsetnull値は null に設定されます。引き続き GET account/settings で利用可能です
twitterTimeZonenull値は null に設定されます。tzinfo_name として引き続き GET account/settings で利用可能です
languagesnull値は null に設定されます。language として引き続き GET account/settings で利用可能です

例:

			"actor": {
        "objectType": "person",
        "id": "id:twitter.com:2244994945",
        "link": "http://www.x.com/XDevelopers",
        "displayName": "X Dev",
        "postedTime": "2013-12-14T04:35:55.036Z",
        "image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "summary": "#XDevelopers チームの公式アカウントです。#XAPI に関する最新情報、ニュース、イベント情報をお届けします。",
        "friendsCount": 2039,
        "followersCount": 512197,
        "listedCount": 1662,
        "statusesCount": 3632,
        "twitterTimeZone": null,
        "verified": true,
        "utcOffset": null,
        "preferredUsername": "XDevelopers",
        "languages": [],
        "links": [
          {
            "href": "https://developer.x.com/en/community",
            "rel": "me"
          }
        ],
        "location": {
          "objectType": "place",
          "displayName": "127.0.0.1"
        },
        "favoritesCount": 2147
      }
"actor": {
    "objectType": "person",
    "id": "id:twitter.com:6253282",
    "link": "http://www.x.com/API",
    "displayName": "X API",
    "postedTime": "2007-05-23T06:01:13.000Z",
    "image": "https://pbs.twimg.com/profile_images/942858479592554497/BbazLO9L_normal.jpg",
    "summary": "変更やサービス障害に関するポスト。詳細は@XDevelopersをフォローしてください。",
    "friendsCount": 39,
    "followersCount": 6054164,
    "listedCount": 12285,
    "statusesCount": 3689,
    "twitterTimeZone": null,
    "verified": true,
    "utcOffset": null,
    "preferredUsername": "API",
    "languages": [

    ],
    "links": [
      {
        "href": "https://developer.x.com",
        "rel": "me"
      }
    ],
    "favoritesCount": 4
  }

Location オブジェクト

Location オブジェクトは、X アカウントレベルで設定された actor オブジェクト内、または gnip オブジェクト の profileLocations オブジェクト内に存在する場合があります。Location オブジェクトは place オブジェクトタイプで、name、address、または geo 座標を持てます。Location オブジェクトは、ネイティブ拡張形式の Geo と類似しています。

位置データ辞書

フィールド説明
objectTypestring詳細はこちらを参照。例:

“objectType”: “place”
displayNamestring位置の完全名称。

“displayName”: “United States”
namestringX の place JSON 形式における位置名。
linkstring当該場所の完全な X の JSON 表現へのリンク。

“link”:https://api.x.com/1.1/geo/id/27c45d804c777999.json
geoobjectX の地理座標オブジェクト。ポリゴンまたはポイント。

geoを参照
countryCodeStringこの場所を含む国を表す短縮された国コード。例:

“countryCode”: “US”
countryStringこの場所を含む国名。例:

“country”: “United States”

profileLocations の派生オブジェクト

FieldType説明
addressobjectgnip object の profileLocation の location オブジェクト内。 profile geo enrichment によって推定された所在地の住所。 詳細度は場合により異なります。

“address”: {

**          “country”: “United States”,

          “countryCode”: “US”,

          “locality”: “Providence”,

          “region”: “Rhode Island”,

          “subRegion”: “Providence County”

        }**
geoobjectgnip object の profileLocation の location オブジェクト内。 profile geo enrichment によって推定された所在地の重心座標。

“geo”: {

**          “coordinates”: [

-98.5
,

39.76

          ],

          “type”: “point”

        }**
	"location": {
    "objectType": "place",
    "displayName": "カンザス州、アメリカ",
    "name": "カンザス州",
    "country_code": "アメリカ合衆国",
    "twitter_country_code": "US",
    "twitter_place_type": "admin",
    "link": "https://api.x.com/1.1/geo/id/27c45d804c777999.json",
    "geo": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -102.051769,
            36.99311
          ],
          [
            -102.051769,
            40.003282
          ],
          [
            -94.588081,
            40.003282
          ],
          [
            -94.588081,
            36.99311
          ]
        ]
      ]
    }
    "location": {
      "objectType": "place",
      "displayName": "カリフォルニア州、米国"
    }

X entities オブジェクト

Activity Streams フォーマットでは、twitter_entities は、ネイティブの拡張フォーマットで示されている entities オブジェクト と同一のフォーマットおよびデータ辞書です。

例:

"twitter_entities": {
	"hashtags": [{
		"text": "API",
		"indices": [
			228,
			239
		]
	}],
	"urls": [{
		"url": "https://t.co/r6z6CI7kEy",
		"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
		"display_url": "devcommunity.com/t/retiring-lab…",
		"indices": [
			250,
			273
		]
	}],
	"user_mentions": [],
	"symbols": []
}

X 拡張エンティティオブジェクト

Activity Streams 形式では、twitter_extended_entities は、ネイティブ拡張フォーマットの extended_entities オブジェクトに示されているものと同一の形式およびデータ辞書です。

例:

"twitter_extended_entities":{
	"media": [{
		"id": 1293565706408038400,
		"id_str": "1293565706408038401",
		"indices": [
			219,
			242
		],
		"additional_media_info": {
			"monetizable": false
		},
		"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
		"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
		"url": "https://t.co/KaFSbjWUA8",
		"display_url": "pic.x.com/KaFSbjWUA8",
		"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
		"type": "video",
		"video_info": {
			"aspect_ratio": [
				16,
				9
			],
			"duration_millis": 34875,
			"variants": [{
					"bitrate": 256000,
					"content_type": "video/mp4",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
				},
				{
					"bitrate": 832000,
					"content_type": "video/mp4",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
				},
				{
					"content_type": "application/x-mpegURL",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
				},
				{
					"bitrate": 2176000,
					"content_type": "video/mp4",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
				}
			]
		},
		"sizes": {
			"thumb": {
				"w": 150,
				"h": 150,
				"resize": "crop"
			},
			"medium": {
				"w": 1200,
				"h": 675,
				"resize": "fit"
			},
			"small": {
				"w": 680,
				"h": 383,
				"resize": "fit"
			},
			"large": {
				"w": 1280,
				"h": 720,
				"resize": "fit"
			}
		}
	}]
}

Gnip オブジェクト

Activity Streams 形式の gnip オブジェクトには、実行中のエンリッチメントによって追加されたメタデータに加え、そのアクティビティにマッチしたルールの情報が含まれます。

データ辞書

フィールド説明
matching_rulesarrayアクティビティがどのルールに一致したかを示すマッチングルールオブジェクトの配列。
“matching_rules”: [

**      {

        “tag”: null,

“id”:** 1026514022567358500**,

“id_str”:** “1026514022567358464”

**      }

    ]**
urlsarrayアクティビティ内のリンクの配列と、URL アンワインド拡張のための展開済み URL メタデータ。

**    “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”

**      }

    ]**
profileLocationsarray of location objectsProfile Geo 拡張により導出されたロケーションオブジェクトの配列。

**    “profileLocations”: [

      {

        “address”: {

“country”:** “Canada”,

“countryCode”: “CA”,

“locality”: “Toronto”,

“region”: “Ontario”

**        },

“displayName”:** “Toronto, Ontario, Canada”,

**        “geo”: {

          “coordinates”: [

-79.4163
,

43.70011

          ],

“type”:** “point”

**        },

“objectType”:** “place”

**      }

    ]

  }**

例:

	"gnip": {
    "matching_rules": [
      {
        "tag": null
      }
    ],
    "urls": [
      {
        "url": "https://t.co/Nx1XZmRCXA",
        "expanded_url": "https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607",
        "expanded_status": 200,
        "expanded_url_title": null,
        "expanded_url_description": null
      }
    ]
  }

アクティビティストリームのペイロード例

Post のアクティビティ
{
	"id": "tag:search.x.com,2005:1307025659294674945",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-09-18T18:36:15.000Z",
	"generator": {
		"displayName": "X Webアプリ",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1307025659294674945",
	"body": "新しい Tweet ペイロード v2 の更新点を解説した記事です https://t.co/oeF3ZHeKQQ",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "#XDevelopers チームの声であり、#XAPI に関するアップデート、ニュース、イベントの公式情報源です。",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1307025659294674945",
		"summary": "新しい Tweet ペイロード v2 の更新点を解説した記事です https://t.co/oeF3ZHeKQQ",
		"link": "http://x.com/XDevelopers/statuses/1307025659294674945",
		"postedTime": "2020-09-18T18:36:15.000Z"
	},
	"inReplyTo": {
		"link": "http://x.com/XDevelopers/statuses/1304102743196356610"
	},
	"favoritesCount": 70,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"display_url": "dev.to/twitterdev/und…",
			"indices": [
				74,
				97
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 11,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"expanded_status": 200,
			"expanded_url_title": "X API v2 における新しい Tweet ペイロードの理解",
			"expanded_url_description": "X は最近、新機能を提供するために基盤から再構築した新しい X API v2 を発表しました..."
		}]
	},
	"twitter_filter_level": "低"
}
返信 Post のアクティビティ
{
	"id": "tag:search.x.com,2005:1296887316556980230",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-21T19:10:05.000Z",
	"generator": {
		"displayName": "X Webアプリ",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296887316556980230",
	"body": "@PennMedCDHがXのデータを活用してCOVID-19の健康危機を分析している様子をご覧ください 📊\n\nhttps://t.co/1tdA8uDWes",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "#XDevelopersチームの公式アカウントです。#APIに関する最新情報、ニュース、イベント情報をお届けします。",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1296887316556980230",
		"summary": "@PennMedCDHがXのデータを活用してCOVID-19の健康危機を分析している様子をご覧ください 📊\n\nhttps://t.co/1tdA8uDWes",
		"link": "http://x.com/XDevelopers/statuses/1296887316556980230",
		"postedTime": "2020-08-21T19:10:05.000Z"
	},
	"inReplyTo": {
		"link": "http://x.com/XDevelopers/statuses/1296887091901718529"
	},
	"favoritesCount": 26,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"display_url": "developer.x.com/en/use-cases/s…",
			"indices": [
				87,
				110
			]
		}],
		"user_mentions": [{
			"screen_name": "PennMedCDH",
			"name": "Penn Med CDH",
			"id": 1615654896,
			"id_str": "1615654896",
			"indices": [
				8,
				19
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 9,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"expanded_status": 200,
			"expanded_url_title": "ペンシルベニア大学医学部デジタルヘルスセンター",
			"expanded_url_description": "ペンシルベニア大学医学部デジタルヘルスセンターは、COVID-19に関するXマップを作成しました。このマップには、感情分析、報告された症状、州別データ、COVID-19アウトブレイクに関する国境データを詳細に示すチャートが含まれています。さらに、Penn Med With Youイニシアチブでは、Xから収集した地域別の集計情報を活用し、ウェブサイトとテキストメッセージサービスで情報を提供しています。このサービスでは、これらの情報を基に、関連性が高くタイムリーなリソースを配信しています。"
		}]
	},
	"twitter_filter_level": "low"
}
long_object を含む Post のアクティビティ
{
	"id": "tag:search.x.com,2005:1296121314218897408",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-19T16:26:16.000Z",
	"generator": {
		"displayName": "X Web App",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296121314218897408",
	"body": "返信を非表示にするエンドポイントが本日公開されます!\n\n開発者はポストへの返信を非表示にできます - これは開発者が… https://t.co/VyfXs1RTXn",
	"long_object": {
		"body": "返信を非表示にするエンドポイントが本日公開されます!\n\n開発者はポストへの返信を非表示にできます - これは開発者が#XAPIを使用して公開会話の健全性を向上させるための重要な手段です。\n\nhttps://t.co/khXhTurm9x",
		"display_text_range": [
			0,
			215
		],
		"twitter_entities": {
			"hashtags": [{
				"text": "API",
				"indices": [
					178,
					189
				]
			}],
			"urls": [{
				"url": "https://t.co/khXhTurm9x",
				"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
				"display_url": "devcommunity.com/t/hide-replies…",
				"indices": [
					192,
					215
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "#XDevelopersチームの公式アカウントであり、#XAPIに関するアップデート、ニュース、イベントの公式情報源です。",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1296121314218897408",
		"summary": "返信を非表示にするエンドポイントが本日公開されます!\n\n開発者はポストへの返信を非表示にできます - これは開発者が… https://t.co/VyfXs1RTXn",
		"link": "http://x.com/XDevelopers/statuses/1296121314218897408",
		"postedTime": "2020-08-19T16:26:16.000Z"
	},
	"favoritesCount": 172,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/VyfXs1RTXn",
			"expanded_url": "https://x.com/i/web/status/1296121314218897408",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 54,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/khXhTurm9x",
			"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
			"expanded_status": 200,
			"expanded_url_title": "新しいX APIで返信の非表示機能が利用可能になりました",
			"expanded_url_description": "本日、新しいX APIにおける返信非表示エンドポイントの一般提供開始を発表いたします。返信非表示エンドポイントを使用すると、ユーザーが自分のポストへの返信を非表示または再表示できるツールを構築できます。ユーザーは、不適切、注意をそらす、誤解を招くコメントへの注目を減らしたり、会話をより魅力的にするためなど、さまざまな理由で返信を管理します。このエンドポイントを通じて、Xのユーザーがより迅速かつ効率的に返信を非表示または再表示できるツールを構築できます..."
		}]
	},
	"twitter_filter_level": "low"
}
twitter_extended_entities を使用したPostのアクティビティ
{
	"id": "tag:search.x.com,2005:1293593516040269825",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-12T17:01:42.000Z",
	"generator": {
		"displayName": "X Webアプリ",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1293593516040269825",
	"body": "ついに登場!🥁 新しい#XAPIをご紹介します。\n\nX API v2を一から再構築し、開発者コミュニティにより良いサービスを提供します… https://t.co/UeCndQGMjx",
	"long_object": {
		"body": "ついに登場!🥁 新しい#XAPIをご紹介します。\n\nX API v2を一から再構築し、開発者コミュニティにより良いサービスを提供します。そして本日のローンチは始まりに過ぎません。\n\nhttps://t.co/32VrwpGaJw https://t.co/KaFSbjWUA8",
		"display_text_range": [
			0,
			218
		],
		"twitter_entities": {
			"hashtags": [{
				"text": "API",
				"indices": [
					42,
					53
				]
			}],
			"urls": [{
				"url": "https://t.co/32VrwpGaJw",
				"expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
				"display_url": "blog.x.com/developer/en_u…",
				"indices": [
					195,
					218
				]
			}],
			"user_mentions": [],
			"symbols": [],
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		},
		"twitter_extended_entities": {
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		}
	},
	"display_text_range": [
		0,
		140
	],
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "#XDevelopersチームの公式アカウントであり、#TwitterAPIに関するアップデート、ニュース、イベント情報をお届けします。",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1293593516040269825",
		"summary": "ついに登場!🥁 新しい#APIをご紹介します。\n\nX API v2を一から再構築し… https://t.co/UeCndQGMjx",
		"link": "http://x.com/XDevelopers/statuses/1293593516040269825",
		"postedTime": "2020-08-12T17:01:42.000Z"
	},
	"favoritesCount": 2844,
	"twitter_entities": {
		"hashtags": [{
			"text": "API",
			"indices": [
				42,
				53
			]
		}],
		"urls": [{
			"url": "https://t.co/UeCndQGMjx",
			"expanded_url": "https://x.com/i/web/status/1293593516040269825",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 958,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/32VrwpGaJw",
			"expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
			"expanded_status": 200,
			"expanded_url_title": "新しく改良されたX APIのご紹介",
			"expanded_url_description": "新しいX APIのご紹介 - 一から再構築し、開発者がXで行われている公開会話に世界を繋げられるよう、より迅速に新機能を提供します。"
		}]
	},
	"twitter_filter_level": "low"
}
リツイートアクティビティ
{
	"id": "tag:search.x.com,2005:1229851574555508737",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-18T19:33:59.000Z",
	"generator": {
		"displayName": "X Webアプリ",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1229851574555508737",
	"body": "RT @suhemparack: I built an Alexa Skill for X using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it out her…",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "#XDevelopersチームの公式アカウントです。#XAPIに関する最新情報、ニュース、イベント情報をお届けします。",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"id": "tag:search.x.com,2005:1229843515603144704",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-18T19:01:58.000Z",
		"generator": {
			"displayName": "X Webアプリ",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/suhemparack/statuses/1229843515603144704",
		"body": "I built an Alexa Skill for X using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it… https://t.co/RP9NgltX7i",
		"long_object": {
			"body": "I built an Alexa Skill for X using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it out here 👇\n\nhttps://t.co/l5J8wq748G",
			"display_text_range": [
				0,
				150
			],
			"twitter_entities": {
				"hashtags": [],
				"urls": [{
					"url": "https://t.co/l5J8wq748G",
					"expanded_url": "https://dev.to/XDevelopers/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
					"display_url": "dev.to/twitterdev/bui…",
					"indices": [
						127,
						150
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:857699969263964161",
			"link": "http://www.x.com/suhemparack",
			"displayName": "Suhem Parack",
			"postedTime": "2017-04-27T20:56:22.883Z",
			"image": "https://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
			"summary": "@Xの学術研究向けデベロッパーリレーションズ担当。Xデータを活用した研究についてお気軽にご相談ください。前職: Amazon Alexa。発言は個人の見解です",
			"friendsCount": 501,
			"followersCount": 732,
			"listedCount": 12,
			"statusesCount": 458,
			"twitterTimeZone": null,
			"verified": false,
			"utcOffset": null,
			"preferredUsername": "suhemparack",
			"languages": [],
			"links": [{
				"href": "https://developer.x.com",
				"rel": "me"
			}],
			"location": {
				"objectType": "place",
				"displayName": "シアトル、ワシントン州"
			},
			"favoritesCount": 358
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1229843515603144704",
			"summary": "I built an Alexa Skill for X using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it… https://t.co/RP9NgltX7i",
			"link": "http://x.com/suhemparack/statuses/1229843515603144704",
			"postedTime": "2020-02-18T19:01:58.000Z"
		},
		"favoritesCount": 71,
		"twitter_entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/RP9NgltX7i",
				"expanded_url": "https://x.com/i/web/status/1229843515603144704",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					116,
					139
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	},
	"favoritesCount": 0,
	"twitter_entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "suhemparack",
			"name": "Suhem Parack",
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"indices": [
				3,
				15
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 19,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/l5J8wq748G",
			"expanded_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
			"expanded_status": 200,
			"expanded_url_title": null,
			"expanded_url_description": null
		}]
	},
	"twitter_filter_level": "low"
}
引用Tweetのアクティビティ
{
 	"id": "tag:search.x.com,2005:1328399838128467969",
 	"objectType": "activity",
 	"verb": "post",
 	"postedTime": "2020-11-16T18:09:36.000Z",
 	"generator": {
 		"displayName": "X Webアプリ",
 		"link": "https://mobile.x.com"
 	},
 	"provider": {
 		"objectType": "service",
 		"displayName": "X",
 		"link": "http://www.x.com"
 	},
 	"link": "http://x.com/XDevelopers/statuses/1328399838128467969",
 	"body": "予定通り、以下で参照されているLabs v2エンドポイントは廃止されました。ご質問がある場合やX API v2に関するサポートが必要な場合は、フォーラムでお知らせください… https://t.co/ahQvTYaOcZ",
 	"long_object": {
 		"body": "予定通り、以下で参照されているLabs v2エンドポイントは廃止されました。ご質問がある場合やX API v2に関するサポートが必要な場合は、フォーラムでお知らせください! https://t.co/JaxttUMmjX",
 		"display_text_range": [
 			0,
 			166
 		],
 		"twitter_entities": {
 			"hashtags": [],
 			"urls": [{
 				"url": "https://t.co/JaxttUMmjX",
 				"expanded_url": "https://x.com/XDevelopers/status/1327011423252144128",
 				"display_url": "x.com/XDevelopers/sta…",
 				"indices": [
 					167,
 					190
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		}
 	},
 	"display_text_range": [
 		0,
 		140
 	],
 	"actor": {
 		"objectType": "person",
 		"id": "id:twitter.com:2244994945",
 		"link": "http://www.x.com/XDevelopers",
 		"displayName": "X Dev",
 		"postedTime": "2013-12-14T04:35:55.036Z",
 		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 		"summary": "#XDevelopersチームの公式アカウントであり、#XAPIに関する最新情報、ニュース、イベントの公式情報源です。",
 		"friendsCount": 2038,
 		"followersCount": 512292,
 		"listedCount": 1666,
 		"statusesCount": 3634,
 		"twitterTimeZone": null,
 		"verified": true,
 		"utcOffset": null,
 		"preferredUsername": "XDevelopers",
 		"languages": [],
 		"links": [{
 			"href": "https://developer.x.com/en/community",
 			"rel": "me"
 		}],
 		"location": {
 			"objectType": "place",
 			"displayName": "127.0.0.1"
 		},
 		"favoritesCount": 2147
 	},
 	"object": {
 		"objectType": "note",
 		"id": "object:search.x.com,2005:1328399838128467969",
 		"summary": "予定通り、以下で参照されているLabs v2エンドポイントは廃止されました。ご質問がある場合やX API v2に関するサポートが必要な場合は、フォーラムでお知らせください… https://t.co/ahQvTYaOcZ",
 		"link": "http://x.com/XDevelopers/statuses/1328399838128467969",
 		"postedTime": "2020-11-16T18:09:36.000Z"
 	},
 	"favoritesCount": 29,
 	"twitter_entities": {
 		"hashtags": [],
 		"urls": [{
 			"url": "https://t.co/ahQvTYaOcZ",
 			"expanded_url": "https://x.com/i/web/status/1328399838128467969",
 			"display_url": "x.com/i/web/status/1…",
 			"indices": [
 				117,
 				140
 			]
 		}],
 		"user_mentions": [],
 		"symbols": []
 	},
 	"twitter_lang": "en",
 	"retweetCount": 7,
 	"gnip": {
 		"matching_rules": [{
 			"tag": null
 		}],
 		"urls": [{
 			"url": "https://t.co/r6z6CI7kEy",
 			"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
 			"expanded_status": 200,
 			"expanded_url_title": "Labs v2の最近の検索と返信の非表示の廃止",
 			"expanded_url_description": "早期アクセスと返信の非表示のお知らせで述べた通り、以下のX Developer Labs v2エンドポイントは11月16日に廃止されます。Labs v2の最近の検索 Labs v2の返信の非表示 これらのエンドポイントを呼び出すと、HTTP 410ステータスで応答し、データは返されません。Labsからのフィードバックに基づき、対応する機能をX API v2に組み込みました。関連ドキュメントは以下のリンクからご覧いただけます。まだ登録されていない場合は、こちらをクリックしてv2アクセスに登録してください...",
 		}]
 	},
 	"twitter_filter_level": "low",
 	"twitter_quoted_status": {
 		"id": "tag:search.x.com,2005:1327011423252144128",
 		"objectType": "activity",
 		"verb": "post",
 		"postedTime": "2020-11-12T22:12:32.000Z",
 		"generator": {
 			"displayName": "X Webアプリ",
 			"link": "https://mobile.x.com"
 		},
 		"provider": {
 			"objectType": "service",
 			"displayName": "X",
 			"link": "http://www.x.com"
 		},
 		"link": "http://x.com/XDevelopers/statuses/1327011423252144128",
 		"body": "👋 X Developer Labs v2の返信の非表示と最近の検索が来週月曜日、11月に廃止されることをお知らせします… https://t.co/EEWN2Q9aXh",
 		"long_object": {
 			"body": "👋 X Developer Labs v2の返信の非表示と最近の検索が来週月曜日、11月16日に廃止されることをお知らせします!v2 #XAPIで現在利用可能な新しい返信の非表示と最近の検索エンドポイントへの移行をお勧めします。詳細: https://t.co/r6z6CI7kEy",
 			"display_text_range": [
 				0,
 				273
 			],
 			"twitter_entities": {
 				"hashtags": [{
 					"text": "API",
 					"indices": [
 						228,
 						239
 					]
 				}],
 				"urls": [{
 					"url": "https://t.co/r6z6CI7kEy",
 					"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
 					"display_url": "devcommunity.com/t/retiring-lab…",
 					"indices": [
 						250,
 						273
 					]
 				}],
 				"user_mentions": [],
 				"symbols": []
 			}
 		},
 		"actor": {
 			"objectType": "person",
 			"id": "id:twitter.com:2244994945",
 			"link": "http://www.x.com/XDevelopers",
 			"displayName": "X Dev",
 			"postedTime": "2013-12-14T04:35:55.036Z",
 			"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 			"summary": "#XDevelopersチームの公式アカウントであり、#XAPIに関する最新情報、ニュース、イベントの公式情報源です。",
 			"friendsCount": 2038,
 			"followersCount": 512292,
 			"listedCount": 1666,
 			"statusesCount": 3634,
 			"twitterTimeZone": null,
 			"verified": true,
 			"utcOffset": null,
 			"preferredUsername": "XDevelopers",
 			"languages": [],
 			"links": [{
 				"href": "https://developer.x.com/en/community",
 				"rel": "me"
 			}],
 			"location": {
 				"objectType": "place",
 				"displayName": "127.0.0.1"
 			},
 			"favoritesCount": 2147
 		},
 		"object": {
 			"objectType": "note",
 			"id": "object:search.x.com,2005:1327011423252144128",
 			"summary": "👋 X Developer Labs v2の返信の非表示と最近の検索が来週月曜日、11月に廃止されることをお知らせします… https://t.co/EEWN2Q9aXh",
 			"link": "http://x.com/XDevelopers/statuses/1327011423252144128",
 			"postedTime": "2020-11-12T22:12:32.000Z"
 		},
 		"favoritesCount": 33,
 		"twitter_entities": {
 			"hashtags": [],
 			"urls": [{
 				"url": "https://t.co/EEWN2Q9aXh",
 				"expanded_url": "https://x.com/i/web/status/1327011423252144128",
 				"display_url": "x.com/i/web/status/1…",
 				"indices": [
 					117,
 					140
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		},
 		"twitter_lang": "en",
 		"twitter_filter_level": "low"
 	}
 }
リツイート済みの引用Tweetアクティビティ
{
	"id": "tag:search.x.com,2005:1225470895902412800",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-06T17:26:44.000Z",
	"generator": {
		"displayName": "X for iPhone",
		"link": "http://x.com/download/iphone"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1225470895902412800",
	"body": "RT @AureliaSpecker: 📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses…",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "#XDevelopers チームの公式アカウントであり、#XAPI に関する最新情報、ニュース、イベントの公式情報源です。",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"id": "tag:search.x.com,2005:1224709550214873090",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-04T15:01:25.000Z",
		"generator": {
			"displayName": "X Web App",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
		"body": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that u… https://t.co/cAepHunkFp",
		"long_object": {
			"body": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses X's new search endpoint 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @XDevelopers @API https://t.co/dXrJYvn3hY",
			"display_text_range": [
				0,
				229
			],
			"twitter_entities": {
				"hashtags": [{
						"text": "DEVcommunity",
						"indices": [
							176,
							189
						]
					},
					{
						"text": "Pythontutorial",
						"indices": [
							190,
							205
						]
					}
				],
				"urls": [{
						"url": "https://t.co/87XIPZmZBJ",
						"expanded_url": "https://bit.ly/2OrnrCC",
						"display_url": "bit.ly/2OrnrCC",
						"indices": [
							151,
							174
						]
					},
					{
						"url": "https://t.co/dXrJYvn3hY",
						"expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
						"display_url": "x.com/AureliaSpecker…",
						"indices": [
							230,
							253
						]
					}
				],
				"user_mentions": [{
						"screen_name": "XDevelopers",
						"name": "X Dev",
						"id": 2244994945,
						"id_str": "2244994945",
						"indices": [
							206,
							217
						]
					},
					{
						"screen_name": "API",
						"name": "X API",
						"id": 6253282,
						"id_str": "6253282",
						"indices": [
							218,
							229
						]
					}
				],
				"symbols": []
			}
		},
		"display_text_range": [
			0,
			140
		],
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:1102321381",
			"link": "http://www.x.com/AureliaSpecker",
			"displayName": "Aurelia Specker",
			"postedTime": "2013-01-18T23:45:43.000Z",
			"image": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
			"summary": "devrel @TwitterUK • ロンドン在住のスイス人 • 観葉植物の母 • @_dormrod 専属ヘアスタイリスト",
			"friendsCount": 1331,
			"followersCount": 1032,
			"listedCount": 26,
			"statusesCount": 854,
			"twitterTimeZone": null,
			"verified": false,
			"utcOffset": null,
			"preferredUsername": "AureliaSpecker",
			"languages": [],
			"links": [{
				"href": null,
				"rel": "me"
			}],
			"location": {
				"objectType": "place",
				"displayName": "ロンドン、英国"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1224709550214873090",
			"summary": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that u… https://t.co/cAepHunkFp",
			"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
			"postedTime": "2020-02-04T15:01:25.000Z"
		},
		"favoritesCount": 43,
		"twitter_entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/cAepHunkFp",
				"expanded_url": "https://x.com/i/web/status/1224709550214873090",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					117,
					140
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	},
	"favoritesCount": 0,
	"twitter_entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "AureliaSpecker",
			"name": "Aurelia Specker",
			"id": 1102321381,
			"id_str": "1102321381",
			"indices": [
				3,
				18
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 12,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
				"url": "https://t.co/87XIPZmZBJ",
				"expanded_url": "https://dev.to/XDevelopers/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			},
			{
				"url": "https://t.co/sOjXW4YhbN",
				"expanded_url": "https://dev.to/XDevelopers/using-the-twitter-api-to-make-your-commute-easier-3od0",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			}
		]
	},
	"twitter_filter_level": "low",
	"twitter_quoted_status": {
		"id": "tag:search.x.com,2005:1195000047089389573",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2019-11-14T15:26:27.000Z",
		"generator": {
			"displayName": "X Webアプリ",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1195000047089389573",
		"body": "X APIを使って通勤情報をカスタマイズして取得する方法のチュートリアルを書きました🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
		"long_object": {
			"body": "X APIを使って通勤情報をカスタマイズして取得する方法のチュートリアルを書きました🚇\n\n#DEVcommunity #Pythontutorial \n\nこちらからチェックしてください 👇\nhttps://t.co/sOjXW4YhbN",
			"display_text_range": [
				0,
				160
			],
			"twitter_entities": {
				"hashtags": [{
						"text": "DEVcommunity",
						"indices": [
							85,
							98
						]
					},
					{
						"text": "Pythontutorial",
						"indices": [
							99,
							114
						]
					}
				],
				"urls": [{
					"url": "https://t.co/sOjXW4YhbN",
					"expanded_url": "https://dev.to/XDevelopers/using-the-twitter-api-to-make-your-commute-easier-3od0",
					"display_url": "dev.to/twitterdev/usi…",
					"indices": [
						137,
						160
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:1102321381",
			"link": "http://www.x.com/AureliaSpecker",
			"displayName": "Aurelia Specker",
			"postedTime": "2013-01-18T23:45:43.000Z",
			"image": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
			"summary": "devrel @TwitterUK • ロンドン在住スイス人 • 観葉植物の母 • @_dormrodの専属美容師",
			"friendsCount": 1331,
			"followersCount": 1032,
			"listedCount": 26,
			"statusesCount": 854,
			"twitterTimeZone": null,
			"verified": false,
			"utcOffset": null,
			"preferredUsername": "AureliaSpecker",
			"languages": [],
			"links": [{
				"href": null,
				"rel": "me"
			}],
			"location": {
				"objectType": "place",
				"displayName": "ロンドン、英国"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1195000047089389573",
			"summary": "X APIを使って通勤情報をカスタマイズして取得する方法のチュートリアルを書きました🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
			"link": "http://x.com/AureliaSpecker/statuses/1195000047089389573",
			"postedTime": "2019-11-14T15:26:27.000Z"
		},
		"favoritesCount": 123,
		"twitter_entities": {
			"hashtags": [{
					"text": "DEVcommunity",
					"indices": [
						85,
						98
					]
				},
				{
					"text": "Pythontutorial",
					"indices": [
						99,
						114
					]
				}
			],
			"urls": [{
				"url": "https://t.co/pL0qJ4vhtE",
				"expanded_url": "https://x.com/i/web/status/1195000047089389573",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					116,
					139
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	}
}

Tweet メタデータタイムライン

このページのセクションへ移動 概要 主要な概念 X タイムライン フィルタリングのコツ 次のステップ

はじめに**

X は本質的に、公開・リアルタイム・グローバルのコミュニケーションネットワークです。2006年以降、X の進化は、ユーザーの利用パターンや慣習、新機能や機能拡張の双方によって促されてきました。歴史研究のために X のデータを使用する場合、この進化のタイムラインを把握することは、アーカイブから関心のある Post を見つけ出すうえで重要です。 X はシンプルな SMS モバイルアプリとして開始され、総合的なコミュニケーションプラットフォームへと成長しました。完全な API 群を備えたプラットフォームです。API は常に X ネットワークの柱でした。最初の API は X のローンチ直後に公開されました。2009年に Post へのジオタグ付与が初めて導入された際には、Geo API を通じて提供され(その後、Post をジオタグできる機能は X.com のユーザーインターフェースに統合されました)、現在では X の API が双方向のコミュニケーションネットワークを支え、速報や情報共有の基盤になっています。このグローバルかつリアルタイムな通信チャネルの上に構築できる機会は無限です。 X は、公開されているすべての Post へアクセスできる 2 つの履歴系 API、Historical PowerTrack と Full-Archive Search API を提供しています。両 API は、関心のある Post を検索・収集するための「オペレーター」群を提供します。これらのオペレーターは、各 Post に紐づく多様な属性、例えば Post の本文、投稿者のアカウント名、Post 内で共有されたリンクなど、数百におよぶ属性にマッチします。Post とその属性は、一般的なテキストベースのデータ交換フォーマットである JSON でエンコードされています。そのため、新機能が導入されるたびに新たな JSON 属性が追加され、通常はそれらの属性にマッチする新しい API オペレーターも導入されてきました。ユースケースとして X 上で世界が何を語ってきたかを「リッスン」する必要がある場合、各オペレーターがマッチ対象とする JSON メタデータがいつから付与され始めたかを理解しているほど、Historical PowerTrack フィルターをより効果的にできます。 続いて、Post メタデータの更新が関心のあるデータシグナルの発見にどのように影響するかを理解するための、いくつかの重要な概念を紹介します。

重要な概念**

ユーザー発の慣習からXの_ファーストクラス・オブジェクト_へ

Xのユーザーは、Xネットワークに自然発生的に新たな、そして今では不可欠なコミュニケーションパターンをもたらしてきました。端的な例がハッシュタグで、現在ではほぼすべてのソーシャルネットワークで広く使われています。ハッシュタグは会話やトピックを整理する手段として導入されました。1日に数億件のメッセージが流れるネットワークでは、関心のあるPostを見つけるためのツールが重要であり、ハッシュタグはその基本的な方法となりました。ハッシュタグの利用が広がると間もなく、Xはそれに公式な地位とサポートを与えました。ハッシュタグが_「ファーストクラス」オブジェクト_になったということは、さまざまな意味を持ちます。X.comのユーザーインターフェースでハッシュタグがクリック可能/検索可能になったことを意味します。また、ハッシュタグが@mentions、添付メディア、株式シンボル、共有リンクと並んで、Xの_entities_ファミリーの一員になったことも意味します。これらのエンティティは、事前にパースされたJSON配列に整然とエンコードされており、開発者がそれらを処理・スキャン・保存しやすくなっています。 Retweetは、ユーザー発の慣習が公式オブジェクトになったもう一つの例です。Retweetはコンテンツを他者に「転送」する方法として生まれました。もともとは、Postをコピー&ペーストし、先頭に「RT @」というパターンを付ける手動の手順でした。やがてこの手順は新しいRetweetボタンによって自動化され、新たなJSONメタデータも付与されました。こうして「公式の」Retweetが誕生しました。その他の例としては、「メンション」、メディアやウェブリンクの共有、そしてPostに位置情報を添えることなどがあります。これらの各利用パターンは、新たなx.comのユーザーインターフェース機能、新たな対応するJSON、そしてPostをマッチングする新たな方法につながりました。これらすべての基本的なPost属性は、それらにマッチするために使用されるPowerTrack Operatorsへとつながっています。

Postのメタデータ、可変性、更新、最新性

Postメッセージは最大文字数に上限がありますが、PostのJSON表現には100を超える属性が含まれます。誰がいつ投稿したか、オリジナルのPostかRetweetか、ハッシュタグ、メンション、共有リンクといった一次オブジェクトの配列などの属性です。投稿したアカウントにはユーザー(またはActor)オブジェクトが紐づき、プロフィールやその他のアカウントメタデータを提供する多様な属性を持ちます。プロフィールには、短い自己紹介、ホームロケーション(自由入力テキスト)、優先言語、任意のウェブサイトリンクが含まれます。 アカウントメタデータの中には決して変わらないもの(例: 数値のユーザーidや作成日時)もあれば、時間とともに緩やかに変化するもの、より頻繁に変わるものもあります。人は転職や引っ越しをします。企業は情報を更新します。履歴のPostを収集する場合、あるメタデータは「投稿時点の値」であり、別のメタデータは「クエリ実行時点の値」であることを理解しておくことが重要です。  すべての履歴APIでは、ユーザーのプロフィールの説明、表示名、およびプロフィールの「ホーム」属性は、クエリ実行時点の値に更新されます。

「ネイティブ」メディア

X.com と X モバイルアプリでは、ボタンをクリックしてフォトギャラリーから選択することで、Post に写真や動画を追加できます。これらが第一級のアクションとして統合されたため、この方法で共有された動画や写真は「ネイティブ」メディアと呼ばれます。 多くのクエリオペレーターは、これらの「ネイティブ」リソースを対象に機能します。たとえば、has:videoshas:imageshas:media などです。これらは、X の機能を通じて共有されたメディアコンテンツにのみ一致します。X プラットフォーム外でホストされているメディアに一致させるには、URL メタデータに基づいて一致させるオペレーターを使用してください。 したがって、Historical PowerTrack と Full-Archive Search の製品詳細に入る前に、プロダクトおよびプラットフォームとしての X が時間とともにどのように進化してきたかを振り返りましょう。 X のタイムライン 以下に、X の抜粋したタイムラインを示します。これらの X のアップデートの多くは、ユーザー行動、Post の JSON 内容、クエリオペレーター、あるいはそのすべてに根本的な影響を与えました。X を API プラットフォームとして見ると、以下の出来事は Post をエンコードするために使用される JSON ペイロードに何らかの影響を与えました。その結果として、これらの JSON の詳細が、X の履歴 API におけるマッチ方法にも影響します。 このタイムラインの一覧は、概ね正確ですが網羅的ではない点にご留意ください。

2006

  • 10月
    • @replies が慣例化。
    • cashtagsが初登場。ただし株式ティッカーの言及に使われるのが一般的になるのは2009年初頭から。cashtags が初登場。ただし株式ティッカーの言及に使われるのが一般的になるのは2009年初頭から。Cashtags は2012年6月にクリックおよび検索可能なリンクになった。
  • 11月 - Favorites を導入。

2007

  • 1月 - @replies が、UI の返信ボタンと in_reply_to メタデータを備えた第一級のオブジェクトになる。
  • 4月 - Retweet が慣習として定着。
  • 8月 - #hashtag が Post の検索・整理の主要な手段として定着。

2009

  • 2月 - 株式のティッカーシンボルの議論で、$cashtags が一般的な慣例となる。
  • 5月 - リツイートのベータ版を導入し、Post 本文の先頭に「Via @」を付与。
  • 6月 - 認証済みアカウントを導入。
  • 8月 - リツイートが「RT @」パターンと新たな retweet_status メタデータを備えた第一級オブジェクトになる。
  • 10月 - リスト機能を公開。
  • 11月 - Post Geotagging API を公開し、ユーザーがサードパーティアプリ経由で位置情報を共有するための初の手段を提供。

2010

  • 6月 - Postのジオタグ付けのためにX Placesを導入。
  • 8月 - ウェブサイト向けのPostボタンを公開。リンク共有が簡単に。

2011

  • 5月 - フォローボタンを導入。ウェブサイトに関連するアカウントをより簡単にフォローできるようになりました。
  • 8月 - ネイティブ写真機能を導入。

2012

  • 6月 - $Cashtags がクリックおよび検索可能なリンクに。

2014

  • 3月 - 写真へのタグ付けと最大4枚の写真に対応拡張 X Entities メタデータが導入されました。
  • 4月 - 絵文字が X の UI でネイティブにサポートされました。絵文字は少なくとも2008年には、Postで一般的に使われていました。

2015

  • 4月 - X の「Post」ユーザーインターフェースのデザイン変更により、位置情報付きの Post が減少。
  • 10月 - X Polls を導入。当初、Polls は24時間の投票期間で2つの選択肢に対応。11月には、投票期間5分〜7日で4つの選択肢に対応開始。Poll のメタデータは2017年2月に提供開始(ネイティブの拡張形式のみ)。

2016

2017

  • 2月 - X Poll メタデータが Post メタデータに含まれるように(ネイティブ拡張フォーマットのみ)。
  • 4月 - “Simplified Replies” を導入。返信先アカウントは140文字数に含まれなくなる(「dmw140、第2弾」)。
2018 2022
  • 9月29日 - Post の編集機能を小規模なテストグループにロールアウト。編集済み Post のメタデータが、該当する場合に Post オブジェクトへ追加されます。これには edit_history と edit_controls オブジェクトが含まれます。これらのメタデータは、編集機能が追加される前に作成された Post には返されません。これらのメタデータに対応する Operator はありません。Post の編集の仕組みについては、Edit Posts fundamentals を参照してください。
フィルタリングのヒント X のタイムライン上で新機能がいつどのように追加されたかを把握しておくと、より効果的なクエリの作成に役立ちます。ここでのクエリとは、PowerTrack Operator を使用して Post の JSON にマッチさせるために、X の履歴 API が Post アーカイブに適用する「フィルタ」または「ルール」を指します。例として lang: Operator は、特定の言語の Post にマッチさせるために使用します。X は言語分類サービス(50以上の言語に対応)を提供しており、X API は各 Post に対して生成される JSON にこのメタデータを含めて返します。したがって、ある Post がスペイン語で書かれている場合、JSON の “lang” 属性は “es” に設定されます。よって、lang:es という句でフィルタを作成すると、スペイン語と分類された Post メッセージのみにマッチします。 このタイムライン情報は、受け取った Post データの解釈にも役立ちます。たとえば、2008年と2012年の夏季オリンピックに関するコンテンツの共有状況を調査していたとします。is:retweet Operator のみを適用してリツイートにマッチさせた場合、2008年にはデータはヒットしません。しかし2012年には、おそらく何百万件ものリツイートがあるでしょう。これだけを見ると、2008年にはリツイートがユーザーの慣習ではなかった、あるいは単に誰もそのオリンピックについてリツイートしなかった、と誤って結論づけかねません。リツイートがファーストクラスのオブジェクトになったのは2009年なので、2008年分を特定するには "RT @" のルール句を追加する必要があります。 リツイートと言語分類はいずれも、長い歴史と多くのプロダクト詳細を持つ Post 属性の例です。以下では、X Data におけるマッチングと理解に重要な、これらおよび他の属性クラスの詳細について説明します。

偽陰性の把握

フィルター作成で重要なポイントは、メタデータにマッチする各 Operator には「導入日(born on)」があるということです。投稿より後に導入されたメタデータに作用する Operator を使ってフィルターを作ると、偽陰性が発生します。たとえば、「snow」に言及し、動画を共有しているすべての Post に関心があるとします。ネイティブ動画を含む Post にマッチする has:videos Operator でルールを作成した場合、この節は2015年以前の Post にはマッチしません。 ただし、動画の共有自体は2015年よりずっと前から X で一般的でした。それ以前は、ユーザーは外部にホストされた動画へのリンクを共有していましたが、2015年に X はプラットフォームにネイティブの「動画共有」機能を実装しました。こうした以前の Post を見つけるには、url:"youtube.com" のようなルール節を含めます。 なお、Search API では、インデックスの再構築に伴い、一部のメタデータが「遡及付与」された例があります。好例が cashtagsです。これは2009年に株式シンボルの議論で広く使われるようになりました。2015年にcashtags です。これは2009年に株式シンボルの議論で広く使われるようになりました。2015年に cashtag Operator が導入された後、Search インデックスが再構築され、その過程でシンボルエンティティがすべての Post 本文から抽出されました。$ が主にスラングとして使われていた2006年初期の投稿も含みます。「I hope it nownow $oon!」。

ユースケースに重要な Post 属性の特定とフィルタリング

X アカウントの数値 ID のような一部のメタデータは、当初から存在しており(変更されないアカウントメタデータの一例です)、そのほかのメタデータは 2006 年の X の開始からしばらくして導入されました。新たに導入されたメタデータの例としては、Retweets のメタデータ、Post の位置情報、URL のタイトルと説明、「ネイティブ」メディアなどがあります。以下では、こうした X プラットフォームの更新によって大きく影響を受けた、代表的な Post 属性の種類をいくつか挙げます。 これらのフィルタリング/マッチングの挙動は、ほとんどの場合、どの履歴 Post API を使用するかに依存します。研究やユースケースに最適なプロダクトを選定するために、以下の属性詳細には高レベルのプロダクト情報も含めています。

X プロフィール

X は本質的にグローバルなリアルタイム通信チャネルであるため、Post データを用いたリサーチでは、誰が発信しているかに重点が置かれることが一般的です。X ユーザーの「ホーム」(拠点)を把握できると有益な場合が多く、アカウントの自己紹介文に興味や趣味が記載されていることが分かるだけでも、関心のある Post を見つける手がかりになります。関心のあるアカウントからの Post を継続的に収集・監視したいというニーズも非常に一般的です。プロフィール属性は、これらすべてのユースケースにおける重要な要素です。 X 上のすべてのアカウントにはプロフィールがあり、X の @handle、表示名、短い自己紹介、ホームロケーション(ユーザーが入力する自由形式のテキスト)、フォロワー数などのメタデータが含まれます。数値のユーザー id やアカウント作成日時のように、決して変わらない属性もあります。一方、投稿した Post の数、フォロー中のアカウント数やフォロワー数のように、日次・週次・月次で変動するものもあります。その他のアカウント属性もいつでも変更可能ですが、変更頻度は比較的低めです。たとえば、表示名、ホームロケーション、自己紹介などです。 すべての Post の JSON ペイロードには、その Post の作成者に関するアカウントプロフィールのメタデータが含まれます。Retweet の場合は、元の Post を投稿したアカウントのプロフィールメタデータも含まれます。 Post のプロフィールメタデータの可変性は、利用する履歴向けプロダクトに完全に依存します。Search API は、取得時点のプロフィール設定を伴う履歴の Post を返します。Historical PowerTrack では、2011 年以前のデータを除き、Post が投稿された当時のプロフィールが反映されます。2011 年より古い Post については、プロフィールメタデータは 2011 年 9 月時点のプロフィールを反映します。

オリジナルのPostとRetweet

Retweetは、ユーザー主導の慣習が公式のオブジェクトになった好例です。Retweetはコンテンツを他者へ「転送」する手段として生まれました。最初は、Postをコピー&ペーストし、先頭に「RT @」というパターンを付ける手作業の工程でしたが、のちに新設されたRetweetボタンによって自動化され、JSONの新たなメタデータも付与されました。こうして「公式」なRetweetが誕生し、retweetするという行為はPostにおける第一級のイベントとなりました。新しいRetweetボタンとあわせて、元のPostの完全なペイロードなどの新しいメタデータも導入されました。 Postがオリジナルか共有かは、一般的なフィルタリングの「切り替え」条件です。オリジナルのコンテンツのみが必要な場合もあれば、Postのエンゲージメントが最優先となるケースではRetweetが鍵になります。PowerTrackのis:retweetオペレーターにより、Retweetを含めるか除外するかを指定できます。2009年8月より前のdataを取得する場合は、Retweetのマッチング(または非マッチング)のために2つの戦略が必要です。2009年8月以前については、Post本文自体に対し、「RT @」パターンとの完全一致のフレーズマッチングで判定する必要があります。2009年8月以降は、is:retweetオペレーターが利用可能です。

Post の言語分類

Post がどの言語で書かれているかは、開発者にとって一般的な関心事項です。Post の言語は、その Post の位置情報の推定に役立ち、分析や表示では特定の言語だけが必要になることもよくあります。(X のプロフィールには優先言語設定もあります。) Post の言語分類でフィルタリングする場合、X の履歴向けプロダクト(Search API と Historical PowerTrack)は大きく異なります。Search アーカイブの構築時点で、すべての Post に X の言語分類が遡及付与されています。したがって、lang: オペレーターはアーカイブ全体の Post で利用可能です。Historical PowerTrack では、X の言語分類メタデータは 2013 年 3 月 26 日以降のアーカイブで利用できます。 

投稿のジオリファレンシング

Post がどこで投稿されたか(すなわち、ジオリファレンシングすること)を把握できることは、多くのユースケースで重要です。Post をジオリファレンシングする主な方法は3つあります:
  • Post メッセージ内の地理的な言及
  • ユーザーによってジオタグされた Post
  • ユーザーが設定したアカウントプロフィールの「ホーム」位置情報
Postメッセージにおける地理的参照
地域の知識に依存するため最も難しい方法となることが多いものの、Postメッセージ内の地理的参照に基づくマッチングは、Postアーカイブ全体に対して実施できる選択肢です。以下は、「golden gate」フィルターに基づく、2006年のサンフランシスコ地域での地理参照マッチの例です: https://x.com/biz/statuses/28311
ユーザーによってジオタグされたPost
2009年11月、XはPostに正確な位置情報でジオタグを付与できるPost Geotagging APIを導入しました。2010年6月には、会場、近隣、町といったスケールで地理的エリアを表すX Placesを導入しました。Postのおよそ1〜2%は、いずれかの方法でジオタグされています。 利用可能なジオタグ履歴は、使用しているHistorical APIに依存します。Search APIでは、2010年3月から一部のGeo OperatorでPostのマッチングが可能になり、他のオペレーターでは2015年2月から可能になりました。Historical PowerTrackを使用している場合、ジオリファレンスは2011年9月1日から開始されます。Historical PowerTrackアーカイブの構築時、この日付より前のジオタグはすべて含まれていません。
ユーザーが設定するアカウントプロフィールの「ホーム」所在地
すべてのXユーザーは、ホーム所在地を示すプロフィールの所在地を設定できます。何百万ものXユーザーがこの情報を提供しており、X Firehoseに含まれる地理データ量が大幅に増えています。この所在地メタデータは、正規化されていないユーザー生成の自由形式文字列です。約30%のアカウントには、国レベルまで解釈可能なプロフィールのGeoメタデータがあります。 Postのジオ情報と同様に、照合方法や利用可能期間は、使用しているHistorical APIによって異なります。Historical PowerTrackでは、これらの自由形式文字列に対して独自のカスタム照合を試すことができます。そのプロセスを容易にするため、Xは、可能な場合にジオコーディングを実行して正規化されたメタデータと対応するOperatorを提供するProfile Geo Enrichmentも提供しています。Profile Geo OperatorはHistorical PowerTrackとSearch APIの両方で利用可能です。Historical PowerTrackでは、これらのプロフィールGeoメタデータは2014年6月から利用できます。Search APIでは、このメタデータは2015年2月から利用できます。 ウェブページのリンク、写真、動画の共有は、常にXの基本的なユースケースです。初期には、これらの操作はすべて、Post本文にURLリンクを含めて行われていました。2011年には、Xのユーザーインターフェースに写真の直接共有が統合され、2016年にはネイティブ動画が追加されました。 この経緯から、こうしたコンテンツにマッチさせるための多様なフィルタリング用Operatorが用意されています。Postに共有リンク、写真、動画が含まれているかどうかにマッチするOperatorのセットがあります。また、X上で共有されるURLの多くは、Postの文字数消費を抑えるために短縮されます(例: bitly や tinyurl などのサービスで生成)。そのためXは、照合に利用できる完全な展開URLを生成するdataエンリッチメントを提供しています。たとえば、Xと早期警戒システムについて論じるリンクを含むPostにマッチさせたい場合、「severe weather communication」を参照するフィルターは、この http://bit.ly/1XV1tG4 のURLを含むPostに一致します。 2012年3月に、expanded URL enrichment が導入されました。これ以前は、Postのペイロードにはユーザーが提供したURLのみが含まれていました。そのため、ユーザーが短縮URLを含めた場合、関心のある(展開済みの)URLにマッチさせるのは難しい場合がありました。Historical PowerTrack と Search API の双方で、これらのメタデータは2012年3月から利用可能です。 2016年7月には、enhanced URL enrichment が導入されました。この強化版では、PostのペイロードにウェブサイトのHTMLタイトルと説明が含まれ、これらにマッチさせるためのOperatorも提供されます。Historical PowerTrack では、これらのメタデータは2016年7月から利用可能になります。Search API では、これらのメタデータは2014年12月から提供が始まります。 2016年9月、Xは「ネイティブ添付」を導入し、末尾の共有リンクがPostの140文字制限にカウントされないようにしました。これらの共有リンクには、両方のURLエンリッチメントが引き続き適用されます。 URLフィルタリングに関する製品固有の詳細は、該当する記事を参照してください。