> ## 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 がブロックされている

> WAF や robots.txt による Meta の facebookexternalhit 遮断で起きる error 479 の修正と curl テスト。

エラーコード **479** は、Meta がメディア URL を取得できない場合に返される、**再試行不可**の Ayrshare 専用コードです。最も一般的な原因は、サーバー上の `robots.txt` またはボットブロッキングルールがクローラー(`facebookexternalhit`)を拒否していることです。このコードは Ayrshare の自動再ホスティングによるフォールバックも失敗した後にのみ返されるため、ホスト側のブロックまたは到達できないソースである可能性が非常に高いことを示します。

Ayrshare は Instagram または Threads に公開する際、URL をそのまま Meta に渡してあきらめるわけではありません。Ayrshare は取得を自動的に再試行し、それでも Meta がメディアに到達できない場合は、**自社の CDN にコピーを再ホスト**して、Meta にそちらを取得するよう依頼します。コード **479** は、このフォールバックでも Meta がメディアを取得できなかったことを意味します。そのため、根本的なホスティングの問題が解決されるまで、同じリクエストを再試行しても解決しません(`retryAvailable: false`、HTTP 400)。

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

## 症状

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

```json Error 479 (primary — dedicated, non-retryable) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 479,
    "retryAvailable": false,
    "message": "The social network could not fetch the media from this URL, even after Ayrshare re-hosted it on its own CDN (Instagram/Meta subcode 2207052). Ensure the file is publicly reachable by Meta's crawlers (facebookexternalhit / Facebot) — check your robots.txt and any WAF/bot rules — not only in a browser. Retrying the same URL will not help until hosting is fixed.",
    "details": "Media download has failed.: The media could not be fetched from the provided URI. Restricted by robots.txt (HTTP error code 403). Meta subcode 2207052.",
    "platform": "instagram",
    "status": "error"
  }],
  "postIds": [],
  "id": "..."
}
```

```json Error 440 (transient ingestion — retryable) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 440,
    "retryAvailable": true,
    "message": "The social network could not ingest the media in time. This is usually transient (for example Meta subcode 2207032 'download too slow' or 2207003 'create media fail'). Retry the post.",
    "details": "Media download has failed.: Media download took too long / could not create media...",
    "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]
>
> これらのコードの違いについて:
>
> <ul>
>   <li>**コード 479: メディア取得 / クローラーブロック専用(再試行不可)。** このページで扱う失敗のためのコードです。Meta がメディアを取得できなかった場合(サブコード `2207052` またはメディア取得に関するテキストパターン)、**Ayrshare が自社の CDN に再ホストした後でも**取得できなかったときに、`retryAvailable: false` とともに返されます。そのメッセージは `facebookexternalhit` / `Facebot` と `robots.txt` を明示的に挙げています。479 が表示された場合、このページが該当します。再試行する前にホスティングを修正してください。</li>
>   <li>**コード 440: 一時的な取り込みエラー(再試行可能)。** 現在は、本当に一時的な取り込みの失敗に使用されます。Meta サブコード `2207032`(「download too slow」)/ `2207003`(「create media fail」)、または分類されない取り込みの失敗です。`retryAvailable: true` が付きます。[`/post/retry`](https://www.ayrshare.com/docs/apis/post/retry-post) で再試行してください。</li>
>   <li>**コード 138: より具体的でない Instagram のフォールバック。** 上流のレスポンスがより具体的でない場合に、同じ根本原因で発行されます。138 はアスペクト比/フォーマットの問題にも使用されるため、メディア取得のバリアントは `details` の `"Restricted by robots.txt"` または `"HTTP error code 403"` で識別できます。</li>
>   <li>**コード 379: Threads。** `details` フィールドは含まれません。Threads が Instagram 479 または 138 と一緒に失敗する場合、根本原因は通常同じです。</li>
> </ul>

## なぜ発生するか

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 準拠ではありません — 重複したワイルドカードグループは、ルールが削除されたり一貫性なく適用されたりする一般的な原因です。

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

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

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

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

<ul>
  <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` の内容

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

再試行の動作は、受け取ったコードによって異なります:

<ul>
  <li>**コード 440(一時的、`retryAvailable: true`)**: 取り込みが時間切れになったか、Meta の一時的なエラーが発生しただけです。[Retry Post エンドポイント](https://www.ayrshare.com/docs/apis/post/retry-post.md) を使用して直接再試行してください。ホスティングを変更する必要はありません。</li>
  <li>**コード 479(`retryAvailable: false`)**: Ayrshare が自社の CDN に再ホストした後でも Meta がメディアを取得できなかったため、ブロックされた URL を変更せずに再試行しても再び失敗します。**まずホスティングを修正してください**: `robots.txt` と WAF で Meta のクローラー(`facebookexternalhit` / `Facebot`)を許可するか、Meta が到達できる CDN にメディアを再ホストしてください。上記の `curl` コマンドで確認してから、[Retry Post エンドポイント](https://www.ayrshare.com/docs/apis/post/retry-post.md) で再試行してください。</li>
</ul>

## 関連項目

<ul>
  <li>[Instagram API](https://www.ayrshare.com/docs/apis/post/social-networks/instagram.md)</li>
  <li>[Threads API](https://www.ayrshare.com/docs/apis/post/social-networks/threads.md)</li>
  <li>[Instagram Media Guidelines](https://www.ayrshare.com/docs/media-guidelines/instagram.md)</li>
  <li>[Threads Media Guidelines](https://www.ayrshare.com/docs/media-guidelines/threads.md)</li>
  <li>[Ayrshare Error Codes](https://www.ayrshare.com/docs/errors/errors-ayrshare.md#media-fetch-crawler-access-errors)</li>
  <li>[Video Publishing Fails](https://www.ayrshare.com/docs/help-center/technical-support/video-publishing-fails.md)</li>
</ul>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.