robots.txt またはボットブロッキングルールがクローラー(facebookexternalhit)を拒否していることです。このコードは Ayrshare の自動再ホスティングによるフォールバックも失敗した後にのみ返されるため、ホスト側のブロックまたは到達できないソースである可能性が非常に高いことを示します。
Ayrshare は Instagram または Threads に公開する際、URL をそのまま Meta に渡してあきらめるわけではありません。Ayrshare は取得を自動的に再試行し、それでも Meta がメディアに到達できない場合は、自社の CDN にコピーを再ホストして、Meta にそちらを取得するよう依頼します。コード 479 は、このフォールバックでも Meta がメディアを取得できなかったことを意味します。そのため、根本的なホスティングの問題が解決されるまで、同じリクエストを再試行しても解決しません(retryAvailable: false、HTTP 400)。
このページでは、エラーメッセージまたは詳細で、ソーシャルネットワークがメディアをダウンロードできなかったことに言及している失敗をカバーしています。通常、
facebookexternalhit、robots.txt、"Restricted by robots.txt"、"HTTP error code 403"、または Meta サブコード 2207052 を参照しています。Instagram コード 138 のアスペクト比またはフォーマットエラーについては、代わりに Instagram Media Guidelines または Threads Media Guidelines を参照してください。症状
クローラーがブロックされている場合、次のようなエラーが表示されます:Error 479 (primary — dedicated, non-retryable)
Error 440 (transient ingestion — retryable)
Instagram Error 138 (fallback — less specific upstream response)
Threads Error 379
これらのコードの違いについて:
- コード 479: メディア取得 / クローラーブロック専用(再試行不可)。 このページで扱う失敗のためのコードです。Meta がメディアを取得できなかった場合(サブコード
2207052またはメディア取得に関するテキストパターン)、Ayrshare が自社の CDN に再ホストした後でも取得できなかったときに、retryAvailable: falseとともに返されます。そのメッセージはfacebookexternalhit/Facebotとrobots.txtを明示的に挙げています。479 が表示された場合、このページが該当します。再試行する前にホスティングを修正してください。 - コード 440: 一時的な取り込みエラー(再試行可能)。 現在は、本当に一時的な取り込みの失敗に使用されます。Meta サブコード
2207032(「download too slow」)/2207003(「create media fail」)、または分類されない取り込みの失敗です。retryAvailable: trueが付きます。/post/retryで再試行してください。 - コード 138: より具体的でない Instagram のフォールバック。 上流のレスポンスがより具体的でない場合に、同じ根本原因で発行されます。138 はアスペクト比/フォーマットの問題にも使用されるため、メディア取得のバリアントは
detailsの"Restricted by robots.txt"または"HTTP error code 403"で識別できます。 - コード 379: Threads。
detailsフィールドは含まれません。Threads が Instagram 479 または 138 と一緒に失敗する場合、根本原因は通常同じです。
なぜ発生するか
Ayrshare 経由で Instagram または Threads に公開する場合、Meta のサーバーが提供された URL からメディアを取得します。このサーバー側の取得はfacebookexternalhit User-Agent を使用します。サーバーの robots.txt がこのクローラーを禁止しているか、WAF/ボット保護ルールがブロックしている場合、Meta はファイルをダウンロードできず、公開は失敗します。
Facebook Page の公開は異なる取り込みパスを使用するため、同じ mediaUrl が Facebook では機能しても、Instagram と Threads では失敗する可能性があります。
修正: robots.txt を更新する
推奨: Meta を明示的に許可し、他のクローラーはオープンにしておく
これらのルールをrobots.txt ファイルに追加します:
robots.txt
高度: ソーシャルパブリッシャーのみにロックダウン
ほとんどのクローラーをブロックしつつ、ソーシャルメディアプラットフォームを許可したい場合:robots.txt
Meta が URL を取得できるか確認する
投稿を再試行する前に、Meta のクローラーがメディアにアクセスできるかを確認します。$URL を完全なメディア URL に置き換えて、このコマンドを実行します:
- 健全なレスポンス: HTTP 200 または 206 でボディにバイナリデータ。
- ブロックされたレスポンス: HTTP 403 または空/HTML エラーページ。
Meta のドキュメントによれば、
robots.txt の変更が Meta のクローラーキャッシュに伝播するには最大 24 時間かかる場合があります。確認が成功しても投稿がまだ失敗する場合は、待ってから後で再試行してください。それでも修正されない場合
robots.txt を更新して curl コマンドで確認しても失敗が続く場合:
- 24 時間の伝播遅延 — Meta は
robots.txtをキャッシュします。変更後最大 24 時間待ってから再試行してください。 - WAF またはボット対策ルール — Cloudflare Bot Fight Mode、AWS WAF managed bot ルールグループ、および同様のサービスは、
robots.txtで許可されていても Meta のクローラー IP 範囲をブロックする可能性があります。WAF ログを確認し、facebookexternalhitの例外を追加してください。 - ホットリンク保護 / Referer チェック — 一部の CDN はデータセンター IP からのリクエストや有効な
Refererヘッダーなしのリクエストをブロックします。Meta のクローラーをホワイトリストに追加するか、メディアパスのホットリンク保護を無効にしてください。 - 署名付き URL / 事前署名付き URL の有効期限 — メディア URL に有効期限のタイムスタンプがある場合(S3 事前署名 URL で一般的)、Meta のクローラーが取得できる前に期限切れにならないようにしてください。スケジュール投稿の場合、スケジュール時刻を十分に過ぎるまで有効な URL を生成してください。
- マネージドメディアホスティング — Cloudinary、Imgix などの
robots.txtを編集できないサービスを使用している場合、Meta/Facebook クローラーの許可リスト設定についてドキュメントを確認してください。
- エラーレスポンスからの失敗した
postId - 上記の
curl確認コマンドの出力 robots.txtの内容
失敗した投稿を再試行する
再試行の動作は、受け取ったコードによって異なります:- コード 440(一時的、
retryAvailable: true): 取り込みが時間切れになったか、Meta の一時的なエラーが発生しただけです。Retry Post エンドポイント を使用して直接再試行してください。ホスティングを変更する必要はありません。 - コード 479(
retryAvailable: false): Ayrshare が自社の CDN に再ホストした後でも Meta がメディアを取得できなかったため、ブロックされた URL を変更せずに再試行しても再び失敗します。まずホスティングを修正してください:robots.txtと WAF で Meta のクローラー(facebookexternalhit/Facebot)を許可するか、Meta が到達できる CDN にメディアを再ホストしてください。上記のcurlコマンドで確認してから、Retry Post エンドポイント で再試行してください。