AIToday
大規模言語モデルAIコーディングZenn AI/ML掲載日時: 2026年10月4日 22:00

PythonとClaude Code、CDNゼロでAIの雑さに歯止め

LINEで送る
PythonとClaude Code、CDNゼロでAIの雑さに歯止め

3つのポイント

  1. 何が起きたか

    著者はPythonとClaude Codeだけで小規模事業のサイトを構築。CDNもnpmもJSフレームワークも使わず、ルート絶対リンクやリンク切れ、タグの不一致、alt欠落を自動で不合格にする。

  2. なぜ重要か

    例外を1つでも許せば、次にページを書くAIがそれをコピーする。だから厳格なチェックは、生成コンテンツが仕様から外れるのを防ぐ著者の防壁だ。

  3. 注目点

    urlsリストは4か所に手書きのままで、記載漏れがあると新規記事が検索に届かない。現在はsitemapチェックが公開を止める仕組みだ。

誰に効くかAIに静的サイトのページを生成・編集させる開発者や小規模事業者。不正なパスやタグに例外を認めない著者のルールは、AI生成HTMLが見過ごされることへの実用的な歯止めだ。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

サイトは意図的に小さい。1本のPythonスクリプトが各ページを辞書として保持し、depth値によって各ページが独自の相対パスを構築できるようにして書き出す。著者がCDN、npm、JavaScriptフレームワークを外したのはスタイルの選択ではなく、何かが壊れ続けたからだ。

壊れたのはルート絶対パスだった。 /blog/... と書かれたリンクは公開後は機能するが、ローカルコピーをブラウザでfile://経由で直接開くと、すべてがドライブのルートを指してしまう。著者は公開前にローカルコピーをプレビューするため、この失敗ですべての検証が止まる。ビルドは今やルート絶対リンク1つで失敗する。1つでも例外を許せば、次にページを書くAIがそれをコピーするからだ。

同じスクリプトはリンク切れ、section、div、table、articleなど開閉タグ数が一致しないタグ、禁止文字列を監視する。製品ページはCSV台帳から組み立てられる。22行のうち、公開フラグがyesの17行が取り込まれる(2026-10-02時点、社数)。その台帳をutf-8-sigではなくutf-8で読むのが落とし穴だった。ExcelがBOMを付加し、公開キーに見えない文字が加わり、r.get("公開")がNoneを返し、エラーなしで空の製品リストが生成される。目視でしか気づけない。幅900pxの写真ファイルは書き出し前にバイト単位で比較されるため、変更のない画像は書き換えられず、廃番製品の写真は削除される。sitemapのlastmod日付はHTMLハッシュの比較で設定され、追跡されていないページはlastmodなしのままとなる。残る手作業は4か所に書かれたurlsリストだけだ。記載漏れがあると記事がsitemapに入らない。公開前チェックは現在、sitemap.xmlにないページで停止する。著者はその種の問題がそもそも起きないことを望んでいる。

よくある質問
著者がサイトからCDNを外したのはなぜか?
好みの問題ではない。 /blog/... のようなルート絶対リンクは公開後は機能するが、ローカルコピーをfile://で開くと壊れた。著者は公開前にブラウザでローカルコピーを確認する。
ビルドは壊れたページや不正なページをどう検知するか?
HTMLを書き出した後、同じスクリプトが禁止文字列、ルート絶対パス、リンク切れ、タグの不一致、altのないimgタグを走査する。section、div、table、articleのタグ数も比較する。
sitemapがlastmod日付を省略することがあるのはなぜか?
変更追跡を始めた時点より古いページは日付を正確に特定できない。その日付はNoneに設定され、lastmod行は省略される。著者は推測するよりこれを好む。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

関連記事

次の記事へTSMC売上高1430億ドル