[メモ] X (旧Twitter) 備忘録
X 関連の雑多なメモ。随時追加する
検索クエリ (検索コマンド)
演算式
式 | 説明 | 例 |
---|---|---|
hoge piyo |
hoge と piyo を両方含む |
カレー うどん |
hoge OR piyo |
hoge または piyo を含む |
ラーメン OR うどん |
"hogepiyo" |
hogepiyo に完全一致 |
"カレーうどん" ( カレーうどん のみにヒットし カレーとうどん などにはヒットしない) |
-hoge |
hoge を含まない |
カレー うどん -"カレーうどん" ( カレー と うどん を両方含むが カレーうどん は含まない) |
オプション
オプション | 説明 | 例 |
---|---|---|
from:ID |
@ID による投稿 |
from:shapoco |
to:ID |
@ID への返信 |
to:shapoco |
filter:media |
メディア付き (※1) | from:shapoco filter:media |
filter:images |
画像付き | from:shapoco filter:images |
filter:videos |
動画付き (※1) | from:shapoco filter:videos |
filter:links |
メディア (※1) またはリンク付き | from:shapoco filter:links |
list:リストID |
リスト内から検索 (※2, ※3) | list:858198697032564736 カレーうどん |
lang:言語コード |
言語コード による言語指定 | lang:ja, lang:en |
since:YYYY-MM-DD |
投稿日が YYYY-MM-DD 以降 |
from:shapoco since:2025-1-1 |
until:YYYY-MM-DD |
投稿日が YYYY-MM-DD 以前 |
from:shapoco until:2024-12-31 |
min_retweets:N |
リポスト数が N 以上 |
from:shapoco min_retweets:1000 |
min_faves:N |
いいね数が N 以上 |
from:shapoco min_faves:1000 |
near:場所 within:距離km |
場所 から 距離 km 以内 |
(2025/2/9: 機能してない?) |
geocode:緯度,経度,距離km |
ジオコード の場所から 距離 km 以内 |
geocode:45.522192,141.936642,1km filter:media (「最新」タブでないと機能しない?) |
※1 「メディア」や「動画」には YouTube リンクも含まれる
※2 リスト ID はリストの URL の末尾の数字の部分
例) https://x.com/i/lists/858198697032564736 のリスト ID: 858198697032564736
※3 ときどき無関係なポストも混ざる模様
フォロワーの TL に流れないようにこっそりポストする
凍結済みアカウントへのリプライは基本的にフォロワーのホームタイムラインには表示されないので、目立たないようにポストしたり引用したりすることができる。
それっぽい ID の凍結済みユーザーの例: (2025/04/05 現在)
注意点:
- あくまでホーム TL に流れなくなるだけであって、プロフィールページの返信タブや 検索 から見つかるかもしれないし、RP による拡散は防げない。
- 凍結された ID 宛てでないとダメで、最初から存在してない ID 宛てだとフォロワーのホーム TL に流れてしまう。
- 凍結された ID だと思ってたら他の誰かが取得してたみたいなことがあるかもしれないので、投稿毎に確認が必要。
通知を送らずに引用する
例えば対象ポストの URL が https://x.com/shapoco/status/1897261591160328414 の場合は https://x.com/i/web/status/1897261591160328414 のような URL に整形して引用する。(2025/04/05)
ユーザー ID
一般的に「ID」と呼ばれているもの (@shapoco
など) は正式には screen name という。
「ユーザー ID」は screen name と関係無くアカウントを一意に識別する数字。例えば @shapoco のユーザー ID は 858142314849378304
。screen name は変更できるが、ユーザー ID は変更できない。
何のためか分からないが https://x.com/i/user/ユーザーID
がそのユーザーのプロフィールページへ転送されるようになっているので、ユーザー ID から screen name は簡単に分かる (例)。
screen name からユーザー ID を得るのは以前は API を使うことができたが、今は有料化されてやや難しくなっている。
外部サービス利用してユーザー ID を取得する
- X(Twitter) IDチェッカー
※ なぜか取得できない場合もある
プロフィールページの DOM からユーザー ID を取得する (Web版)
data-testid="UserProfileSchema-test"
なる属性を持つscript
要素を見つける (複数存在する場合がある)。innerText
を JSON としてパースする。(JSON obj).mainEntity.additionalName
が目的の screen name に一致することを確認し、一致しない場合は次のscript
要素を調べる。- screen name が一致する場合、
(JSON obj).mainEntity.identifier
にユーザー ID が格納されている。
上記手順をブックマークレット化した。
-
以下のコードを URL としてブックマークレットを作成する
javascript:(function(){try{const sn=window.location.href.match(/x\.com\/(\w+)(\/(with_replies|media)\/?)?(\?.+)?$/)[1];const ss=Array.from(document.querySelectorAll('script')).filter(elem=>elem.dataset&&elem.dataset.testid==='UserProfileSchema-test');for(const s of ss){const e=JSON.parse(s.innerText).mainEntity;if(e.additionalName!==sn) continue;const url=`https://x.com/i/user/${e.identifier}#${sn}`;console.log(`URL: '${url}'`);navigator.clipboard.writeText(url).then(function(){window.alert(`URL copied to clipboard:\n${url}`);},function(){window.alert(`URL: '${url}'\n(Failed to copy to clipboard)`);});return;}throw new Error(`User ID not found for ${sn}.`);}catch(e){window.alert(`Failed. (${e})`);}})()
- 対象ユーザのプロフィールページを開く
- 作成したブックマークレットを開く
(https://x.com/i/user/<user ID>#<screen name>
の形式でクリップボードにコピーされる)
(2025/03/18 更新)
フォローボタンの属性からユーザー ID を得る (Web版)
フォローボタン (button
要素) の data-testid
属性が正規表現 /(\d+)-(un)?(follow|block)/
にマッチする場合、(\d+)
の部分がユーザー ID にあたる。
こちらの方法だと、フォロー一覧/フォロワー一覧/アカウント検索結果などのページから、そこに表示されているユーザーの ID をまとめて得られる。
(2025/03/18 更新)
細々したの
プロフィールの改行
Web 版のプロフィール編集画面で改行を使うと Web 版には反映されるが、アプリでは半角スペースになる。(2025/03/19)
Twitter Card Validator
Card Validator | Twitter Developers
プレビューは機能していないが、OGP 画像の更新自体は機能する。(2025/02/22)
メディア欄の空白は YouTube のリンク
メディア欄にところどころある空白は YouTube のリンクの投稿。
from:自分のID filter:media
で検索すると、メディア欄で空白だったところに YouTube のリンクが貼られた投稿があるのが分かる。
「自分がメンバーとなっているリスト」が数件しか表示されない (PC)
どれかのリストを開いたあとブラウザバックすると続きが表示される。バグ?