GitHub Pages+PelicanでつくるBlog:記事の書き方メモ、日本語利用時の注意点

GitHub PagesとPelicanで記事を書く際に知っておくポイントを雑多に記載

みずのり 2025-12-07(日) 1 mins

シリーズ全体のリンクはこちら

記事の公開ができる状況となったとしても、URL名やリンクの付与方法など気になる点が多数発生します。カテゴリやタグの日本語対応の方法なども含めて、雑多に書き出しておきます。
 ※個人で見返すのがメインだったりしてます



記事作成時のTIPS、ちょっとした書き方

Blog内リンク

記事内のリンクや画像のリンクはマークダウン形式(リンクだと[表示の文字列](URL))で付与すればよいのですが、Blog内の別記事へのリンクについては、以下のような書き方があります。

[記事と同一ディレクトリのリンク]({filename}./2512-0_シリーズまとめ.md)
![rootのロゴ画像]({static}/logo.png)
![記事と同一ディレクトリのロゴ画像]({static}logo_samedir.png)

以下のような表示となります。


記事と同一ディレクトリのリンク
rootのロゴ画像
記事と同一ディレクトリのロゴ画像


ちなみに、ディレクト構造はこんな感じ(関連しそうな部分だけ記載してます)。

repository_directory/
|- content/
  |- blog/
    |- setup/
      |- pelican/
        |- 2512-0_シリーズまとめ.md
        |- 2512-4_記事の書き方.md ※この記事のファイルです
        |- logo_samedir.png
|- logo.png
|- pelicanconf.py
|- publishconf.py

まあ、filenamestaticくらいを使っていれば十分じゃないかなと。

記事タイトルでリンク付与する方法もあったはずですが、タイトルは一度作成した後にしれっと変更しちゃう可能性もあります。少なくとも自分は使わないため、割愛します。

コードブロックとハイライト

以下のようにコードブロックと、MarkdownやPythonのハイライト指定、特定行のハイライト指定ができます。
 ※他にもコードブロック表現はありますが、割愛します。

Markdownの場合

:::md hl_lines="4 6"
## 箇条書きの例

以下に **箇条書き** を記載。

- 箇条書き1
- 箇条書き2

Pythonの場合

:::python
for i in range(5):
  print("Hello!")



メタデータ(タイトル、記事のURL設定など)

mdファイルの最初に必ず、記事の関連情報を入れます。基本はコピペ→修正ですね。
 例えば、この記事では以下のように記述しています。

Title: GitHub Pages+PelicanでつくるBlog:記事の書き方メモ、日本語利用時の注意点
Slug: github-pages-and-pelican-blog-writing
Summary: GitHub PagesとPelicanで記事を書く際に知っておくポイントを雑多に記載
Author: みずのり
Date: 2025-12-05 15:00
Modified: 2025-12-07 10:00
Category: 環境構築メモ
Tags: GitHub, Pelican
TOC: show
status: published

なんとなくわかるようなものは除いて、ポイントだけ紹介しておきます。
 テーマによって使える・使えないがあるかもしれないので注意してください。

Slug

こちらがない場合、TitleをベースにHTMLファイル名(つまりはURL)が決まりますが、日本語から自動変換した文字列はイマイチです。なので、こちらでHTMLの名前を入れておきましょう。

TOC

右側の目次リンクが作られます。いらなければ行ごと消し去ればよいです。

status

記載がなければpublished(公開)扱いとなります。このstatusをdraftにすると、作成中という扱いでHTMLが作成されない状態になったりします。他にもhiddenなどもあります。

参考文献



カテゴリ、タグの日本語対応

Titleが日本語の場合にSlugを使用することを記載しましたが、カテゴリやタグに日本語を使用する際にも気持ち悪いURLになるので、用語の置き換え対応を入れておいたほうが良いでしょう。

pelicanconf.pyに以下のような記述を追加して対応します。
 下記はタグの例、カテゴリにはCATEGORY_REGEX_SUBSTITUTIONSを適用します。

from unidecode import unidecode

TAG_REGEX_SUBSTITUTIONS = [
    (unidecode("雑メモ"), "zatsumemo"),
    (unidecode("翻訳"), "translation"),
    (r'[^\w\s-]', ''),   # remove non-alphabetical/whitespace/'-' chars
    (r'(?u)\A\s*', ''),  # strip leading whitespace
    (r'(?u)\s*\Z', ''),  # strip trailing whitespace
    (r'[-\s]+', '-'),     # reduce multiple whitespace or '-' to single '-'
]

上記で日本語のタグ名を指定した文字列に置き換えて、URLにすることができます。

参考文献

上記リンクで使用しているTAG_SUBSTITUTIONSなどは、TAG_REGEX_SUBSTITUTIONSなどに置き換えて使用してください(2025/12段階)。




Read more:

Related posts: