First CH Apps / 見出し構造(hタグ)抽出
URLを入れると、そのページの h1〜h6 をサーバー側で取得して、出現順にインデントつきのアウトラインで表示します。h1が複数ある・レベルが飛んでいる(h2の次にh4)・テキストの無い見出しがある、といった構造の破れを警告つきで指摘します。
SEOの基本項目を1画面で見るなら「メタタグ・SEO基本診断」、リンク切れと画像altなら「リンク切れ・alt属性チェック」が担当します。ここは記事構成のレビューとリライトのために、見出しの順序と階層だけを深く見ます。
見出しはHTMLの字面どおり、出現順に数えます(レベル順に並べ替えません)。JavaScriptで後から挿入される見出しは取得時点に存在しないため含まれません。
コメント(<!-- -->)・script・style・template の中にある見出しは、画面に出ないため数えません。
レベル飛ばしは「直前の見出しより2段以上深い見出し」を指します(h2の次のh4)。レベルが戻る(h3の次のh2)のは正常な構造です。
空見出しは、タグの中に可視テキストが無いものです。画像だけの見出しは alt があっても見出しテキストとしては扱いません。
CSSで非表示にした見出しも、HTMLに存在すればここには出ます(表示状態までは判定していません)。
送るもの: 入力されたURLだけ。当社サーバー(Cloudflare Workers)がそのURLを公開ページとして1回だけ取得します。
保存するもの: ありません。抽出はリクエストの中だけで完結し、URL・抽出結果ともデータベース(KV/D1)へ書き込みません。処理が終わった時点でメモリから消えます。
返すもの: 抽出した見出しのテキストと判定だけです。取得したHTMLの原文は再配信しません(このアプリは他サイトを閲覧するための中継として使えません)。
注意: 取得は公開GETのみで、社内ネットワーク・localhost・プライベートIP宛のURLは受け付けません。ログイン後にしか見られないページ、JavaScriptで見出しを描画するページは正しく抽出できません。
POST /headings/api/extract に JSON({"url": "https://example.com/"})またはフォームを送ると、同じ抽出結果(見出し配列・判定・Markdown)を JSON で返します。