> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Meta Media Crawler がブロックされている (Instagram / Threads)

> robots.txt またはボットルールが Meta のメディアクローラーをブロックすることによって発生するエラーコード 440(および関連する Instagram 138 / Threads 379)の修正方法。

エラーコード **440**(および関連する Instagram コード **138** / Threads コード **379**)は、Meta の公開クローラーがメディア URL をダウンロードできない場合に返されます — 最も一般的には、サーバー上の `robots.txt` またはボットブロッキングルールがクローラーを拒否しているためです。

<Note>
  このページでは、エラーメッセージまたは詳細で、ソーシャルネットワークがメディアをダウンロードできなかったことに言及している失敗をカバーしています。通常、`facebookexternalhit`、`robots.txt`、`"Restricted by robots.txt"`、`"HTTP error code 403"`、または Meta エラー `2207052` を参照しています。Instagram コード 138 のアスペクト比またはフォーマットエラーについては、代わりに [Instagram Media Guidelines](/media-guidelines/instagram) または [Threads Media Guidelines](/media-guidelines/threads) を参照してください。
</Note>

## 症状

クローラーがブロックされている場合、次のようなエラーが表示されます:

```json Error 440 (primary) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 440,
    "message": "The social network could not download media from this URL (for example Instagram/Meta error 2207052). Ensure the file is publicly reachable by the platform's crawlers (e.g. facebookexternalhit), via media bucket's robots.txt file, not only in a browser.",
    "details": "Media download has failed.: The media could not be fetched from the provided URI...",
    "platform": "instagram",
    "status": "error"
  }],
  "postIds": [],
  "id": "..."
}
```

```json Instagram Error 138 (fallback — less specific upstream response) theme={"system"}
{
  "status": "error",
  "errors": [{
    "retryAvailable": true,
    "status": "error",
    "code": 138,
    "details": "Media download has failed.: The media could not be fetched from the provided URI. Video download failed with: HTTP error code 403. Restricted by robots.txt",
    "action": "post",
    "platform": "instagram",
    "message": "Instagram Error: Instagram cannot process your post at this time. Please try your post again."
  }],
  "postIds": [],
  "id": "..."
}
```

```json Threads Error 379 theme={"system"}
{
  "status": "error",
  "errors": [{
    "status": "error",
    "code": 379,
    "message": "Error posting to Threads.",
    "action": "post",
    "platform": "threads"
  }],
  "postIds": [],
  "id": "..."
}
```

<Note>
  コード **440** はこの失敗のための Ayrshare 専用のコードであり、そのメッセージは明示的に `facebookexternalhit` と `robots.txt` を指名しています — 440 が表示された場合、正しいページにいます。コード **138** は、上流のレスポンスがより具体的でない場合に同じ根本原因で発行されます。138 はアスペクト比/フォーマットの問題にも使用されるため、メディア取得のバリアントは `details` の `"Restricted by robots.txt"` または `"HTTP error code 403"` で識別できます。コード **379** には `details` フィールドが含まれていません — Threads が Instagram 440 または 138 と一緒に失敗する場合、根本原因は通常同じです。
</Note>

## なぜ発生するか

Ayrshare 経由で Instagram または Threads に公開する場合、Meta のサーバーが提供された URL からメディアを取得します。このサーバー側の取得は `facebookexternalhit` User-Agent を使用します。サーバーの `robots.txt` がこのクローラーを禁止しているか、WAF/ボット保護ルールがブロックしている場合、Meta はファイルをダウンロードできず、公開は失敗します。

Facebook Page の公開は異なる取り込みパスを使用するため、同じ `mediaUrl` が Facebook では機能しても、Instagram と Threads では失敗する可能性があります。

## 修正: robots.txt を更新する

### 推奨: Meta を明示的に許可し、他のクローラーはオープンにしておく

これらのルールを `robots.txt` ファイルに追加します:

```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /

User-agent: *
Allow: /
```

これは Meta のクローラーを明示的に許可しつつ、他のクローラー(Google、Bing など)にもサイトをオープンにしておきます。

### 高度: ソーシャルパブリッシャーのみにロックダウン

ほとんどのクローラーをブロックしつつ、ソーシャルメディアプラットフォームを許可したい場合:

```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /

User-agent: Twitterbot
Allow: /

User-agent: LinkedInBot
Allow: /

User-agent: Pinterest
Allow: /

User-agent: *
Disallow: /
```

<Warning>
  ファイルの末尾に配置した単一の `User-agent: *` ブロックを使用してください。RFC 9309 準拠のクローラーは複数のワイルドカードグループを 1 つにマージしますが、実際のすべてのパーサーが RFC 準拠ではありません — 重複したワイルドカードグループは、ルールが削除されたり一貫性なく適用されたりする一般的な原因です。
</Warning>

## Meta が URL を取得できるか確認する

投稿を再試行する前に、Meta のクローラーがメディアにアクセスできるかを確認します。`$URL` を完全なメディア URL に置き換えて、このコマンドを実行します:

```bash theme={"system"}
curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" \
  -A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" \
  "$URL"
```

<ul class="custom-bullets">
  <li>**健全なレスポンス:** HTTP 200 または 206 でボディにバイナリデータ。</li>
  <li>**ブロックされたレスポンス:** HTTP 403 または空/HTML エラーページ。</li>
</ul>

<Note>
  Meta のドキュメントによれば、`robots.txt` の変更が Meta のクローラーキャッシュに伝播するには最大 24 時間かかる場合があります。確認が成功しても投稿がまだ失敗する場合は、待ってから後で再試行してください。
</Note>

## それでも修正されない場合

`robots.txt` を更新して `curl` コマンドで確認しても失敗が続く場合:

<ul class="custom-bullets">
  <li>**24 時間の伝播遅延** — Meta は `robots.txt` をキャッシュします。変更後最大 24 時間待ってから再試行してください。</li>
  <li>**WAF またはボット対策ルール** — Cloudflare Bot Fight Mode、AWS WAF managed bot ルールグループ、および同様のサービスは、`robots.txt` で許可されていても Meta のクローラー IP 範囲をブロックする可能性があります。WAF ログを確認し、`facebookexternalhit` の例外を追加してください。</li>
  <li>**ホットリンク保護 / Referer チェック** — 一部の CDN はデータセンター IP からのリクエストや有効な `Referer` ヘッダーなしのリクエストをブロックします。Meta のクローラーをホワイトリストに追加するか、メディアパスのホットリンク保護を無効にしてください。</li>
  <li>**署名付き URL / 事前署名付き URL の有効期限** — メディア URL に有効期限のタイムスタンプがある場合(S3 事前署名 URL で一般的)、Meta のクローラーが取得できる前に期限切れにならないようにしてください。スケジュール投稿の場合、スケジュール時刻を十分に過ぎるまで有効な URL を生成してください。</li>
  <li>**マネージドメディアホスティング** — Cloudinary、Imgix などの `robots.txt` を編集できないサービスを使用している場合、Meta/Facebook クローラーの許可リスト設定についてドキュメントを確認してください。</li>
</ul>

これらのいずれも問題を解決しない場合は、[Ayrshare サポートに連絡](https://www.ayrshare.com/contact) して、以下を含めてください:

* エラーレスポンスからの失敗した `postId`
* 上記の `curl` 確認コマンドの出力
* `robots.txt` の内容

## 失敗した投稿を再試行する

クローラーアクセスの問題を解決したら、[Retry Post エンドポイント](/apis/post/retry-post) を使用して失敗した投稿を再試行してください。

## 関連項目

<ul class="custom-bullets">
  <li>[Instagram API](/apis/post/social-networks/instagram)</li>
  <li>[Threads API](/apis/post/social-networks/threads)</li>
  <li>[Instagram Media Guidelines](/media-guidelines/instagram)</li>
  <li>[Threads Media Guidelines](/media-guidelines/threads)</li>
  <li>[Ayrshare Error Codes](/errors/errors-ayrshare#media-fetch--crawler-access-errors)</li>
  <li>[Video Publishing Fails](/help-center/technical-support/video_publishing_fails)</li>
</ul>
