---
title: 検証
description: >-
  blume validate はコンテンツ内のすべてのリンク（ページ、アンカー、アセット、オプションで外部 URL）をチェックし、壊れたリンクがあれば CI を失敗させます。
---

`blume validate` はビルドと同じ方法でコンテンツを読み込み、見つかったすべてのリンクをチェックします。何も生成・ビルドしないため、`blume build` の前に置く高速なゲートとして使えます。

```bash
blume validate
```

- **内部ページリンク**（`/guides/intro`、`./sibling`）は、実在するページに解決される必要があります。壊れたリンクはエラーとして報告されます。コンポーネントの文字列の `href`（`<Card href="./install">`）も同じようにチェックされますが、`href={…}` 式はチェックされません。
- **アンカーリンク**（`#section`、`/guides/intro#setup`）は、リンク先ページのアンカーと一致する必要があります。アンカーとは、見出しの id（自動生成されたもの、または[固定](/docs/content/syntax#custom-anchors)したもの）か、生の HTML 要素の `id` 属性のことです。一致しないものは警告として報告されます。コードブロック、インラインコード、HTML コメント、`<Prompt>` ブロック内の id は対象外です。
- **アセットリンク**は、ファイルの置き場所に応じてチェックされます。絶対パス（`/logo.png`）は `public/` ディレクトリを基準に、相対パスの画像埋め込み（`![](./diagram.png)`）はそのページ自身のフォルダーを基準にチェックされます。相対パスへの通常のリンクは、引き続きサイトのルートとして解決されます。画像パイプラインを通るのは画像埋め込みだけです。
- **外部リンク**は [`--external`](#flags) を指定した場合にのみチェックされます（ネットワークが必要なため、デフォルトではオフです）。リンク切れ（404/410/到達不能）はエラーになり、レート制限や一時的なレスポンス（403/429/5xx/タイムアウト）は警告になります。

## ページとして扱われるもの [#what-counts-as-a-page]

リンクは Markdown ページだけでなく、ビルドされたサイトが配信するすべてのものに対して解決されます。対象には、カスタムの [`.astro` ページ](/docs/advanced/custom-pages)、生成された[変更履歴](/docs/advanced/changelog)のインデックス、設定されたすべての[リダイレクト](/docs/deployment#redirects)が含まれます。[多言語サイト](/docs/content/i18n)では、未翻訳ページが各ロケールで使うフォールバック URL も含まれます。パースに失敗したページは、リンクの検出結果と一緒に報告されます。読み込まれないページは問題のない結果ではなく、リンク検証の死角になるためです。

## フラグ [#flags]

- `--external` — 外部の `http(s)` リンクもネットワーク経由でチェックします。
- `--strict` — 警告があった場合も 0 以外のコードで終了します。info レベルの通知は、引き続き参考情報として扱われます。
- `--json` — 診断結果をターミナル向けのレポートではなく、JSON として stdout に出力します。

## 診断 [#diagnostics]

| コード | 重大度 | 意味 |
| --- | --- | --- |
| `BLUME_BROKEN_LINK` | error | 内部リンクが、どのページも配信していないルートを指しています。 |
| `BLUME_BROKEN_ANCHOR` | warning | ページは存在しますが、フラグメントに一致するアンカーがありません。 |
| `BLUME_BROKEN_ASSET` | warning | 絶対パスのファイルが `public/` に存在しないか、相対パスで埋め込んだ画像がページと同じフォルダーにありません。 |
| `BLUME_ASSETS_UNCHECKED` | info | `public/` ディレクトリがないため、絶対パスのアセットはチェックされませんでした。 |
| `BLUME_DEAD_LINK` | error または warning | 外部リンク（`--external` 指定時）が 404/410 を返したか到達不能だった（error）、または一時的な 403/429/5xx/タイムアウトだった（warning）ことを示します。 |

判定の基準になるのは終了コードです。エラーがあると 0 以外のコードで終了し、`--strict` を指定すると警告でも同様に終了します。

## JSON 出力 [#json-output]

`--json` を指定すると、`blume validate`（および [`blume doctor`](/docs/cli/doctor)）は 1 つのオブジェクトを stdout に書き出します。このオブジェクトには、`diagnostics` リストと、重大度ごとの件数をまとめた `summary` が含まれます。`diagnostics` の各エントリには、`code`、`severity`、`message`、`suggestion`、そのコードを説明するページを指す `docsUrl`、そしてプロジェクトルートからの相対パスである `file` が含まれます。検出結果に位置情報がある場合は、`line` と `column` も含まれます。終了コードは変わらないため、同じ呼び出しを CI のゲートとエディター連携の両方に使えます。
