Pelicanプラグイン調査まとめ¶
はじめに¶
AI時代にPelicanを用いてGitHub Pagesとともに静的サイトの更新ができると思い、調査を始めました。
Pelicanのメンテナンスは少しゆっくりですが、一度使うためにプラグインをまとめておきたかったのがこの記事の動機です。
PelicanはPython製の静的サイトジェネレーターで、ブログ用途でよく使われています。
公式サイト: https://getpelican.com/
ドキュメント: https://docs.getpelican.com/
プラグイン管理の歴史¶
旧方式(monorepo)¶
昔は以下の巨大リポジトリにプラグインがまとまっていました。
利用イメージ:
PLUGIN_PATHS = ["path/to/pelican-plugins"]
PLUGINS = [
"sitemap",
"neighbors",
"summary",
]
プラグインリポジトリをcloneし、必要なプラグインを有効化する方式でした。
現方式(namespace plugin)¶
現在はプラグインごとの個別リポジトリ管理へ移行中です。
GitHub Organization: https://github.com/pelican-plugins
推奨利用方法:
pip install pelican-sitemap
Pelican 4.5+ 以降はnamespace pluginの自動検出に対応しています。
プラグイン探索の現状¶
探す順番:
公式Plugins docs
pelican-plugins organization
旧 getpelican/pelican-plugins
PyPI classifier
公式Plugins docs: https://docs.getpelican.com/en/latest/plugins.html
PyPI classifier: https://pypi.org/search/?c=Framework+%3A%3A+Pelican+%3A%3A+Plugins
代表的プラグイン一覧¶
SEO / サイト構造¶
sitemap
XML sitemapを自動生成するプラグイン。検索エンジンのクローラーに対してサイトの構造や記事の更新頻度を適切に伝えるために必須のプラグインです。優先度(priority)や更新頻度(changefreq)の細かい設定も可能です。
neighbors
記事の末尾などに「前の記事」「次の記事」といったリンクを生成するための変数( next_article / prev_article )を提供します。読者の回遊率向上に役立ちます。
注釈
Pelican 4.5+ でコア機能に統合されました。プラグインのインストールは不要です。
related-posts
記事のタグやカテゴリなどを解析し、関連する記事のリストを自動生成します。記事を読み終えた読者に次のコンテンツを提示し、サイトの直帰率を下げるのに効果的です。
series
複数の記事を「シリーズ」としてまとめる機能を提供します。連載記事やチュートリアルなどを書く際に、自動でシリーズ内の他の記事へのリンク一覧を出力してくれるため便利です。
Markdown / 執筆支援¶
liquid_tags
Jinjaのタグに似た記法で、YouTube動画、Vimeo、Jupyter Notebook、その他外部リソースを記事内に簡単に埋め込めるようにする非常に強力で多機能なプラグインです。
使用例:
{% youtube xxxxx %}
code_include
外部のソースコードファイルを指定して、その内容を記事内にインクルードする機能です。コードの断片をコピペせずに済むため、ソースコード自体を別ファイルとしてGitなどで管理・テストしやすくなります。
使用例:
{% include_code app.py %}
pelican-toc
Markdownのヘッダー要素(h1, h2, h3など)から目次(Table of Contents)を抽出し、記事内の好きな場所やサイドバーに配置できるようにします。長文の技術記事には欠かせません。
better_code_samples
デフォルトのコードブロックのハイライトや行番号表示などの挙動を改善し、より見やすい技術記事を作成するためのプラグインです。
フロント最適化¶
webassets
フロントエンドのビルドパイプラインをPelicanに統合する強力なプラグインです。CSS/JSのMinify、SassやLessのコンパイル、さらにはキャッシュバスティングのためのファイル名へのハッシュ付与(fingerprinting)まで対応します。
旧プラグイン: https://github.com/getpelican/pelican-plugins/tree/master/assets
webassets docs: https://webassets.readthedocs.io/
minify
ビルド出力されたHTML、CSS、JSファイルから不要な空白や改行を削除し、ファイルサイズを極限まで圧縮します。サイトの読み込み速度(パフォーマンス)を向上させるために有効です。
gzip_cache
ビルド時に、あらかじめgzip圧縮されたファイル(.html.gz、.css.gzなど)を生成しておくプラグインです。NginxなどのWebサーバー側の設定と組み合わせることで、動的圧縮のCPU負荷を下げつつ高速な配信が可能になります。
UX / ブログ機能¶
summary
記事の冒頭部分や、指定した特定の区切り文字までの内容を抽出し、記事一覧ページなどで表示するための要約(サマリー)を自動生成します。
注釈
Pelican 4.5+ でコア機能に統合されました。プラグインのインストールは不要です。
readtime
記事の文字数や単語数から「この記事を読むのにかかる時間(例: 5 min read)」を算出して表示します。Mediumなどのモダンなブログプラットフォームでよく見られる、読者の利便性を上げる機能です。
tag_cloud
サイト内で使用されているすべてのタグを集計し、使用頻度に応じた文字サイズで表示するタグクラウドを生成します。
share_post
Twitter(X)、Facebook、はてなブックマーク、LinkedInなどの各種SNS共有リンク(シェアボタン)用のURLを生成します。
画像 / メディア¶
photos
記事内に美しい画像ギャラリーを構築するためのプラグインです。複数の画像を綺麗に整列させて表示したい場合に使用します。
thumbnailer
記事内で使用する元の大きな画像から、自動的に複数の指定サイズのサムネイル画像をビルド時に生成します。ページの読み込み速度最適化に役立ちます。
pelican_youtube
YouTube動画のURLやIDを指定するだけで、レスポンシブ対応(画面サイズに合わせて伸縮する)した動画プレイヤーを記事内に簡単に埋め込むことができます。
pelican_vimeo
Vimeo動画の埋め込みを簡単に行うためのプラグインです。機能としては pelican_youtube のVimeo版に相当します。
pelican_embed_microblog
Twitter(X)やMastodonなどのマイクロブログサービスの投稿を記事内に埋め込むためのプラグインです。スタイル設定に対応した拡張版です。
Notebook / データ分析¶
ipynb
Jupyter Notebookファイル(.ipynb)をそのままPelicanの記事としてビルドし、HTMLとしてレンダリングできるようにします。コードとその実行結果、グラフなどをそのままブログ化できるため、データサイエンティストなどに非常に人気があります。
asciidoc_reader
MarkdownやreStructuredTextだけでなく、AsciiDoc形式で書かれたドキュメントをパースしてHTMLに変換するためのリーダープラグインです。
多言語 ~~~
i18n_subsites
Pelicanで本格的な多言語サイト(例: 日本語版と英語版)を構築するための公式推奨プラグインです。言語ごとにサブサイトを生成し、言語間のリンクや設定の切り替えを管理します。
backref_translate
ある言語で書かれた記事に対して、別の言語の翻訳記事が存在する場合に、互いの記事へ相互リンクを自動的に張る機能を提供します。
コメント / 外部連携¶
pelican_comment_system
Disqusなどの外部サービスに依存せず、静的なファイル(Markdownなど)ベースでコメントシステムを構築するためのプラグインです。
github_activity
指定したGitHubユーザーのアクティビティ(コミット、Issue作成、Pull Requestなど)をAPI経由で取得し、サイドバーなどにタイムラインとして表示します。
gravatar
メールアドレスからGravatarのプロフィール画像を取得し、著者情報などとともにアイコンとして表示するためのプラグインです。
技術ブログ用途の最小構成¶
PLUGINS = [
"sitemap",
"related_posts",
"pelican-toc",
]
注釈
neighbors と summary はPelican 4.5+でコア機能に統合されたため、プラグインリストから削除しました。
必要に応じて追加:
webassets
ipynb
series
tipue_search
Plugin ecosystemの特徴¶
良い点 ~~~
歴史が長い
プラグイン数が多い
Pythonだけで完結しやすい
悪い点 ~~~
READMEが古いプラグインがある
Python最新版未対応プラグインがある
namespace plugin移行中
メンテナンス停止プラグインが存在
実運用方針¶
プラグインを大量導入しない方が安全です。
推奨:
5〜10プラグイン程度に絞る
定番プラグインのみ使う
commit/activityを確認する
Pelican vs Nikola¶
Pelican¶
向いているケース:
普通の技術ブログ
軽量運用
Markdown中心
シンプル構成
Nikola¶
向いているケース:
Notebook
多言語
ギャラリー
データ分析ブログ
個人的な整理¶
普通の技術ブログなら:
Pelican
Markdown
GitHub Actions
GitHub Pages / Cloudflare Pages
構成が最も軽いです。Notebook主体ならNikolaも検討価値あり。