比較ガイドをご覧ください:
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):
利用可能なデータ形式
ご注意:エンタープライズ向けデータ API には、Enriched Native 形式の使用を強く推奨します。エンタープライズ データ API は 2 種類の形式でデータを提供します。標準の v1.1 ネイティブ形式に最も近いエンタープライズ形式は Enriched Native です。従来のエンタープライズ データ形式は Activity Streams で、当時 Gnip により、X および他のソーシャルメディア データプロバイダーにまたがる正規化形式として実装・利用されていました。この形式は現在も利用可能ですが、X は 2017 年以降、Enriched Native 形式のみに新機能や開発投資を行っています。 Enriched Native 形式は、その名のとおり、ネイティブな X オブジェクトに加え、URL アンワインドのメタデータ、プロフィールの位置情報、poll metadata、追加のエンゲージメント指標など、エンタープライズ向けデータ製品で利用可能な各種エンリッチメントを含みます。
- Enriched Native 形式には、poll metadata などの 2017 年以降の新しいメタデータに加え、reply_count や quote_count といった追加のメトリクスが含まれます。
- Activity Streams 形式は、2017 年の文字数アップデート以降、新しいメタデータやエンリッチメントで更新されていません。
- Expanded and enhanced URLs enrichment
- Matching rules enrichment
- Poll metadata enrichment
- Profile geo enrichment
データ形式ごとのオブジェクト比較
解析に関するベストプラクティス
- X の JSON は UTF-8 でエンコードされています。
- パーサーは fields の並び順の違いに柔軟に対応できる必要があります。Post の JSON は順序を持たない data のハッシュとして提供されると想定してください。
- パーサーは「新たな」 fields の追加に対しても問題なく動作するべきです。
- すべてのコンテキストで全ての fields が現れるわけではないため、JSON パーサーは「欠落している」 fields に寛容でなければなりません。
- 一般に、null の値が入った field、空集合、そして field が存在しない状態は同一視して差し支えありません。
エンタープライズ向けネイティブ強化dataオブジェクト
ネイティブ拡張 Tweet オブジェクト
ネイティブ拡張データ形式が X API v2 の形式にどのようにマッピングされるか、詳しく知りたい方はこちら。 比較ガイドをご確認ください: ネイティブ拡張と X API v2 の比較
Post オブジェクト
id、created_at、text といった基本的な属性を含む「ルートレベル」の属性が多数あります。Postオブジェクトには、user、entities、extended_entities といった入れ子のオブジェクトも含まれます。Postオブジェクトには、retweeted_status、quoted_status、extended_tweet などの入れ子の Post オブジェクトも含まれます。さらに、ネイティブ拡張形式には matching_rules オブジェクトも含まれます。
X データ辞書
| 属性 | タイプ | 概要 |
|---|---|---|
| 作成日_で | String | このPostが作成されたUTC時刻。例: “作成_にて”:“水 10月 10 20:19:24 +0000 2018” |
| id | Int64 | このPostの一意識別子の整数表現です。この数値は53ビットを超えるため、一部のプログラミング言語では解釈に問題が生じたり、暗黙の不具合が発生する場合があります。この識別子の保存には、符号付き64ビット整数を使用するのが安全です。Use**id_str**安全のために識別子を取得してください。参照:X のID詳細については、次の例をご覧ください。“id”:1050118621198921728 |
| id_str | String | このPostの一意の識別子を表す文字列。実装では、巨大な整数ではなく、この**idの値を使用してください。id**. 例:“id_str”:“1050118621198921728” |
| テキスト | String | ステータス更新の実際の UTF-8 文字列。参照X-text現在有効と見なされる文字の詳細については、次をご参照ください。例: “テキスト”:“表現の幅を広げるため、性別や肌のトーンのバリエーションを含むすべての絵文字を同一にカウントすることにします…https://t.co/MkGjXf9aXm” |
| source | String | Post を投稿する際に使用されたユーティリティ。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 |
| 内で_返信_宛て_ステータス_id | Int64 | *null 許容。*対象のPostが返信である場合、このフィールドには元のPostのIDを表す整数値が格納されます’のID。例: “内で_返信_宛て_ステータス_id”:1051222721923756032 |
| 内で_返信_to_ステータス_id_str | String | *null 許容。*対象の Post が返信である場合、このフィールドには元の Post の文字列表現が含まれます’のID。例: “内_返信_宛て_ステータス_id_str”:“1051222721923756032” |
| 内で_返信_宛て_ユーザー_id | Int64 | *null 許容。*表現対象のPostが返信である場合、このフィールドには元のPostの整数表現が含まれます’の投稿者ID。これは、Post内で直接言及されているユーザーと必ずしも一致するとは限りません。例: “内で_返信_宛て_ユーザー_id”:6253282 |
| 内で_返信_宛て_ユーザー_id_str | String | *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” } |
| 引用_ステータス_id | Int64 | このフィールドは、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 の場合は、none、low、medium のいずれのストリームでも配信されます。mediumで配信されますなし、low、および**medium**ストリーム例: “フィルタ_レベル”:“低い” |
| 言語 | String | null 許容。存在する場合は、〜を示します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 属性
| Attribute | Type | Description |
|---|---|---|
| current_user_retweet | Object | 視点依存。include_my_retweet パラメータをサポートするメソッドで、true に設定された場合にのみ返されます。ユーザー自身による当該 Post のリツイート(存在する場合)の Post ID を示します。例: “current_user_retweet”: <br/> “id”: 6253282, “id_str”: “6253282” } |
| scopes | Object | 当該 Post の意図された文脈的配信を示すキーと値の組の集合。現在は X のプロモーションプロダクトで使用されています。例: “scopes”:{“followers”:false} |
| withheld_copyright | Boolean | このフィールドが存在し、かつ “true” の場合、このコンテンツが DMCA 申立て により差し止められていることを示します。例: “withheld_copyright”: true |
| withheld_in_countries | Array of String | このフィールドが存在する場合、このコンテンツが差し止められている国の大文字の 2 文字の国コード の一覧を示します。X はこのフィールドで、以下の国以外の値もサポートします: “XX” - すべての国でコンテンツが差し止められています/“XY” - DMCA リクエストによりコンテンツが差し止められています。 例: “withheld_in_countries”: [“GR”, “HK”, “MY”] |
| withheld_scope | String | このフィールドが存在する場合、差し止め対象が “status” か “user” かを示します。 例: “withheld_scope”: “status” |
非推奨の属性
| フィールド | 型 | 説明 |
| geo | Object | 非推奨。 null 可能。 代わりに coordinates フィールドを使用してください。この非推奨属性では座標が [lat, long] 形式で表されますが、他のすべての Post の地理情報は [long, lat] 形式で表されます。 |
入れ子の Post オブジェクト
引用ツイート
拡張ポスト
ネイティブ拡張ユーザーオブジェクト
ユーザーデータ辞書
| 属性 | タイプ | 概要 |
|---|---|---|
| id | Int64 | このユーザーの一意の識別子の整数表現です。53ビットを超える数値であり、一部のプログラミング言語では解釈に問題が生じたり、サイレントな不具合が発生する可能性があります。この識別子を保存するには、符号付き64ビット整数を使用するのが安全です。Useid_str安全のため、識別子を取得してください。参照:X ID詳細については、を参照してください。例:“id”: 6253282 |
| id_str | String | このUserの一意識別子の文字列表現です。実装では、id にある、場合によっては扱いづらい大きな整数ではなく、こちらを使用してください。id。例:“id_str”:“6253282” |
| 氏名 | String | ユーザーが定義した名前。必ずしも個人名とは限りません。通常は50文字上限ですが、変更される場合があります。例: “名前”:“API” |
| 画面_名前 | String(文字列) | このユーザーが自分を示すために使用するスクリーンネーム、ハンドル、または別名。screen_名前は一意ですが、変更される可能性があります。使用id_str可能な限りユーザー識別子として使用します。通常は最大で15文字ですが、過去の一部のアカウントにはそれより長い名前のものもあります。例:“画面_名前”:“API” |
| 場所 | 文字列 | Nullable. このアカウントのプロフィールにおける、ユーザーが任意に入力した位置情報。必ずしも実在の場所を指すとは限らず、機械的に解析できないことがあります。このフィールドは検索サービスによって曖昧に解釈される場合があります。例: “場所”:“サンフランシスコ(カリフォルニア州)“ |
| 派生 | エンリッチメントオブジェクトの配列 | エンタープライズ API 限定 ユーザー向けに導出された Enrichment メタデータのコレクション。提供するのはプロフィール地理情報エンリッチメント用メタデータ。JSONのデータ辞書を含む詳細は、参照ドキュメントをご覧ください。例: “導出”:“ロケーション”: [“国”:“米国”,“国_コード”:“米国”、“ローカリティ”:“デンバー”] |
| URL | String | null 許容. ユーザーがプロフィールに関連付けて指定したURL。例: “URL”:“https://developer.x.com” |
| 説明 | String | null 許容. ユーザーが自身のアカウントを説明するために定義した UTF-8 文字列。例: “説明”:“本物のX API” |
| 保護 | ブール | true の場合、このユーザーが自分のPostを保護する設定を選択していることを示します。参照公開Postと非公開Postについて. 例: “保護”: true |
| 認証済み | ブール | true の場合、ユーザーのアカウントが認証済みであることを示します。参照認証済みアカウント. 例: “認証済み”: false |
| フォロワー_カウント | Int | このアカウントの現在のフォロワー数です。特定の状況下では、一時的にこのフィールドが「0」と表示される場合があります。例: “フォロワー_件数”: 21 |
| 友だち_カウント | Int | このアカウントがフォローしているユーザー数(いわゆる「フォロー中」)。特定の状況下では、このフィールドが一時的に「0」と表示されることがあります。例: “友達_件数”: 32 |
| 上場_カウント | Int | このユーザーがメンバーである公開リストの数。例: “上場_件数”: 9274 |
| お気に入り_カウント | Int型 | このユーザーがアカウントの存続期間中に「いいね」したPostの数。歴史的な理由により、フィールド名は英国式の綴りを使用しています。例: “お気に入り_件数”: 13 |
| ステータス_件数 | 整数型 | ユーザーが発行したPost(リツイートを含む)の数。例: “ステータス_カウント”: 42 |
| 作成済み_で | String | X でユーザーアカウントが作成された UTC の日時。例: “作成済み_で”:“月 11 29 21:18:15 +0000 2010” |
| プロフィール_バナー_URL | String | ユーザーがアップロードしたプロフィールバナーの標準的なウェブ表示を指す、HTTPSベースのURLです。URLの末尾にパス要素を追加することで、特定のディスプレイ向けに最適化されたさまざまな画像サイズを取得できます。サイズのバリエーションについては、を参照してください。ユーザーのプロフィール画像とバナー. 例: “プロフィール_バナー_URL”:“https://si0.twimg.com/profile_banners/819797/1348102824” |
| プロフィール_画像_URL_https | String(文字列) | ユーザーのプロフィール画像を指す HTTPS ベースのURL。例: “プロフィール_イメージ_URL_https”: “https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png” |
| 既定_プロフィール | ブール | true の場合、ユーザーがプロフィールのテーマや背景を変更していないことを示します。例: “既定_プロフィール”: false |
| デフォルト_プロフィール_イメージ | ブール | true の場合、ユーザーが独自のプロフィール画像をアップロードしておらず、代わりにデフォルトの画像が使用されていることを示します。例: “既定_プロフィール_画像”: false |
サポート終了(非推奨)の属性
| フィールド | 型 | 説明 |
|---|---|---|
| utc_offset | null | 値は null に設定されます。引き続き GET account/settings で利用可能です |
| time_zone | null | 値は null に設定されます。引き続き GET account/settings の tzinfo_name として利用可能です |
| lang | null | 値は null に設定されます。引き続き GET account/settings の language として利用可能です |
| geo_enabled | null | 値は null に設定されます。引き続き GET account/settings で利用可能です。このフィールドは、POST statuses/update を使用して地理情報を添付するには、現在のユーザーで true である必要があります |
| following | null | 値は null に設定されます。引き続き GET friendships/lookup で利用可能です |
| follow_request_sent | null | 値は null に設定されます。引き続き GET friendships/lookup で利用可能です |
| has_extended_profile | null | 非推奨。値は null に設定されます。 |
| notifications | null | 非推奨。値は null に設定されます。 |
| profile_location | null | 非推奨。値は null に設定されます。 |
| contributors_enabled | null | 非推奨。値は null に設定されます。 |
| profile_image_url | null | 非推奨。値は null に設定されます。注: プロフィール画像は profile_image_url_https フィールドでのみ利用可能です。 |
| profile_background_color | null | 非推奨。値は null に設定されます。 |
| profile_background_image_url | null | 非推奨。値は null に設定されます。 |
| profile_background_image_url_https | null | 非推奨。値は null に設定されます。 |
| profile_background_tile | null | 非推奨。値は null に設定されます。 |
| profile_link_color | null | 非推奨。値は null に設定されます。 |
| profile_sidebar_border_color | null | 非推奨。値は null に設定されます。 |
| profile_sidebar_fill_color | null | 非推奨。値は null に設定されます。 |
| profile_text_color | null | 非推奨。値は null に設定されます。 |
| profile_use_background_image | null | 非推奨。値は null に設定されます。 |
| is_translator | null | 非推奨。値は null に設定されます。 |
| is_translation_enabled | null | 非推奨。値は null に設定されます。 |
| translator_type | null | 非推奨。値は null に設定されます。 |
ユーザーオブジェクトの例:
ネイティブ拡張ジオオブジェクト
place オブジェクトは、Post が場所でジオタグ付けされている場合は常に存在します。Places は、対応する地理座標を持つ固有名の場所です。ユーザーが自分の Post に場所を割り当てると、候補となる X Place の一覧が提示されます。API で投稿する場合は、投稿時に place_id を指定することで X Place を添付できます。Place に関連付けられた Post は、必ずしもその場所から発信されたものとは限らず、その場所に関するものである可能性もあります。
geo および coordinates オブジェクトは、Post に「正確な位置」が割り当てられている場合にのみ(null ではなく)存在します。正確な位置が指定されている場合、coordinates オブジェクトは地理座標を表す [long, lat] 配列を提供し、その位置に対応する X Place が割り当てられます。
Place データ辞書
| Field | Type | Description |
|---|---|---|
| id | String | この場所を表すID。整数ではなく文字列で表現される点に注意。例: “id”:“01a9a39529b27f36” |
| url | String | この場所に関する追加のプレースメタデータの参照先を示すURL。例: “url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json” |
| place_type | String | このプレースの種類。例: “place_type”:“city” |
| name | String | このプレース名の短い人間可読の表現。例: “name”:“Manhattan” |
| full_name | String | このプレース名の完全な人間可読の表現。例: “full_name”:“Manhattan, NY” |
| country_code | String | このプレースを含む国を表す短縮国コード。例: “country_code”:“US” |
| country | String | このプレースを含む国名。例: “country”:“United States” |
| bounding_box | Object | このプレースを囲む座標のバウンディングボックス。例: “bounding_box”: “coordinates”: [ [ [ -74.026675, 40.683935 ], [ -74.026675, 40.877483 ], [ -73.910408, 40.877483 ], [ -73.910408, 40.3935 ] ] ], “type”: “Polygon” |
| attributes | Object | PowerTrack、30日間およびフルアーカイブ検索API、Volume Streamsを使用している場合、このハッシュはnull。例: “attributes”: |
| フィールド | 型 | 説明 |
| coordinates | Array 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 ] ] ] |
| type | String | coordinates プロパティにエンコードされているデータの種類。バウンディングボックスの場合は “Polygon”、正確な座標を持つ Post の場合は “Point”。例: “type”:“Polygon” |
Geo オブジェクト データ辞書
| Field | Type | Description |
| coordinates | Collection of Float | Post の位置の経度と緯度。形式は [latitude, longitude] のコレクション。例: ** “geo”: “type”:** “Point”, ** “coordinates”: [ 54.27784, -0.41068 ] ** |
| type | String | coordinates プロパティにエンコードされているデータの種類。Post の座標 fields では “Point” になります。例: “type”: “Point” |
| Field | Type | Description |
| coordinates | Collection of Float | Post の位置の経度と緯度。形式は [longitude, latitude] のコレクション。例: ** “coordinates”: “type”:** “Point”, ** “coordinates”: [ -0.41068, 54.27784 ] ** |
| type | String | coordinates プロパティにエンコードされているデータの種類。Post の座標 fields では “Point” になります。例: “type”: “Point” |
派生ロケーション
| フィールド | 型 | 説明 |
| derived | locations 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” ** ] ** |
例:
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 セクションが含まれ、hashtags、urls、user_mentions、symbols の最小セットの属性が、たとえそれらのエンティティが Post メッセージに含まれていなくても存在します。たとえば、本文が「Hello World!」でメディアが添付されていない Post の JSON を確認すると、エンティティ配列がいずれも要素数 0 の、次のような内容が含まれています。
- media と polls のエンティティは、その種別のコンテンツが Post に含まれている場合にのみ出現します。
- ネイティブメディア(写真、動画、GIF)を扱う場合は、Extended Entities オブジェクト を使用してください。
Entities オブジェクト
entities と extended_entities セクションはどちらも、エンティティのオブジェクト配列で構成されています。以下では、各エンティティオブジェクトの説明に加え、オブジェクトの属性名・型・概要を記載したデータディクショナリを示します。これらの属性に対応する PowerTrack Operators も明記し、JSON ペイロードのサンプルも掲載します。
Posts に一般的に含まれるエンティティ(ハッシュタグ、リンク、ユーザーのメンションなど)の集合です。この entities オブジェクトには media 属性も含まれますが、entities セクションでのその実装が完全に正確なのは、写真が 1 枚の Posts に限られます。写真が複数ある場合や、動画・アニメーション GIF を含む Posts については、extended_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 つの要素がある場合にマッチします。
| フィールド | 型 | 説明 |
| indices | Array of Int | Post テキスト内でハッシュタグが開始および終了する位置を示す整数配列。1 つ目の整数は Post テキスト文字列内の # 文字の位置を表します。2 つ目の整数はハッシュタグの直後の最初の文字の位置を表します。したがって、これら 2 つの数値の差は、ハッシュタグ名の長さに 1(「#」文字分)を加えた値になります。例: “indices”:[32,38] |
| text | String | 先頭の「#」文字を除いたハッシュタグ名。例: “text”:“nodejs” |
メディアオブジェクト
entities セクションには、Post にメディアオブジェクトが「添付」されている場合、単一のメディアオブジェクトを含む media 配列が含まれます。ネイティブメディアが添付されていない場合は、entities に media 配列は含まれません。以下の理由から、Post のネイティブメディアを処理する際は extended_entities セクションを使用してください:
- メディアの
typeは、動画や GIF が Post に添付されている場合でも常に「photo」となります。 - 最大 4 枚の写真を添付できても、
entitiesセクションに記載されるのは最初の 1 枚のみです。
has:media 演算子は、この配列に要素が存在する場合にマッチします。
| フィールド | 種類 | 概要 |
| ディスプレイ_URL | String | クライアントに表示するメディアのURL。例: “表示_URL”:“pic.x.com/rJC5Pxsu” |
| 拡張_url | String | ディスプレイの拡張版_url。メディア表示ページへのリンク。例: “展開_URL”:“http://x.com/yunorno/status/114080493036773378/photo/1” |
| id | Int64 | 64ビット整数で表されるメディアのID。例: “id”:114080493040967680 |
| id_str | String | 文字列として表されたメディアのid。例: “id_str”:“114080493040967680” |
| インデックス | Int型の配列 | Post テキスト内で URL が始まり終わる位置を示す整数配列。最初の整数は、Post テキスト内の URL の先頭文字の位置を表します。2 つ目の整数は、URL の直後に現れる最初の非 URL 文字の位置(または URL が Post テキストの最後の部分である場合は文字列の末尾)を表します。例: “インデックス”:[15,35] |
| メディア_URL | String | アップロードされたメディアファイルを直接指す 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_https | String | https ページに埋め込むための、アップロード済みメディアファイルを直接指す https:// URL。例: “メディア_URL_https”:“https://p.twimg.com/AZVLmp-CIAAbkyy.jpg” ダイレクトメッセージのメディアについては、 media_url_httpsOAuth 1.0A を使用し、ユーザーのアクセス トークンでリクエストに署名してアクセスする必要があります。認証済みの x.com セッションからは画像にアクセスできません。次をご覧くださいこのページ最近の変更への対応方法を学ぶために。 これらの画像をウェブページに直接埋め込むことはできません。 参照してください写真メディア URL の形式写真の書式設定方法について’たとえば次のような URL media_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. |
| ソース_ステータス_id | Int64 | null 許容。もともと別の Post に関連付けられていたメディアを含む Post の場合、この id は元の Post を指します。例: “ソーステキスト_ステータス_id”: 205282515685081088 |
| ソース_ステータス_id_str | Int64 | NULL 可。もともと別の Post に関連付けられていたメディアを含む Post の場合、この文字列ベースの ID は元の Post を指します。例: “ソース_ステータス_id_str”:“205282515685081088” |
| 型 | String | アップロードされたメディアの種類。可能な種類には photo、video、animated が含まれます。_GIF。例: “型”:“写真” |
| URL | String | メディアリンクのラップ済みURL。これは、生のPostテキストに直接埋め込まれたURLおよびindicesパラメータの値に対応します。indicesパラメータ。例:“URL”:“http://t.co/rJC5Pxsu” |
メディアサイズオブジェクト
Sizes object
| Field | Type | Description |
| thumb | Size Object | メディアのサムネイルサイズ版に関する情報。例: “thumb”:“h”:150, “resize”:“crop”, “w”:150} サムネイルサイズの写真メディアは150×150の範囲に_fill_で収まるように制限され、クロップされます。 |
| large | Size Object | メディアのラージサイズ版に関する情報。例: “large”:“h”:454, “resize”:“fit”, “w”:680} スモールサイズの写真メディアは680×680の範囲内に_fit_で収まるように制限されます。 |
| medium | Size Object | メディアのミディアムサイズ版に関する情報。例: “medium”:“h”:800, “resize”:“fit”, “w”:1200} ミディアムサイズの写真メディアは1200×1200の範囲内に_fit_で収まるように制限されます。 |
| small | Size Object | メディアのスモールサイズ版に関する情報。例: “small”:“h”:1366, “resize”:“fit”, “w”:2048} ラージサイズの写真メディアは2048×2048の範囲内に_fit_で収まるように制限されます。 |
サイズオブジェクト
| フィールド | 型 | 説明 |
| w | Int | このサイズの幅(ピクセル)。例: “w”:150 |
| h | Int | このサイズの高さ(ピクセル)。例: “h”:150 |
| resize | String | このサイズを取得するために使用されたリサイズ方法。値が fit の場合、メディアは元のアスペクト比を保ったまま一方の辺に収まるようにリサイズされます。値が crop の場合、特定の解像度に合わせるためにメディアがトリミングされます。例: “resize”:“crop” |
写真メディアURLのフォーマット
media_url または media_url_https はそれだけでも読み込め、既定では medium バリアントが読み込まれます。可能であれば、完全にフォーマットされた写真メディアURLを指定することを推奨します。
写真メディアURLは3つの要素で構成されます:
| Base URL | Base URLは、ファイル拡張子を除いたメディアURLです。 例: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, このときのBase URLは次のとおりです: https://pbs.twimg.com/media/DOhM30VVwAEpIHq |
| Format | Formatは、画像のファイル形式を示します。利用可能な形式は jpg または png で、メディアURLの拡張子として示されます。 例: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, このときのFormatは: jpg |
| Name | Nameは、読み込むサイズのフィールド名です。 例: “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 です |
| 旧形式 | 旧形式は非推奨です。写真メディアの読み込みはすべてモダン形式へ移行してください。 <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&name=large 注: 写真メディアURLのクエリ文字列内の項目はアルファベット順です。メディアの読み込みで追加のクエリ項目が加わる場合でも、アルファベット順を維持する必要があります。たとえば、仮に preferred_format という新しいクエリ項目がある場合、クエリ文字列では format と name の後に配置されます。 |
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_url | String | Post に貼り付け/入力された URL。例: “display_url”:“bit.ly/2so49n2” |
| expanded_url | String | display_url の展開版。例:“expanded_url”:“http://bit.ly/2so49n2” |
| indices | Array of Int | URL が Post テキスト内で開始および終了する位置を示す整数配列。最初の整数は Post テキスト内における URL の先頭文字の位置、2 番目の整数は URL の末尾の次に続く非 URL 文字の位置を表します。例: “indices”:[30,53] |
| url | String | ラップされた URL。生の Post テキストに直接埋め込まれた値および indices パラメータの値に対応します。例: “url”:“https://t.co/yzocNFvJuL” |
unwound 属性の下で次のメタデータが利用できます:
| フィールド | 型 | 説明 |
| url | String | Post に含まれるリンクの完全展開版。例: “url”:“https://blog.x.com/en_us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html” |
| status | Int | 展開処理の最終 HTTP ステータス。200 は成功を示します。例: 200 |
| title | String | リンクの HTML タイトル。例: “title”:“Using X as a ‘go-to’ communication channel during severe weather” |
| description | String | リンクの HTML 説明。例: “description”:“Using X as a ‘go-to’ communication channel during severe weather” |
ユーザーメンションオブジェクト
entities セクションには、Post 本文に含まれる各ユーザーメンションに対応するオブジェクトを要素とする user_mentions 配列が含まれ、ユーザーメンションが存在しない場合は空配列になります。
PowerTrack の @ 演算子は screen_name 属性にマッチするために使用されます。has:mentions 演算子は、配列に少なくとも 1 件の項目がある場合にマッチします。
| フィールド | 型 | 説明 |
| id | Int64 | メンションされたユーザーの ID(整数)。例: “id”:6253282 |
| id_str | String | メンションされたユーザーの ID(文字列)。例: “id_str”:“6253282” |
| indices | Array of Int | Post テキスト内でユーザー参照が開始・終了する位置を示す整数配列。最初の整数はユーザーメンションの「@」文字の位置を表します。2 番目の整数は、ユーザーメンションに続く最初の screen_name 以外の文字の位置を表します。例: “indices”:[4,15] |
| name | String | 参照されたユーザーの表示名。例: “name”:“API” |
| screen_name | String | 参照されたユーザーの screen_name。例: “screen_name”:“api” |
シンボルオブジェクト
entities セクションには、Post 本文に含まれる各 $cashtag ごとに 1 つのオブジェクトを格納した symbols 配列が含まれ、シンボルが存在しない場合は空の配列が含まれます。
PowerTrack の $ 演算子は text 属性に対してマッチングするために使用します。has:symbols 演算子は、配列内に少なくとも 1 件の項目がある場合にマッチします。
| フィールド | 型 | 説明 |
| indices | Int の配列 | Post テキスト内でシンボル/cashtag が開始・終了する位置のオフセットを示す整数の配列。最初の整数は Post テキスト文字列内の 」文字分)を加えた値になります。例: “indices”:[12,17] |
| text | String | 先頭の「$」文字を除いた cashtag の名称。例: “text”:“twtr” |
Poll オブジェクト
entities セクションには、Post に投票が含まれている場合、poll オブジェクトを1件だけ含む polls 配列が入ります。投票が含まれていない場合は、entities セクションに polls 配列は含まれません。
これらの Poll メタデータは、次のエンタープライズ API でのみ利用可能です。
- ボリュームストリーム(Decahose)
- Real-time PowerTrack
- X 検索 API(Full-Archive Search と 30-Day Search)
| フィールド | 型 | 説明 |
| options | Option オブジェクトの配列 | 各選択肢を表す配列で、各要素には投票内での位置とその位置のテキストが含まれます。例: “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 |
リツイートと引用ツイートの詳細
リツイート












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
JSON の例
X の拡張エンティティ
はじめに
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 枚の写真に対応しているため、ネイティブメディアにおける推奨メタデータソースです。
Post と JSON ペイロードの例
この Post の
entities セクションは次のとおりです:
extended_entitiesセクションは次のとおりです:
ネイティブ動画付きのPost
video_info オブジェクトは additional_media_info オブジェクトに置き換えられます。
additional_media_info には、title、description、embeddable flag など、パブリッシャーが提供する追加のメディア情報が含まれます。embeddable=false の場合、動画コンテンツはXの公式クライアントでのみ利用可能になります。この場合、ペイロード内で提供されるすべての動画URLはX由来となり、ユーザーはリンクをクリックしてXが所有するプロパティ上で動画を開くことができます。
この状況で拡張 entities オブジェクトがどのようになるかの例を以下に示します。
type が「photo」に誤って設定されている entities セクションです。改めて、extended_entities セクションを、“video” や “animated_gif” を含むすべてのネイティブメディアタイプに対して優先的に使用してください。
アニメーションGIF付きのPost
以下は、アニメーションGIF付きのこのPostの拡張エンティティに関するメタデータです。
ネイティブ Enriched の例ペイロード
ポスト
Postへの返信
拡張 Post
extended_entities を含む Post
リツイート
引用Tweet
引用Tweetのリツイート
エンタープライズ Activity Streams データオブジェクト
Activity Streams のデータ形式が X API v2 の形式にどのようにマッピングされるか、詳しく知りたい方へ。
ご留意ください: エンタープライズ向けのデータ API では、Enriched Native 形式の利用を強く推奨します。
- Enriched Native 形式には、poll metadata をはじめとする 2017 年以降の新しいメタデータや、reply_count、quote_count などの追加メトリクスがすべて含まれます。
- Activity Streams 形式は、2017 年の文字数更新以降、新しいメタデータやエンリッチメントで更新されていません。
アクティビティオブジェクト
データ辞書
以下では、これらの「ルートレベル」の “activity” 属性に関するデータ辞書と、子オブジェクトのデータ辞書へのリンクを示します。| アトリビュート | タイプ | 概要 |
| id | string | Post の一意な 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” |
| リンク | string | Post のパーマリンク。 “リンク”:“http://x.com/API/statuses/1050118621198921728” |
| 本文 | string | Post の本文。 リツイートでは、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_lang | string | |
| favoritesCount | int | null 可能。 この Post が X ユーザーに「いいね」されたおおよその回数を示します。 “favoritesCount”:298 |
| retweetCount | int | この Post がリツイートされた回数。例: “retweetCount”:153 |
非推奨の属性
| フィールド | 型 | 説明 |
| geo | object | Post が作成された地点の位置情報。 |
| twitter_filter_level | string | 互換性を損なわないように残されている非推奨フィールド |
入れ子の Post アクティビティオブジェクト
{ "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:
ロングオブジェクト
Actor object
データディクショナリ
| 属性 | 型 | 説明 |
|---|---|---|
| objectType | string | ”objectType”: “person” |
| id | string | この作成者の一意の識別子を表す文字列。例: “id:x.com:2244994945” |
| link | ”http://www.x.com/XDeveloeprs | |
| displayName | String | ユーザーが定義した名前。必ずしも人物の実名ではありません。通常は50文字までですが、変更される可能性があります。例: “displayName”: “XDevelopers” |
| preferredUsername | string | このユーザーが自身を識別するスクリーン名、ハンドル、またはエイリアス。一意ですが変更される可能性があります。可能な限り id をユーザー識別子として使用してください。通常は最大15文字ですが、一部の古いアカウントはより長い名前を持つ場合があります。例:“preferredUsername”: “XDevelopers” |
| location | object | ** “location”: “objectType”:** “place”, “displayName”: “127.0.0.1” ** }** |
| links | array | Null許容 。ユーザーがプロフィールに関連付けて提供したURL。例: ** “links”: [ { “href”:** “https://developer.x.com/en/community”, “rel”: “me” ** } ]** |
| summary | string | Null許容 。ユーザーが定義したアカウントを説明するUTF-8文字列。例: “summary”: “The voice of the #XDevelopers team…“ |
| protected | Boolean | trueの場合、このユーザーがポストを非公開に設定していることを示します。公開ポストと非公開ポストについてを参照してください。例: “protected”: true |
| verified | Boolean | trueの場合、ユーザーが認証済みアカウントを持っていることを示します。認証済みアカウントを参照してください。例: “verified”: false |
| followersCount | Int | このアカウントが現在持っているフォロワーの数。特定の負荷状況下では、このフィールドは一時的に「0」を示します。例: “followers_count”: 21 |
| friendsCount | Int | このアカウントがフォローしているユーザーの数(「フォロー中」とも呼ばれます)。特定の負荷状況下では、このフィールドは一時的に「0」を示します。例: “friends_count”: 32 |
| listedCount | Int | このユーザーがメンバーとなっている公開リストの数。例: “listed_count”: 9274 |
| favoritesCount | Int | このユーザーがアカウントの存続期間中にいいねしたポストの数。歴史的な理由により、フィールド名には英国式のスペルが使用されています。例: “favourites_count”: 13 |
| statusesCount | Int | ユーザーが発行したポスト(リポストを含む)の数。例: “statuses_count”: 42 |
| postedTime | date | ユーザーアカウントがXで作成されたUTC日時。例: “postedTime”: “2013-12-14T04:35:55.036Z” |
| image | string | ユーザーのプロフィール画像を指すHTTPSベースのURL。例: “image”: “https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg” |
サポート終了(非推奨)の属性
| フィールド | 型 | 説明 |
|---|---|---|
| utcOffset | null | 値は null に設定されます。引き続き GET account/settings で利用可能です |
| twitterTimeZone | null | 値は null に設定されます。tzinfo_name として引き続き GET account/settings で利用可能です |
| languages | null | 値は null に設定されます。language として引き続き GET account/settings で利用可能です |
例:
Location オブジェクト
位置データ辞書
| フィールド | 型 | 説明 |
|---|---|---|
| objectType | string | 詳細はこちらを参照。例: “objectType”: “place” |
| displayName | string | 位置の完全名称。 “displayName”: “United States” |
| name | string | X の place JSON 形式における位置名。 |
| link | string | 当該場所の完全な X の JSON 表現へのリンク。 “link”: “https://api.x.com/1.1/geo/id/27c45d804c777999.json” |
| geo | object | X の地理座標オブジェクト。ポリゴンまたはポイント。 geoを参照 |
| countryCode | String | この場所を含む国を表す短縮された国コード。例: “countryCode”: “US” |
| country | String | この場所を含む国名。例: “country”: “United States” |
profileLocations の派生オブジェクト
| Field | Type | 説明 |
| address | object | gnip object の profileLocation の location オブジェクト内。 profile geo enrichment によって推定された所在地の住所。 詳細度は場合により異なります。 “address”: { ** “country”: “United States”, “countryCode”: “US”, “locality”: “Providence”, “region”: “Rhode Island”, “subRegion”: “Providence County” }** |
| geo | object | gnip object の profileLocation の location オブジェクト内。 profile geo enrichment によって推定された所在地の重心座標。 “geo”: { ** “coordinates”: [ -98.5, 39.76 ], “type”: “point” }** |
X entities オブジェクト
例:
X 拡張エンティティオブジェクト
例:
Gnip オブジェクト
データ辞書
| フィールド | 型 | 説明 |
| matching_rules | array | アクティビティがどのルールに一致したかを示すマッチングルールオブジェクトの配列。 “matching_rules”: [ ** { “tag”: null, “id”:** 1026514022567358500**, “id_str”:** “1026514022567358464” ** } ]** |
| urls | array | アクティビティ内のリンクの配列と、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” ** } ]** |
| profileLocations | array of location objects | Profile 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” ** } ] }** |
例:
アクティビティストリームのペイロード例
twitter_extended_entities を使用したPostのアクティビティ
Tweet メタデータタイムライン
はじめに**
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のメタデータ、可変性、更新、最新性
「ネイティブ」メディア
has:videos、has:images、has: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 は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
- 2月 - Post作成画面で、ネイティブにホストされた検索可能なGIFに対応。
- 5月 - “Doing More with 140”(dmw140)を発表。Replyや添付メディアの新しい扱いに関する計画を示し、Postの140文字制限における取り扱いを説明。
- 6月 - ネイティブ動画対応。
- 6月 - 引用Retweetを一般提供開始。
- 6月 - 写真に追加できるStickersを導入。
- 9月 - ‘Native attachments’を導入。末尾のURLを140文字にカウントしない(“dmw140, part 1”)。
2017
- 2月 - X Poll メタデータが Post メタデータに含まれるように(ネイティブ拡張フォーマットのみ)。
- 4月 - “Simplified Replies” を導入。返信先アカウントは140文字数に含まれなくなる(「dmw140、第2弾」)。
- 5月 - GDPR の更新 により、user.time_zone は null、user.utc_offset は null、user.profile_background_image_url はデフォルト値に設定
- 6月 - quoteTweet の書式変更 を更新
- 9月29日 - Post の編集機能を小規模なテストグループにロールアウト。編集済み Post のメタデータが、該当する場合に Post オブジェクトへ追加されます。これには edit_history と edit_controls オブジェクトが含まれます。これらのメタデータは、編集機能が追加される前に作成された Post には返されません。これらのメタデータに対応する Operator はありません。Post の編集の仕組みについては、Edit Posts fundamentals を参照してください。
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 におけるマッチングと理解に重要な、これらおよび他の属性クラスの詳細について説明します。
偽陰性の把握
has:videos Operator でルールを作成した場合、この節は2015年以前の Post にはマッチしません。
ただし、動画の共有自体は2015年よりずっと前から X で一般的でした。それ以前は、ユーザーは外部にホストされた動画へのリンクを共有していましたが、2015年に X はプラットフォームにネイティブの「動画共有」機能を実装しました。こうした以前の Post を見つけるには、url:"youtube.com" のようなルール節を含めます。
なお、Search API では、インデックスの再構築に伴い、一部のメタデータが「遡及付与」された例があります。好例が cashtag Operator が導入された後、Search インデックスが再構築され、その過程でシンボルエンティティがすべての Post 本文から抽出されました。$ が主にスラングとして使われていた2006年初期の投稿も含みます。「I hope it $oon!」。
ユースケースに重要な Post 属性の特定とフィルタリング
X プロフィール
オリジナルのPostとRetweet
is:retweetオペレーターにより、Retweetを含めるか除外するかを指定できます。2009年8月より前のdataを取得する場合は、Retweetのマッチング(または非マッチング)のために2つの戦略が必要です。2009年8月以前については、Post本文自体に対し、「RT @」パターンとの完全一致のフレーズマッチングで判定する必要があります。2009年8月以降は、is:retweetオペレーターが利用可能です。
Post の言語分類
lang: オペレーターはアーカイブ全体の Post で利用可能です。Historical PowerTrack では、X の言語分類メタデータは 2013 年 3 月 26 日以降のアーカイブで利用できます。
投稿のジオリファレンシング
- Post メッセージ内の地理的な言及
- ユーザーによってジオタグされた Post
- ユーザーが設定したアカウントプロフィールの「ホーム」位置情報