よくある原因
AI生成HTMLで外部リンクが混入する原因の第一位は、モデルがデモ用として挿入する`https://example.com`や`https://your-domain.com`といった仮URLです。これらはHTMLの見た目には影響しないため、ブラウザでプレビューしても気づかずに共有してしまうことがあります。
CDNから読み込む外部ライブラリ(Bootstrap、jQuery等)の`<script src>`タグ内に`onload`コールバックで外部APIを呼ぶコードが含まれている場合も、意図しない外部通信として問題になることがあります。共有先の社内セキュリティポリシーによっては閲覧自体がブロックされるケースもあります。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
自分側で確認すること
共有前チェック①:`grep -n 'href="http\|action="http'` をHTMLファイルに実行し、外部URLの行番号をリストアップします。件数が0であれば外部リンクなしと確認できます。Windowsの場合はメモ帳の「検索」→「次を検索」で`href="http`を逐次確認してください。
共有前チェック②:ブラウザで開いた状態でDevToolsの「Elements」タブを開き、`<a>`タグをすべて展開して`href`属性を目視確認します。件数が多い場合はコンソールで`document.querySelectorAll('a[href^="http"]')`を実行するとリンク要素の配列が返るので効率的です。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
相手側で確認すること
相手から「別のサイトに飛んだ」と連絡が来たときは、まずスクリーンショットまたはアドレスバーのURLを共有してもらいます。「どのボタン・テキストリンクをクリックしたか」も併せて聞くと、HTML内の対象箇所を素早く特定できます。
PCとスマホで発生状況が異なる場合、スマホブラウザ(Safari/Chrome for iOS)がAMPやリダイレクトを自動適用している可能性があります。相手にChromeのシークレットタブで試してもらい、再現すればHTML側の問題、しなければ環境依存と切り分けられます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
再発防止の運用
チェックリストをNotionやSpreadsheetに常設しておき、共有のたびにチェックボックスを埋める運用にすると見落としが減ります。「href外部URL確認」「form action確認」「iframe src確認」の3行だけで大半のトラブルをカバーできます。
ギガサイト便にアップロードする直前を「最終確認タイミング」と決め、ファイルを開いてCtrl+Fで`http`を検索する手順をSOP(標準作業手順書)に明記しておくと、チームメンバーが代行する場合にも品質を保てます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
チェックリストを自動化する方法はありますか?
Node.jsが使える環境なら`cheerio`でHTMLをパースし、全`href`属性を配列にして外部URLをフィルタするスクリプトが10行程度で書けます。CIに組み込めば毎回自動でチェックできます。
iframe内のリンクも別ドメイン扱いになりますか?
iframeのsrc属性が外部ドメインであれば、iframe内のすべての操作はそのドメインのコンテキストで動きます。クリックが外部へ飛ぶというよりiframe自体が外部ページを表示する点を区別して確認してください。
relative pathに直してもローカルでは動くのに共有先では404になります
相対パスはHTMLファイルの配置場所からの相対になります。ギガサイト便のようにルート直下に置く場合と、サブディレクトリに置く場合でパスが変わるため、`/`始まりの絶対パスに統一するか、CSSやJSをHTMLにインライン化するのが確実です。