X APIでデータが取得できない原因まとめ|result_countが0・エラーの対処法【n8n対応】

AI自動化

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:ja

has:videosで詰む問題

地味にこれもハマります。

has:videos

これを入れた瞬間に0件になることがあります。

正直、かなり厳しめの条件なので、
まずは外して動かす方がいいです。

max_resultsの罠

これも見落としがちです。

max_results=5

これ、エラーになります。

X APIは10〜100の範囲しか使えません。

max_results=10

n8nで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の問題ではなく、自分の設定ミス」であることがかなり多いです。

一度シンプルな状態に戻して、
少しずつ確認していくのが一番ハマりにくい方法です。

タイトルとURLをコピーしました