Hugo × PowerShellで静的サイト運用を効率化|新規記事作成の自動化手順とスクリプト事例

プログラミング

はじめに

静的サイトジェネレータ「Hugo」を使っていると、記事を書く以外の作業に意外と時間がかかることがある。
特に面倒なのが、新しい記事のファイル名を日付付きで用意するルーティンだ。毎回、同じような手作業を繰り返すのは、さすがに効率が悪い。

私自身、Hugoを日常的に使ってブログを更新しているが、毎朝のルーティンで新規記事を作るたびに「ああ、またこのコマンドを打つのか」と思っていたことがある。
そんなとき、ふと知人の一言がヒントになった
PowerShellで自動化できるよ」と。

この記事では、PowerShellを用いてHugoの新規投稿ファイルを自動生成する方法を解説する。
開発者がつまづきがちな環境構築の注意点から、実際に動かすスクリプトの中身まで、具体例とともに紹介する。

スポンサーリンク
スポンサーリンク

必要な環境

最低限、以下のツールが必要となる。特に難しいものはないが、バージョンやパスの設定に注意が必要だ。

ツール バージョン 備考
Hugo 最新版 公式サイトより入手可能
Windows PowerShell 5.1以上 通常のWindowsに標準で搭載されている

Hugoのインストール手順(簡易版)

  1. 公式サイトからHugoをダウンロード。
  2. 解凍後、hugo.exeを環境変数Pathに追加。
  3. コマンドプロンプトやPowerShellで以下を実行し、インストール確認:
    hugo version
    

    バージョン情報が表示されれば準備完了だ。

自動生成スクリプトの中身

さて、ここからが本題。次のスクリプトは、Hugoのプロジェクトに対して日付付きの新規記事ファイルを自動生成するものだ。

# プロジェクトディレクトリに移動
cd C:\Users\YourUserName\Documents\HugoProject

# システム日付を取得しフォーマット
$datePrefix = (Get-Date -Format "yyyy-MM-dd-")

# 記事のタイトル(固定でなければ別途入力処理を加えても良い)
$title = "NewArticle.md"

# 日付とタイトルを組み合わせたファイル名を作成
$fileName = "$datePrefix$title"

# Hugo new コマンドで新規投稿を生成
hugo new "posts/$fileName"

各ステップの詳細解説

1. プロジェクトディレクトリの移動

cd C:\Users\YourUserName\Documents\HugoProject

ここは単純だが、意外とミスが多い。Hugoのconfig.tomlがあるルートに正しく移動していないと、hugo newがうまく動作しない。プロジェクトパスは人それぞれ異なるため、要注意。

2. 日付フォーマットの生成

$datePrefix = (Get-Date -Format "yyyy-MM-dd-")

これで今日の日付が「2025-05-11-」のような形式で取得できる。
私の経験では、この日付付き命名は投稿一覧の管理に絶大な効果を発揮する。

3. ファイル名の組み立て

$fileName = "$datePrefix$title"

日付 + タイトル」という命名規則は、記事を並べたときの視認性が段違いに良くなる。
これも知人に教えてもらって取り入れたルールの一つだ。

4. Hugoコマンドの実行

hugo new "posts/$fileName"

この一行で新しいMarkdownファイルが生成され、content/posts/配下に設置される。
地味ながら、「記事の雛形」を瞬時に作れる快感はクセになる。

実行結果のサンプル

たとえば、2025年5月11日にスクリプトを実行すれば、次のようなファイルが生成される。

content/posts/2025-05-11-NewArticle.md

中身にはフロントマター(タイトルや日付のメタデータ)が自動で記入されており、そのまま本文を追記するだけで投稿準備が整う。

よくあるトラブルと対処法

Hugoコマンドが見つからない?

原因:Hugoがインストールされていない、またはPathが通っていない。
対策:PowerShellで以下を実行して、PathにHugoが含まれているか確認する。

$env:Path

Hugoのパスが見当たらなければ、手動で追加する必要がある。

スクリプトがブロックされる?

原因:PowerShellの実行ポリシーが「Restricted」になっているケース。
対策:以下を一時的に実行して回避可能。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

ポリシーを変更する際は、管理者権限の有無にも気を配る必要がある。

まとめ

Hugoを使ったブログ運営では、コンテンツを書く時間を最大化することが何より重要だ。
今回紹介したPowerShellスクリプトを活用すれば、面倒な新規記事作成がたった数秒で完了する。

私自身、このスクリプトを取り入れたことで「記事を書く」という本質的な作業に集中できるようになった。
もし、あなたもHugoを使っていて似たような煩雑さを感じているなら、ぜひ一度試してみてほしい。

コメント