2021年5月13日木曜日

静的サイトにおいてsitemap.xmlを作るシェルスクリプト


sitemap.xmlを作るとSEOにいいぞ!というらしいので作ってみたけどほぼ個人用なんだよな…。

自動生成ウェブサービスもあるらしいけど、個人的に登録してほしくないページ(適宜リンクを貼りたいキャラ詳細ページなど)がある上にせっかく爆速の静的サイトやってるんだからということで。

#!/bin/bash

artwork=$(grep -iv "#invalid" $SITE/.database | awk -F"@" '{ print $1}'| sed "s/\..*/\.html/g")

page=$(ls $SITE/*.html | sed "s@.*/@@g")

cat << FIRST > sitemap.xml
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
FIRST

for i in $page; do
#更新日付
lastmod=$(date +"%Y-%m-%d" -r $i)
# 優先度
case "x$i" in
"xindex.html" ) priority="1.0" ;;
* ) priority="0.8" ;;
esac
# 出力
cat << PAGEGEN >> $SITE/sitemap.xml
<url>
<loc>http://0xconfig.net/$i</loc>
<lastmod>$lastmod</lastmod>
<priority>$priority</priority>
</url>
PAGEGEN
done

for i in $artwork; do
lastmod=$(date +"%Y-%m-%d" -r page/$i)
# 優先度
priority="0.6"
cat << PAGEGEN >> $SITE/sitemap.xml
<url>
<loc>http://0xconfig.net/page/$i</loc>
<lastmod>$lastmod</lastmod>
<priority>$priority</priority>
</url>
PAGEGEN
done

echo "</urlset>" >> $SITE/sitemap.xml

exportコマンドで$SITEに対して自サイトローカル場所を指定しておく(.profileとかに書いている)。自分とこは$HOME/Documents/connedos7 にしてる。

catにヒアドキュメントさせるとechoと同じ挙動になるらしく、echoよりも改行やクォート文字の扱いがシンプルなので(しかも変数展開してくれる!)、<url>以下の羅列で使わせてみた。

わざわざ2回もfor打つことあるか?と思うけどまあ、、、個人的には許容できるムダなので放置。

0 件のコメント:

コメントを投稿