シンプルで基本的なサイトマップインデックスのsitemap.xmlを作成する
Pythonコードでsitemap.xmlファイルを作成し、検索エンジンがウェブページを認識できるようにします。.htmlファイルと.phpファイルを使用した静的ウェブサイトの例と、その使用方法、そしてSearch Consoleまたはping URL経由でGoogleとBingに送信する手順を説明します。
サイトマップとは、ウェブサイト上の重要なページのURLをまとめたファイルです。検索エンジンがページを理解し、ナビゲートしやすくすることで、SEO対策やトラフィック増加に効果的です。サイトマップを作成してGoogleに送信する方法をご紹介します。
1. サイトマップとサイトマップインデックスについて
- サイトマップ: Google などの検索エンジンに、当社の Web サイトにあるページを通知する XML ファイルです。
- サイトマップインデックス: 複数のサブサイトマップを結合した XML ファイルであり、大規模な Web サイトの管理が容易になります。
2. 標準構造 サイトマップ.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yourdomain.com/</loc>
<lastmod>2025-08-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://yourdomain.com/about</loc>
<lastmod>2025-08-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
<loc>
= ウェブページのURL<lastmod>
= 最終更新日(形式年-月-日
)<changefreq>
= 予想される更新頻度(常に、毎時、毎日、毎週、毎月、毎年、決して
)<priority>
= 重要度値(0.0 – 1.0)
3. 作成のためのPythonコード例 サイトマップ.xml
このコードは URL のリストを読み取り、sitemap.xml ファイルを作成します。
import datetime
domain = "https://yourdomain.com"
pages = [
"/",
"/about",
"/contact",
"/products",
"/blog"
]
today = datetime.date.today().isoformat()
sitemap_path = "sitemap.xml"
with open(sitemap_path, "w", encoding="utf-8") as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
for page in pages:
f.write(" <url>\n")
f.write(f" <loc>{domain}{page}</loc>\n")
f.write(f" <lastmod>{today}</lastmod>\n")
f.write(" <changefreq>weekly</changefreq>\n")
f.write(" <priority>0.8</priority>\n")
f.write(" </url>\n")
f.write("</urlset>\n")
print("Sitemap index created successfully!")
4. 静的ウェブサイトのサイトマップを作成する
4.1 (プレーンな.HTMLファイル)静的ページの場合
あなたのウェブサイトが 静的ウェブサイト(プレーンHTML) そして、次のようなページがたくさんあります
/index.html
/about.html
/contact.html
/blog.html
/products/product1.html
/products/product2.html
静的ウェブサイトのサイトマップを作成するための Python コードサンプル
import os, datetime
domain = "https://yourdomain.com"
web_dir = "./public_html"
today = datetime.date.today().isoformat()
urls = []
for root, dirs, files in os.walk(web_dir):
for file in files:
if file.endswith(".html"):
rel_path = os.path.relpath(os.path.join(root, file), web_dir)
url = "/" + rel_path.replace("\\", "/")
if url.endswith("index.html"):
url = url.replace("index.html", "")
urls.append(url)
sitemap_path = os.path.join(web_dir, "sitemap.xml")
with open(sitemap_path, "w", encoding="utf-8") as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
for url in urls:
f.write(" <url>\n")
f.write(f" <loc>{domain}{url}</loc>\n")
f.write(f" <lastmod>{today}</lastmod>\n")
f.write(" <changefreq>monthly</changefreq>\n")
f.write(" <priority>0.5</priority>\n")
f.write(" </url>\n")
f.write("</urlset>\n")
print("Sitemap index created successfully!")
このコードは、Web フォルダー内のすべての .html ファイルをスキャンし、sitemap.xml を自動的に書き込みます。
🔹 使用方法
- このコードをプロジェクト フォルダーに配置します (例:
generate_sitemap.py
) - 一緒に走る
python generate_sitemap.py
- ファイルを入手できます
サイトマップ.xml
ルートに位置する(パブリックHTML/サイトマップ.xml
) - ブラウザで開く→
https://yourdomain.com/sitemap.xml
- Google と Bing に送信する(Search Console または ping URL を使用)
4.2 .phpファイルを使用する静的ウェブサイト(静的ページ)の場合
ウェブサイトが .php ファイル (index.php、about.php、contact.php など) を使用する静的ウェブサイトである場合、sitemap.xml を作成する方法は .html の場合と似ていますが、代わりに .php ファイルを取得する必要があります。
/index.php
/about.php
/contact.php
/blog.php
/products/product1.php
/products/product2.php
作成用のPythonコード サイトマップ.xml
ファイルから .php
import os, datetime
domain = "https://yourdomain.com"
web_dir = "./public_html"
today = datetime.date.today().isoformat()
urls = []
for root, dirs, files in os.walk(web_dir):
for file in files:
if file.endswith(".php"):
rel_path = os.path.relpath(os.path.join(root, file), web_dir)
url = "/" + rel_path.replace("\\", "/")
if url.endswith("index.php"):
url = url.replace("index.php", "")
urls.append(url)
sitemap_path = os.path.join(web_dir, "sitemap.xml")
with open(sitemap_path, "w", encoding="utf-8") as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
for url in urls:
f.write(" <url>\n")
f.write(f" <loc>{domain}{url}</loc>\n")
f.write(f" <lastmod>{today}</lastmod>\n")
f.write(" <changefreq>monthly</changefreq>\n")
f.write(" <priority>0.5</priority>\n")
f.write(" </url>\n")
f.write("</urlset>\n")
print("Sitemap index created successfully!")
🔹 使用方法
- このスクリプト ファイルをプロジェクト フォルダーに配置します (例:
generate_sitemap.py
) - 一緒に走る
python generate_sitemap.py
- ファイルを入手できます
サイトマップ.xml
ルートに位置する(パブリックHTML/サイトマップ.xml
) - ブラウザで開いてみてください→
https://
yourdomain
.com/サイトマップ.xml - 取り除いてください Google Search Console / Bing Webmasterに送信する
共有ホスティングを使用している場合、共有ホスティング上で Python ファイルを直接実行できないという制限があります。
したがって、sitemap.xml を自動的に生成するには 2 つのオプションがあります。
🔹 オプション 1 (最も簡単) — ローカル マシンを使用して作成およびアップロードします。
マシンにPythonをインストールする (Windows/Mac)
Pythonスクリプトを実行すると、ファイルが生成されます サイトマップ.xml
コマンドプロンプト (Windows) またはターミナル (Mac/Linux) を開き、次のように入力します。
python generate_sitemap.py
ファイルをアップロード サイトマップ.xml
へ移動 パブリックHTML/
ホスティングを通じて ファイルマネージャー / FTP
ブラウザへ移動 →
https://yourdomain.com/sitemap.xml
🔹 オプション 2 — PHP を使用してホスティング上にサイトマップを作成します。
Python をローカルで実行したくない場合は、PHP コードを記述して sitemap.xml を自動的に生成できます。
<?php
$domain = "https://yourdomain.com";
$web_dir = __DIR__; // public_html
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($web_dir));
$urls = [];
foreach ($files as $file) {
if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) === "php") {
$path = str_replace($web_dir, "", $file->getPathname());
$url = str_replace("\\", "/", $path);
if (basename($url) === "index.php") {
$url = str_replace("index.php", "", $url);
}
$urls[] = $url;
}
}
$today = date("Y-m-d");
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($urls as $url) {
$sitemap .= " <url>\n";
$sitemap .= " <loc>{$domain}{$url}</loc>\n";
$sitemap .= " <lastmod>{$today}</lastmod>\n";
$sitemap .= " <changefreq>monthly</changefreq>\n";
$sitemap .= " <priority>0.5</priority>\n";
$sitemap .= " </url>\n";
}
$sitemap .= "</urlset>";
file_put_contents($web_dir . "/sitemap.xml", $sitemap);
echo "✅ Sitemap created at {$domain}/sitemap.xml";
?>
🔹 使用方法
- ファイルとして保存
generate_sitemap.php
- アップロード先
パブリックHTML/
- 次のようなファイルを Web 経由で呼び出します。
https://yourdomain.com/generate_sitemap.php
- ファイルを入手できます
サイトマップ.xml
すぐにルート
6. 自動的に更新される新しい sitemap.xml ページがあります。
与えたい 新しいページが追加されたとき(.php) → サイトマップ.xml
自動的に更新されます。Python を直接実行することはできないため、PHP スクリプトを使用して public_html 内の .php ファイルを毎回チェックし、新しい sitemap.xml を作成します。
PHP コード: 実行するたびにサイトマップを自動生成する
<?php
$domain = "https://yourdomain.com";
$web_dir = __DIR__; // public_html
$today = date("Y-m-d");
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($web_dir));
$urls = [];
foreach ($files as $file) {
if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) === "php") {
$path = str_replace($web_dir, "", $file->getPathname());
$url = str_replace("\\", "/", $path);
if (basename($url) === "index.php") {
$url = str_replace("index.php", "", $url);
}
$urls[] = $url;
}
}
// sitemap.xml
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($urls as $url) {
$sitemap .= " <url>\n";
$sitemap .= " <loc>{$domain}{$url}</loc>\n";
$sitemap .= " <lastmod>{$today}</lastmod>\n";
$sitemap .= " <changefreq>monthly</changefreq>\n";
$sitemap .= " <priority>0.5</priority>\n";
$sitemap .= " </url>\n";
}
$sitemap .= "</urlset>";
file_put_contents($web_dir . "/sitemap.xml", $sitemap);
echo "✅ Sitemap updated at {$domain}/sitemap.xml";
?>
🔹 使い方
- generate_sitemap.php ファイルを public_html にアップロードします。
- ブラウザでファイルを呼び出します:
https://yourdomain.com/generate_sitemap.php
- → sitemap.xml は毎回再生成(または更新)されます。
- 新しい .php ファイルを追加する場合 → このファイルを再度実行すると、サイトマップが更新されます。
🔹完全に自動化する(Cronジョブを設定すると、自分で押す必要はありません)
たとえば、Hosting の Cron ジョブを使用して、generate_sitemap.php を毎日/毎週実行できます。
ホスティングhPanelの場合:
- へ移動 上級 → Cronジョブ
- 次のような Cron ジョブを追加します。
php /home/ユーザー名/public_html/generate_sitemap.php
php /home/username/public_html/generate_sitemap.php
- 次に時間を設定します 1日1回
サイトマップは、サイトマップインデックスファイルを使用して管理することをお勧めします。サイトマップのサイズ制限を超える場合は、サイトマップを複数のファイルに分割し、インデックスファイルを使用して、サイトごとに最大500個のファイルをSearch Consoleに同時に送信することをお勧めします。インデックスファイルのXML形式は通常のサイトマップと同様で、同じディレクトリまたはそれより深いディレクトリに配置する必要があります。