Gemini CLIのカスタムコマンドでZennの記事レビュー環境を構築する
はじめに
記事を書く時の誤字脱字や内容に関してのレビューをAIに任せたいと考えていた時にZennからAIレビュー機能がリリースされた。
ただし、私は記事をGitHubで管理しています。
そのため、ブラウザ上でレビューは可能ですが、指摘を反映する作業は別途エディタで行う必要があり、少し不便でした。
そこで今回はGemini CLIを使って記事のレビューを行う仕組みを用意してみた。
環境構築
まずはGemini CLIをインストールします。
色々なやり方がありますが今回はHomebrewを使ってインストールを行います。
brew install gemini-cli
インストール後にバージョンを確認すると、この記事を書いている時点では0.4.1のようです。
% gemini -v
0.4.1
これでGemini CLIを使う準備は終わりです。
仕組みの作成
Gemini CLIに直接ファイルを指定してレビューを指示することも可能ですが、
2025年7月末に使えるようになったカスタムコマンドを作成して対応しようと考えた。
再利用可能なプロンプトを用意してそれをコマンド化しておけばレビューの依頼もコマンドだけで済ませることができ、効率的です。
カスタムコマンドの作成
詳細はドキュメントを参照していただく方が良さそうですが、
カスタムコマンドの定義ファイルはTOML形式で記述し、.tomlファイルを作成します。
今回はarticle-review.tomlというファイルを作成します。
また、作成したファイルは次の2つのどちらかに配置する必要があります。
- ユーザーコマンド:
~/.gemini/commands/
どのプロジェクトからでも利用可能なコマンド - プロジェクトコマンド:
プロジェクトルート/.gemini/commands/
現在のプロジェクトのみ利用可能なコマンド
今回はプロジェクトコマンドを使うので次のような形になります。
プロジェクトルート/.gemini/commands/article-review.toml
コマンドは/article-reviewで実行できます。
カスタムコマンドの定義ファイルの内容
カスタムコマンドの定義ファイルの内容ですが、prompt(必須)とdescription(任意)の2つのフィールドがあります。
- prompt
コマンド実行時にGeminiに対して指示する内容を書くところ
1行もしくは複数行で書くことができる - description
コマンドの説明文。
今回のpromptの部分ですが、1から考えるのは大変なのでGeminiに次のような質問をいくつか出して考えてもらいました。
君にブログのレビューを行ってもらいたい。どのような視点でレビューするかな?
このようにして作成したプロンプトがこちらです。
description = "記事のレビュー"
prompt = """
あなたはプロのテクニカルライターです。
以下の記事をレビューし、読者にとってより価値のある記事にするための改善点を具体的に提案してください。
---
{{args}}
---
レビューは、以下の観点に基づいて行ってください。
1. **誤字脱字・文法チェック:**
* 単純なタイポや、日本語として不自然な表現がないか。
2. **構成と論理展開:**
* 記事全体の流れ(導入、本題、結論)が自然で、読者が理解しやすい構成になっているか。
* タイトルは魅力的で、内容を的確に表しているか。
3. **技術的な正確性とコード品質:**
* **正確性:** 解説されている技術、コマンド、APIの使用方法に誤りがないか。
* **コードレビュー:** コードが読みやすく、ベストプラクティスに沿っているか。より効率的または現代的な書き方があれば提案します。
* **再現性:** 記事に書かれた手順通りに実行すれば、読者が同じ結果を得られるか。前提条件(バージョンなど)が明記されているか。
* **情報の鮮度:** 古い情報や非推奨(deprecated)な手法を紹介していないか。
4. **読者視点での分かりやすさ:**
* ターゲット読者にとって、内容のレベルは適切か。
* 専門用語に、初学者を置き去りにするような使い方がないか。
**出力形式:**
日本語でお願いします。
レビュー結果は、良い点と改善点を箇条書きでまとめてください。
その後に改善点ごとの「詳細なレビューと改善案」を具体的に記述してください。
"""
{{args}} はコマンド実行時の引数(今回の場合だとレビュー対象のファイルパス)の内容が展開されます。
例えば/article-review articles/abc.mdと実行すると、 {{args}} の部分はarticles/abc.mdに置き換わります。(そのほか詳しい内容はGitHubを参照してください。)
カスタムコマンドの実行
早速レビューをしてもらおうと思います。
どの記事を対象にしても良いですが、過去に書いた記事(書いた中ではアクセス数が多めの記事)をレビューしてもらいました。
/article-review articles/d267e8292b80b6.md
良い点、改善点をそれぞれ指摘してくれました。
指摘されたことをすべて反映する必要もないですが、内容次第では(誤字脱字など)そのままGeminiに修正をお願いすることもできますね。
結果は長いので最初の部分だけに絞っています。
╭────────────────────────────────────────────────╮
│ > /article-review articles/d267e8292b80b6.md │
╰────────────────────────────────────────────────╯
✦ 承知いたしました。プロのテクニカルライターとして、ご指定の記事をレビューし、改善案を提案します。
まずは、記事の内容を拝見します。
╭─────────────────────────────────────────╮
│ ✓ ReadFile articles/d267e8292b80b6.md │
╰─────────────────────────────────────────╯
✦ 記事を拝読しました。以下にレビュー結果と改善案をまとめます。
レビューサマリー
良い点
* Composerで依存パッケージを安全に削除するという、具体的な課題解決方法が簡潔にまとまっています。
* --no-update や --dry-run などの便利なオプションを紹介しており、実用的です。
* コマンドとその実行結果、解説がセットになっており、手順が追いやすいです。
改善点
* タイトルが記事の内容と完全に一致していません。「削除する」というよりは「安全に削除するための確認手順」が主題です。
* 手順の「その3」が、読者によっては冗長、あるいは意図が伝わりにくい可能性があります。
* 各コマンドの解説がやや不足しており、Composerの知識が少ない読者には理解が難しいかもしれません。
* 記事の導入部分で、なぜこの手順が必要なのか(普通に composer remove するだけではダメなのか)という背景説明が不足しています。
* 参考リンクがQiitaの記事のみであり、Composerの公式ドキュメントへの言及がありません。
まとめ
今回はGemini CLIのカスタムコマンドを利用したZennの記事レビュー環境を構築しました。
プロンプトを作ってしまえばコマンド1つで同じレビューを行えるので効率が上がったと思います。
作成したプロンプトも記事のレビューに特化した内容にしましたがコードレビューに応用したり、定型的なコード生成やドキュメント整備にも役立ちそうです。
今後も日々の作業を効率化に励んでいこうと思います。
Discussion
参考にした記事