サイト内のURLを一括抽出する方法|サイトマップ用ブックマークレット

記事のURLをまとめて整理したいなら、公開サイトマップから取得する方法が候補になります。表示中のページにあるリンクだけを拾う方法とは、取得元と範囲が異なるためです。本記事のブックマークレットはサイトマップで取得できたURLを一覧化します。非掲載ページや制限された情報まで含む「全ページの保証」ではありません。

資料をAIへ渡す準備や、サイト内の記事を整理するときに、URLを一つずつコピーする手間を減らせます。

実行前に「公開記事を一覧にしたい」「特定カテゴリを整理したい」など、使う範囲を決めます。たとえば記事の棚卸しなら、添付ページやカテゴリページを含めるかも先に決めてください。URLを取得した後に種類とドメインを確認することで、不要なページをAIへ渡したり、一覧へ混ぜたりするのを防ぎやすくなります。

URLを集める作業と、各ページの内容を確認する作業は別です。

ここでは、コードをブックマークへ登録し、対象サイト上で実行する手順を説明します。実行前にコードの内容と対象サイトを確認してください。

この記事では、公開サイトマップからURLを取得するブックマークレットの作り方と、取得後に確認しておく点を紹介します。

Index

公開サイトマップがあるサイトで使える方法

ブックマークレットは、ブックマークからJavaScriptを実行する仕組みです。拡張機能の追加なしで使えますが、実行するコードを信頼できるか確認する必要があります。

下のコードを使う場合も、最初は管理する検証サイトなどで試し、取得先と表示内容を確認してから利用範囲を広げてください。

3ステップで「URL取得ボタン」を作る手順

STEP
ブックマークバーを表示する

まず、ブラウザにブックマークバーを表示させます。

  • Windows: Ctrl + Shift + B
  • Mac: Command + Shift + B
STEP
ブックマークを作成する

ブックマークバーの空いている場所で「右クリック」→「ページを追加」を選択。

STEP
コードを登録する

設定画面が開くので、以下のように入力して保存してください。
名前:URL抽出(わかりやすい名前でOK)

URL:以下のコードをすべてコピーして貼り付けてください

※もともと入っている https:// は消してください。

Chromeのバージョンによっては、ブックマーク作成時にjavascript:から始まるコードを貼り付けても、セキュリティ対策で先頭の「javascript:」という文字だけ勝手に消されることがあります。 もしボタンを押しても反応しない場合は、「ブックマークの編集」を開いて、先頭に javascript: がちゃんとついているか確認してみてください。

JavaScript
javascript:(async function(){const p=['/sitemap.xml','/sitemap_index.xml','/wp-sitemap.xml'];const d=window.location.origin;const n=document.createElement('div');n.style='position:fixed;top:20px;right:20px;z-index:100000;background:#333;color:#fff;padding:15px;border-radius:8px;font-family:sans-serif;';n.innerText='🔍 探索中...';document.body.appendChild(n);const g=async(u)=>{try{const r=await fetch(u);if(!r.ok)return[];const t=await r.text();const m=t.match(/<loc>(.*?)<\/loc>/g);return m?m.map(k=>k.replace(/<\/?loc>/g,'').replace('<![CDATA[','').replace(']]>','').trim()):[]}catch(e){return[]}};let s='';for(const f of p){const r=await fetch(d+f,{method:'HEAD'});if(r.ok){s=d+f;break}}if(!s){n.innerText='❌ サイトマップなし';setTimeout(()=>n.remove(),3000);return}n.innerText='📂 解析中...';let a=await g(s);let f=[];let x=a.filter(u=>u.endsWith('.xml'));let c=a.filter(u=>!u.endsWith('.xml'));if(x.length>0){const r=await Promise.all(x.map(u=>g(u)));f=c.concat(r.flat())}else{f=c}n.remove();const l=[...new Set(f)].sort();if(l.length>0){const b=document.createElement('div');b.style='position:fixed;top:5%;left:5%;width:90%;height:90%;z-index:99999;background:white;padding:20px;border:5px solid #00c853;display:flex;flex-direction:column;';b.innerHTML=`<h3 style="color:#00c853;">🎉 抽出完了 (${l.length}件)</h3><textarea id="cA" style="flex:1;width:100%;font-family:monospace;padding:10px;">${l.join('\n')}</textarea><button onclick="this.parentElement.remove()" style="margin-top:10px;padding:10px;cursor:pointer;">× 閉じる</button>`;document.body.appendChild(b);document.getElementById('cA').select()}else{alert('URLなし')}})();
「謎のコード」を実行しても大丈夫?(セキュリティについて)

ネット上のコードをブラウザに登録するのは怖いですよね。

このコードを使う前に確認したい処理は、次の3点です。「ブラウザ内で動く」だけで安全性が保証されるわけではありません。

外部への送信は一切なし

取得したURLを画面に一覧表示する構成です。コードを変更したり別の配布元から入手したりする場合は、外部送信などの処理が追加されていないか確認してください。

見るのは「サイトマップ」だけ

公開サイトマップを取得する目的のコードです。認証情報を入力する操作は不要で、会員ページや管理画面の情報を集める用途には使いません。

動作は「表示」のみ

実行後は、表示されたURLのドメインと範囲を確認します。想定と違う動作があれば、続けて実行せずコードと対象ページを見直してください。

実際に使ってみた

対象サイトを開いて実行し、結果が表示されたら代表的なURLを数件確認します。

STEP
URLを抽出したいサイトを開く。
STEP
さきほど作った「URL抽出」ボタンを押す。
STEP
画面上にURLリストが表示されるのでコピーする。

掲載している画面は、検証サイトでURLを取得できた例です。他のサイトでも同じ件数や速度で取得できることを保証するものではありません。

結果が空の場合は、記事が存在しないと結論づけず、サイトマップの公開有無・場所・取得制限を確認します。反対にURLが多数出ても、公開記事をすべて網羅したとは限りません。管理しているサイトなら投稿一覧など別の記録と件数を比べ、代表的な数件を開いて対象が合っているか確かめてください。

他のブラウザ作業も整理するなら、用途別のChrome拡張機能一覧から必要な機能を探せます。

抽出後に確認すること

  • 対象外のカテゴリや古いURLを除き、読みたいページだけに絞ります。
  • サイトマップが見つからない場合、取得結果が0件でもサイトに記事がないとは限りません。
  • AIサービスへ渡す前に、機密情報や閲覧権限が必要なURLが混ざっていないか確認してください。

取得した一覧は、元サイト・取得日・対象範囲と一緒に保存します。URLだけでは本文の内容や更新日を確認したことにならないため、記事分類やAIへの資料化はその後の工程です。画像内の文字を取り出したい場合は、別の処理としてOCRの使い方を確認してください。

URLを集めた後に、記事の分類を整理する
カテゴリや入口を見直して、読者が目的の記事へ進みやすい構成にできます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

個人でWordPressブログを運営しています。WordPress歴7年。実際に契約・利用しているConoHa WINGとSWELLを中心に、ブログの開設、表示・編集環境の改善、SEO、アフィリエイト、AIを使った制作効率化を検証しています。

公式情報を確認するだけでなく、実機で試した結果、うまくいかなかった点、向かないケースも含めて共有します。読者が遠回りせず、自分のブログで次の一手を選べる情報を届けることが目標です。

Index