X APIでデータが取得できない原因
X APIを使っていると、
・データが取得できない
・result_countが0になる
・エラーが出る
といった問題にぶつかる。
特にn8nで自動化していると、
「動いているのに結果が返ってこない」という状態になりやすい。
この記事では、実際に詰まったポイントをベースに、
X APIでデータが取得できない原因を整理する。
X APIでデータが取得できない主な原因
まず結論から言うと、原因はだいたいこのあたりです。
・クエリの書き方ミス
・条件を詰めすぎている
・operatorの使い方を間違えている
・has:videosなどで絞りすぎている
・max_resultsの設定ミス
特に多いのが「条件を詰めすぎているパターン」です。
X APIでresult_countが0になる理由
一番多いのはこれです。
条件を盛りすぎている。
例えばこんなクエリ。
(from:〇〇) lang:ja has:videos -is:retweet一見ちゃんとしてるように見えますが、
・動画付き
・日本語
・特定アカウント
・リツイート除外
と条件を重ねすぎているので、普通に0件になります。
X APIでデータを取得するための対処法
こういうときは、一度シンプルに戻します。
(from:〇〇) -is:retweetまずはこれでデータが取れるか確認して、
そこから条件を1つずつ足していくのが正解です。
最初から完成形を作ろうとすると、ほぼ確実に詰まります。
operatorのミス
これもよくやります。
lang:jaこれ単体だとエラーになります。
X APIは「条件とセット」で使う必要があります。
猫 lang:jahas:videosで詰む問題
地味にこれもハマります。
has:videosこれを入れた瞬間に0件になることがあります。
正直、かなり厳しめの条件なので、
まずは外して動かす方がいいです。
max_resultsの罠
これも見落としがちです。
max_results=5これ、エラーになります。
X APIは10〜100の範囲しか使えません。
max_results=10n8nでJSONエラーが出る原因
X API周りで意外と多いのが、HTTP RequestのJSONエラーです。
例えばこんなエラー。
・JSON parameter needs to be valid JSON
・Bad request – please check your parameters
一見するとX APIの問題に見えますが、実際はn8n側の設定ミスであることが多いです。
よくある原因
JSONエラーの原因はだいたいこのあたりです。
・シングルクォートを使っている
・末尾にカンマがある
・改行や特殊文字でJSONが壊れている
・Expressionの使い方が間違っている
特に多いのが「見た目は正しそうなのにJSONとして壊れているパターン」です。
ダメな例
{
'text': 'hello'
}{
"text": "hello",
}{{ $json.text }}これらはすべてJSONとしては不正です。
正しい書き方
{
"text": "hello"
}一番安全な方法
改行や記号が混ざる場合は、JSON.stringifyを使うのが一番安全です。
{{ JSON.stringify({ text: $json.post_text }) }}これで、どんな文字列でもJSONとして壊れなくなります。
Using JSONでハマるポイント
n8nでよくあるのが「Using JSON」にしたのにエラーになるパターンです。
ダメな例
{{ $json.post_text }}これはただの文字列なのでJSONではありません。
正しい書き方
{
"text": "{{ $json.post_text }}"
}必ず「JSONオブジェクトとして書く」必要があります。
HTTP Request設定のチェックポイント
X APIにPOSTする場合は、以下の設定を確認してください。
最低限チェックする項目
・Method:POST
・URL:https://api.x.com/2/tweets
・Content-Type:application/json
・Body:JSON形式
特にContent-TypeとBody形式がズレていると、ほぼ確実にエラーになります。
データが途中で消える問題
少し応用ですが、n8nでよくあるのが「途中でデータが消える」問題です。
よくあるパターン
・前のノードで作ったデータが消えている
・次のノードでundefinedになる
原因
後続のJavaScriptノードでreturnを上書きしている
ダメな例
return {
json: {
text: "生成した文章"
}
}これをやると、それまでのデータが全部消えます。
正しい書き方
return {
json: {
...$json,
text: "生成した文章"
}
}既存データを残しながら追加するのが重要です。
まとめ
X APIでデータが取れない原因は、大きく分けるとこの3つです。
・クエリ設計の問題
・HTTP Requestの設定ミス
・JSONの扱いミス
特にn8nを使っている場合は、
「X APIの問題ではなく、自分の設定ミス」であることがかなり多いです。
一度シンプルな状態に戻して、
少しずつ確認していくのが一番ハマりにくい方法です。

