XMLサイトマップの作成をChatGPTに自動化してもらった


ブログをGoogle検索にヒットさせるにはXMLサイトマップを登録するのが必要らしい!
しかし、記事を更新するたびにこのファイルを手動で更新するのは面倒...
というわけで、XMLサイトマップを自動で更新するスクリプトをChatGPTに書いてもらいました。

この記事でわかること

以下が分かります。

  • XMLサイトマップの概要

  • ChatGPTにPythonスクリプトを書いてもらう方法(事例として)

  • XMLサイトマップの自動作成コード

XMLサイトマップとは?

以下のようなものです。

  • 個々のウェブサイトに紐づくデータ。
    • ウェブサイト単位であって、ページ単位ではない
  • そのウェブサイト上のページの情報を検索エンジンが読み取れる形式で記述されたファイル
    • 形式 = XML(拡張可能マークアップ言語)
  • そのウェブサイト上のすべてのページのURL、更新頻度、重要度などの情報が含まれる
    • ただし、すべての情報が絶対にそろってないとダメというわけではない
  • これを用いることでそのウェブサイトのSEOが向上し、ユーザーがそのウェブサイト内の情報をより迅速に見つけられる

XMLサイトマップには通常sitemap.xmlみたいな名前が付けられます。

どうやってコードを書いた? → ChatGPT

XMLサイトマップを自動作成するPythonコードは、ChatGPTに書いてもらいました。
こちらがその時のChatGPTとのやり取りです。

  1. XMLサイトマップのフォーマットを例示してもらう

  2. コード作成のお願いをする

    • 「pythonで以下の処理をするコードを書いてください。~~~」みたいな感じ
  3. 細かい改良をしてもらう

    • 最終更新日時を「yyyy-mm-ddTHH:MM:SS+09:00」の形式にしてほしい

    • index.htmlにも同じ操作をしてサイトマップに含めてほしい

特に、最後の指示は間違えて途中までしか打ってない文章を送信したにもかかわらず意図をくみ取ってもらえたので少しびっくりでした...

最終的にどんなコードになった?

最終的に以下のコードを出してくれました。
コード内のhttps://example.comの部分を変更すれば、割とどなたでも使えるんじゃないかなと思います~
自分が使った分には問題なく動作しました。

import glob import os import urllib.parse from datetime import datetime def get_last_modified_time(file_path): """ Get the last modified time of a file. """ modified_time = os.path.getmtime(file_path) return datetime.utcfromtimestamp(modified_time) def generate_sitemap(): """ Generate sitemap.xml based on the files in the 'posts' directory. """ # index.htmlの最終更新日時を取得 index_last_modified = get_last_modified_time('index.html') files = glob.glob('posts/*.html') urls = [] for file_path in files: file_name = os.path.basename(file_path) last_modified = get_last_modified_time(file_path) encoded_file_name = urllib.parse.quote(file_name) urls.append((encoded_file_name, last_modified)) sitemap_content = '<?xml version="1.0" encoding="UTF-8"?>\n' sitemap_content += '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n' # index.htmlをsitemapに追加 index_last_modified_str = index_last_modified.strftime('%Y-%m-%dT%H:%M:%S+09:00') sitemap_content += f' <url>\n' sitemap_content += f' <loc>https://example.com/index.html</loc>\n' sitemap_content += f' <lastmod>{index_last_modified_str}</lastmod>\n' sitemap_content += f' </url>\n' for file_name, last_modified in urls: last_modified_str = last_modified.strftime('%Y-%m-%dT%H:%M:%S+09:00') sitemap_content += f' <url>\n' sitemap_content += f' <loc>https://example.com/{file_name}</loc>\n' sitemap_content += f' <lastmod>{last_modified_str}</lastmod>\n' sitemap_content += f' </url>\n' sitemap_content += '</urlset>' with open('sitemap.xml', 'w') as sitemap_file: sitemap_file.write(sitemap_content) if __name__ == "__main__": generate_sitemap()

おまけ

上記のコードを仮にgenerate_sitemap.pyとしてprogramsフォルダに入れている場合、
以下のようなbatファイルをprogramsフォルダと同じ階層に作っておけば、
このbatファイルをダブルクリックするだけでスクリプトを実行できます。

python ./programs/generate_sitemap.py

まとめ

以下について紹介しました。

  • XMLサイトマップの概要

  • ChatGPTにPythonスクリプトを書いてもらう方法(事例として)

  • XMLサイトマップの自動作成コード

ChatGPTとのやり取りの中で、間違えて途中までしか打ってない文章を送信したにもかかわらず意図をくみ取ってもらえたのは少しびっくりでした...!
同じように自動化したりChatGPTを使ったりするときのご参考になればと思います~