| name | gemini-cli |
| description | Gemini CLIを使った任意のタスクを実行するスキル。長文翻訳、PDF翻訳、Q&A、コード生成など、gemini_wrapperを活用して様々なタスクを自動化できる。 |
Gemini CLI Skill
使用タイミング
ユーザーが以下のような指示をした時に使用します。
- 「Gemini CLIを使って〜」
- 「PDFを翻訳して」
- 「長文を翻訳して」
- 「Geminiで〜を実行して」
スキルの概要
このスキルは、Gemini CLIをPythonから簡単に呼び出すための汎用ラッパー(gemini_wrapper.py)を提供します。
主な特徴:
- ✅ 完全汎用的なCLI呼び出し
- ✅ エラーハンドリング完備
- ✅ subprocess処理の自動化
- ✅ 様々なタスクに対応可能
- ✅ Windows環境対応
ファイル構成
gemini-cli/
├── gemini_wrapper.py # 汎用Gemini CLIラッパー
├── example_pdf_translator.py # PDF翻訳のサンプルスクリプト
├── SKILL.md # このファイル
├── README.md # GitHub公開用README
└── requirements.txt # 依存パッケージ
gemini_wrapper.pyの使い方
基本的な使い方
from gemini_wrapper import gemini_execute
# プロンプトを実行
success, result, error = gemini_execute("Pythonとは何ですか?", timeout=60)
if success:
print(result)
else:
print(f"エラー: {error}")
戻り値
すべての関数は(成功フラグ, 結果, エラーメッセージ)のタプルを返します。
- 成功時:
(True, "レスポンステキスト", "") - 失敗時:
(False, "", "エラーメッセージ")
クラスベースの使い方
from gemini_wrapper import GeminiCLI
gemini = GeminiCLI()
success, result, error = gemini.execute("質問内容", timeout=60)
実装例
例1: テキスト翻訳
from gemini_wrapper import gemini_execute
def translate_text(text, source_lang="英語", target_lang="日本語"):
"""テキストを翻訳"""
prompt = f"以下の{source_lang}を{target_lang}に翻訳してください。\n\n{text}"
success, result, error = gemini_execute(prompt, timeout=120)
return result if success else f"(エラー: {error})"
# 使用例
translated = translate_text("Hello, world!")
print(translated)
例2: Q&Aボット
from gemini_wrapper import gemini_execute
def ask_question(question):
"""質問に回答"""
prompt = f"以下の質問に簡潔に答えてください。\n\n{question}"
success, answer, error = gemini_execute(prompt, timeout=60)
return answer if success else f"(エラー: {error})"
# 使用例
answer = ask_question("機械学習とは何ですか?")
print(answer)
例3: コード生成
from gemini_wrapper import gemini_execute
def generate_code(description, language="Python"):
"""コードを生成"""
prompt = f"{language}で以下の処理を実装してください。\n\n{description}"
success, code, error = gemini_execute(prompt, timeout=120)
return code if success else f"(エラー: {error})"
# 使用例
code = generate_code("フィボナッチ数列を計算する関数")
print(code)
例4: PDF翻訳(サンプルスクリプト参照)
example_pdf_translator.pyを参照してください。このスクリプトは、PDFを1ページずつ翻訳する完全な実装例です。
python example_pdf_translator.py input.pdf output.md
使用方法
ステップ1: スクリプトを作成
ユーザーの要望に応じて、gemini_wrapper.pyを使ったPythonスクリプトを作成します。
例: テキストファイル翻訳スクリプト
import sys
from gemini_wrapper import gemini_execute
def translate_file(input_path, output_path):
"""テキストファイルを翻訳"""
with open(input_path, "r", encoding="utf-8") as f:
text = f.read()
prompt = f"以下の英語を日本語に翻訳してください。\n\n{text}"
success, translated, error = gemini_execute(prompt, timeout=180)
if success:
with open(output_path, "w", encoding="utf-8") as f:
f.write(translated)
print(f"翻訳完了: {output_path}")
else:
print(f"エラー: {error}")
if __name__ == "__main__":
translate_file(sys.argv[1], sys.argv[2])
ステップ2: Writeツールでファイルを作成
Write(file_path="/path/to/translate_text.py", content="...")
ステップ3: Bashツールで実行
python translate_text.py input.txt output.txt
環境変数
gemini_wrapper.pyは自動的にGemini CLIのパスを検出します。
Windows環境:
%APPDATA%\npm\gemini.cmdを自動検出- 見つからない場合はPATH上の
geminiを使用
カスタムパスの指定:
from gemini_wrapper import GeminiCLI
gemini = GeminiCLI(gemini_path="C:\\path\\to\\gemini.cmd")
注意事項
前提条件
注意: このツールはWindows環境専用です。
Gemini CLIのインストール
npm install -g @google/gemini-cliGemini CLIの認証
gemini auth loginPython環境
- Python 3.7以上
- 必要なパッケージ:
requirements.txt参照
タイムアウト設定
長い処理の場合は、適切なタイムアウト値を設定してください。
# デフォルト: 60秒
success, result, error = gemini_execute(prompt, timeout=180) # 3分
エラーハンドリング
必ず戻り値のsuccessフラグをチェックしてください。
success, result, error = gemini_execute(prompt)
if success:
# 成功時の処理
print(result)
else:
# エラー時の処理
print(f"エラー: {error}")
タスク例
長文翻訳タスク
from gemini_wrapper import gemini_execute
def translate_long_text(text, chunk_size=3000):
"""長文を分割して翻訳"""
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
results = []
for i, chunk in enumerate(chunks):
print(f"翻訳中: {i+1}/{len(chunks)}")
prompt = f"以下の英語を日本語に翻訳してください。\n\n{chunk}"
success, result, error = gemini_execute(prompt, timeout=120)
if success:
results.append(result)
else:
results.append(f"(エラー: {error})")
return "\n".join(results)
複数ファイル一括処理
import os
from gemini_wrapper import gemini_execute
def batch_translate(input_dir, output_dir):
"""ディレクトリ内の全ファイルを翻訳"""
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.endswith('.txt'):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, f"translated_{filename}")
with open(input_path, "r", encoding="utf-8") as f:
text = f.read()
prompt = f"以下を日本語に翻訳:\n\n{text}"
success, result, _ = gemini_execute(prompt, 120)
if success:
with open(output_path, "w", encoding="utf-8") as f:
f.write(result)
print(f"完了: {filename}")
トラブルシューティング
Gemini CLIが見つからない
エラー: Gemini CLIが見つかりません
解決方法:
- Gemini CLIがインストールされているか確認
gemini --version - パスを明示的に指定
gemini = GeminiCLI(gemini_path="C:\\path\\to\\gemini.cmd")
タイムアウトエラー
タイムアウト: 60秒以内に応答がありませんでした
解決方法: timeout値を増やす
gemini_execute(prompt, timeout=300) # 5分