← CLAUDE-PENGIN-TOOLS
DOCUMENT · 6.5 KB

tools/README.md

Workspace snapshot · 09/04 13:33

PENGIN Tools — CLI

Web制作の面倒な確認作業を、小さなコマンドでなくす。 公開前チェック、移行後の確認、保守報告のための読み取り専用CLI集です。

  • 外部パッケージ不要。 すべてPython 3.10以上の標準ライブラリだけで動きます。
  • サイトを書き換えません。 全ツールが読み取り専用です。
  • 判定は明示的。 ERRORが1件でもあれば終了コード1。CIやリリース前チェックに挟めます。

6つのツール

ツール一言で本命の判定
ogp-bulk-checkerURL一覧のtitle / description / canonical / OGPを一括取得ページ単体の不足と重複
robots-sitemap-checkerrobots.txt と sitemap の矛盾を検出sitemapに載せたURLを自分のrobots.txtが塞いでいる
link-asset-checkerリンク切れ・混在コンテンツ・ステージング残骸消し忘れたステージングURLが本番に残っている
site-consistency-auditorページ間の矛盾(取得なし)canonical宣言の食い違い / canonical先がnoindex
redirect-map-checkerリダイレクト表を実レスポンスと突き合わせ想定外の遷移先・多段リダイレクト
maintenance-report-generator更新前後の証跡から保守報告を生成未確認を「問題なし」と書かない

共通している考え方

単体では正しいのに、組み合わせると噛み合っていない。 それが一番気づきにくい取りこぼしです。

無料のチェッカーは「このURLはインデックスできるか」を1本ずつ見ます。 ここにあるツールが見るのは、その先です。robots.txtとsitemapの関係、ページ同士のcanonicalの関係、 公開したHTMLと参照先ホストの関係。関係のほうが、単体より壊れやすく、単体より見つけにくい。

もうひとつは、確認していないことを確認したと言わないこと。 保守報告ジェネレータは、報告しなかった項目を黙って省かず「未確認」として必ず出します。 沈黙が合格に化けると、報告書そのものが信用を失うからです。

使い方の例(公開前チェック)

# 1. 各ページのメタ情報を集める
python ogp-bulk-checker/ogp_check.py --file urls.txt --format json --output meta.json

# 2. ページ間の矛盾を見る(ネットワーク不要)
python site-consistency-auditor/site_consistency.py meta.json --format markdown

# 3. robots.txt と sitemap の整合
python robots-sitemap-checker/robots_sitemap_check.py https://example.com

# 4. リンク切れ・混在コンテンツ・ステージング残骸
python link-asset-checker/link_asset_check.py --file urls.txt

機能を重ねていません

同じ判定を2箇所に置かないようにしてあります。各READMEに「これは見ない、あちらの担当」と書いてあります。

  • ページ単体の不足 → ogp-bulk-checker
  • ページ間の関係 → site-consistency-auditor
  • robots.txt と sitemap → robots-sitemap-checker
  • URLの到達性と混在コンテンツ → link-asset-checker

使ってよい対象と、実際に飛ぶリクエスト

自分が所有または管理を委任されたサイトにのみ使用してください。 対象サイトへの書き込みは一切行いません(DB・ファイル・設定を変更しません)。 書き出すのは --output で指定したローカルファイルだけです。

ただし「クロールしない」はツールによって意味が違うので、正確に書きます。

ツール取得するURL
ogp-bulk-checker / redirect-map-checker指定したURLだけ
robots-sitemap-checker指定サイトの robots.txt、sitemap、ルートページ
ai-crawler-access-checker指定サイトの robots.txt と llms.txt
site-consistency-auditor取得を一切行いません(他ツールのJSONを読むだけ)
maintenance-report-generator取得を一切行いません(ローカルの作業ログを読むだけ)
link-asset-checker指定ページ+そのページ内で見つけたリンクとアセットを1階層だけ取得します
launch-check-runner上記4ツールを呼ぶため、それぞれの範囲を合算した分

link-asset-checker は、リンク切れを判定するために発見したURLへ実際にリクエストを送ります。 リンクが多いページでは相応の件数になります。リクエスト間隔(既定あり)と件数上限(MAX_TARGETS)で 抑えてありますが、再帰的にページを辿ることはしません(1階層で止まります)。

他人のサイトへ向けることは想定していません。

テスト

各ツールに、ネットワークへ出ないオフラインテストを同梱しています。

# 全ツールまとめて(推奨)— リポジトリのルートで
python verify_all.py

# 1本だけ
cd <ツールのディレクトリ> && python -m unittest discover -s tests

verify_all.py は全スイートを別プロセスで実行し、1枚の表と終了コードで返します。 スイートが1本も見つからなかった場合も終了コード1です(沈黙を成功として扱いません)。 全部PASSでも、確認していない範囲を毎回あわせて印字します。

検証状況

  • 各ツールの判定ロジックのオフラインテスト: 同梱済み。ただし作成環境では未実行です。 実行結果を伴わない「テスト済み」表示はしません。python verify_all.py を1回叩けば、 この行が実測に置き換わります。
  • 実サイトに対するスモークテスト: 未実施

正直に書きます。これらは実サイトで一度も走らせていません。読み取り専用なので壊すことはありませんが、 期待どおり動くという保証は、まだこちらにありません。 動かない箇所があればIssueでお知らせください。

License

MIT.

Part of PENGIN Tools — 制作・移行・保守・AI検索まで、Web制作者のためのツールボックス。