技術ブログを運営する上で最大の悩みは「どうすれば継続的に質の高い記事を書けるか」です。多言語でコンテンツを提供したいなら、翻訳まで気にしなければならないので、負担が倍増しますよね。

/dev/writeはこうした悩みから生まれました。Hugo静的サイトジェネレーターにGitHub Copilotを組み合わせて、執筆に集中できる環境を作ってみました。

なぜまたブログシステムなのか?

正直に言えば、既存のブログプラットフォームも十分優れています。Medium、Qiita、Zenn、どれも素晴らしい選択肢です。でも、いくつか物足りない点がありました。

まず、多言語対応です。韓国語で書いた記事を英語と日本語でも提供したかったのですが、ほとんどのプラットフォームでは別アカウントや複雑な設定が必要でした。

次に、AI学習データとして使用されることへの懸念です。一生懸命書いた記事が同意なくAIモデルの学習に使われるのは、あまり気持ちの良いものではありませんよね。

そして、自動化されたワークフローです。記事を書いて、レビューして、翻訳して、公開するプロセスをできるだけ自動化したかったのです。

そこで、Hugo + PaperModテーマをベースに、この3つを解決するシステムを自作しました。

GitHub Copilotと一緒に執筆する

/dev/writeで最も面白い部分は、GitHub Copilotを執筆ツールとして活用する方法です。VS Codeで/コマンドを入力すると、様々なプロンプトを呼び出せます。

/create-draft Dockerコンテナネットワーキングについて書いて

こんな風にトピックだけ投げてもいいですし、もっと具体的にアウトラインを提供することもできます。

/create-draft
- トピック:Kubernetes入門
- 内容:Pod、Service、Deploymentの概念
- 対象読者:Dockerを知っている開発者

既存のREADMEやドキュメントがあれば、それをベースにチュートリアルを作ってもらうこともできます。

/create-draft このREADMEファイルを基にチュートリアル投稿を作って
#file:README.md

AIが全部書くわけじゃない

もちろん、AIに最初から最後まで任せることだけが答えではありません。むしろ自分でまず下書きを書いて、AIに肉付けしてもらう方式の方が良い結果を出すことが多いです。

例えば、以前別のブログで書いた記事を持ってきて技術ブログスタイルで書き直したい場合:

/complete-manual-post この投稿を技術ブログスタイルで書き直して
#file:my-old-post.md

自分で書いた下書きがあれば、コード例を追加したり説明を補強してもらうこともできます。

私が書いたこの下書きを基に、内容をより豊かにしてください。
コード例を追加し、説明をより詳しくしてください。
#file:2025-12-05-my-draft.md

個人的な経験や意見が重要な記事、技術的な正確性を自分で検証したい記事は、このアプローチの方がはるかに効果的です。AIはあくまで助手であり、最終判断は人間がするものですから。

1つ書けば3つできる

/dev/writeのもう一つの特徴は自動翻訳です。韓国語で記事を書くと、英語と日本語バージョンが自動的に生成されます。

もちろん機械翻訳には限界があります。でも、最初から3言語で書くよりはずっとマシですよね。翻訳結果をレビューして、必要な部分だけ修正すればいいのです。

翻訳過程で一貫性を維持するために、いくつかのルールがあります。

  • slugtranslationKeydateなどのメタデータはすべての言語で同一に維持
  • タイトル、タグ、要約、本文は各言語に翻訳
  • コードブロックは翻訳しない(当然ですよね!)

英語はAmerican Englishで、日本語はです/ます体で作成されます。技術用語は原語を維持するか、括弧で併記します。

翻訳が終わったら、検証スクリプトで3言語バージョンがちゃんと揃っているか確認します。

.\scripts\validate-translations.ps1

技術ドキュメントの正確性検証

技術ブログで最も重要なのは正確性です。特にAzureや.NETなどMicrosoft技術を扱う時は、公式ドキュメントと一致するか確認するのが必須ですよね。

/dev/writeはMS Learn MCPサーバーを通じてこのプロセスを自動化しました。mcp.jsonファイルにMCPサーバーを登録して使用するように設定しています。

MCPサーバーがMicrosoft公式ドキュメントを照会して、最新APIバージョンか、非推奨の機能はないか、公式推奨事項と合っているかレビューしてくれます。ブログ記事に「この方法はもう推奨されていません」というコメントが付くのを事前に防げますよ。

ソーシャルメディアを意識した予約投稿

記事を書いたら公開しなければなりませんよね。/dev/writeは予約投稿をサポートしています。dateフィールドに未来の日付を設定すると、その時間に自動的に公開されます。

date: 2025-12-10T08:00:00+09:00  # 12月10日午前8時に公開

予約投稿はGitHub Actionsのcronトリガーで動作します。一日中動かすとランナーコストがもったいないので、ソーシャルメディアのピークタイムに合わせて1日3回実行するように設定しました。

  • 午前8時:通勤中にスマホをチェックする時間
  • 午後12時:昼休みにちょっとブラウジングする時間
  • 午後5時:退勤前に最後にフィードをチェックする時間
schedule:
  - cron: '0 23 * * *'  # KST 08:00
  - cron: '0 3 * * *'   # KST 12:00
  - cron: '0 8 * * *'   # KST 17:00

もっと細かい公開スケジュールが必要な場合は、ローカル環境で直接トリガーを設定することもできます。Windowsタスクスケジューラやcrontabを活用すれば、1時間間隔、30分間隔など、好きなように調整可能です。GitHub Actionsの無料枠も節約でき、公開タイミングもより精密に設定できますよ。

AIクローラーのブロック

最近、AI学習用クローラーがウェブサイトをどんどんスクレイピングするのが問題になっていますよね。/dev/writeは主要なAIクローラーをブロックする設定がデフォルトで含まれています。

GPTBot、Google-Extended、CCBot、anthropic-aiなど、ほとんどのAI学習クローラーをrobots.txtでブロックし、メタタグでも二重防御しています。もちろん悪意のあるクローラーはこれを無視できますが、少なくとも公式には「私のコンテンツをAI学習に使わないでください」という意思表示をした形になりますよね。

ローカルでプレビュー

投稿を公開する前にどう見えるか確認したいなら、Hugoサーバーをローカルで実行すればOKです。

hugo server -D

-Dオプションをつけるとdraft: trueの記事も見られます。ブラウザでhttp://localhost:1313にアクセスすると、リアルタイムでプレビューできます。ファイルを修正すると自動的にリフレッシュされるので、楽にチェックできますよ。

おわりに

/dev/writeはまだ完璧ではありません。でも、執筆に集中し、残りは自動化するという目標はある程度達成できたと思います。

多言語対応、AIベースの編集、予約投稿、クローラーブロックまで。技術ブログ運営に必要な基本はそろった形です。これからも改善を続けていく予定です。

もし興味があれば、GitHubリポジトリを訪問してみてください。フィードバックはいつでも歓迎です!🚀