はじめに
「このExcelファイルのA列を合計して」「Wordの第3段落を書き換えて」——そんな操作を、コードを書かずに日本語で話しかけるだけで完結させられたら便利だと思いませんか?
そのアイデアを形にしたのが vibe-office です。チャット形式でExcel・Wordファイルを操作できるAIエージェントで、Claude / Gemini / Ollama など複数のLLMプロバイダーに対応しています。
vibe-office とは
vibe-office は、ターミナル上で動くチャットインターフェースです。自然言語で指示を出すと、AIが適切なツールを順番に呼び出してファイルを操作してくれます。
You> sales.xlsx を開いてA列の合計をC1に入れて
You> ヘッダー行を太字にして背景を青にして
You> 「集計」という名前の新しいシートを作成して
Excelだけでなく、Wordも同様に操作できます。
You> report.docx の構造を見せて
You> 「Q3の結果」を「Q3・Q4の結果」に置き換えて
You> 四半期売上データのテーブルを末尾に追加して
主な機能
Excel 操作(13種類のツール)
- セル・範囲の読み書き(値・数式)
- シートの作成・削除・切り替え
- 書式設定(太字・文字色・背景色・列幅)
- 使用範囲の自動取得
Word 操作(13種類のツール)
- ドキュメント全文の読み取り(段落インデックス付き)
- 段落の挿入・削除・置換
- 見出し・テーブル・画像の追加
- 書式設定
マルチプロバイダー対応
| プロバイダー | 特徴 |
|---|---|
| Anthropic Claude | 高精度・日本語が得意 |
| Google Gemini | コスパが高くマルチモーダル対応 |
| OpenRouter | 多数のモデルを一括管理 |
| Ollama | 完全ローカル・オフライン・無料 |
セットアップ
Python と uv があれば動きます。
git clone https://github.com/doracpphp/vibe-office
cd vibe-office
uv sync
APIキーは .env ファイルで管理します。
cp .env.example .env
# .env を編集してAPIキーを設定
# 起動
source .env && uv run python main.py
# Gemini を使う場合
uv run python main.py --provider gemini
# 完全ローカル(Ollama)
uv run python main.py --provider ollama
実際の使い方
誤字脱字の修正
誤字があるsample.docxを読み込んで文書を修正してくれます

左側が誤字や脱字がある文章で右側が修正された文章です。正しく修正されており、Word等を開かずに修正することができます

MarkdownやテキストをWord/Excel化
以下のMarkdownがあります
# 在庫管理表
| 商品コード | 商品名 | カテゴリ | 単価(円) | 在庫数 | 在庫金額(円) | 発注点 | 状態 |
|---|---|---|---|---|---|---|---|
| A001 | ボールペン(黒) | 文具 | 120 | 350 | 42000 | 100 | 正常 |
| A002 | ボールペン(赤) | 文具 | 120 | 45 | 5400 | 100 | 要発注 |
| A003 | シャープペンシル | 文具 | 150 | 200 | 30000 | 80 | 正常 |
| A004 | ノート(A4) | 文具 | 200 | 18 | 3600 | 50 | 要発注 |
| A005 | ノート(B5) | 文具 | 180 | 120 | 21600 | 50 | 正常 |
| B001 | コピー用紙(A4) | 用紙 | 500 | 80 | 40000 | 30 | 正常 |
| B002 | コピー用紙(B5) | 用紙 | 450 | 12 | 5400 | 30 | 要発注 |
| B003 | 封筒(長形3号) | 用紙 | 300 | 500 | 150000 | 100 | 正常 |
| C001 | ホッチキス | 事務機器 | 800 | 25 | 20000 | 10 | 正常 |
| C002 | ホッチキス針 | 事務機器 | 150 | 8 | 1200 | 20 | 要発注 |
| C003 | セロハンテープ | 事務機器 | 100 | 60 | 6000 | 20 | 正常 |
| C004 | はさみ | 事務機器 | 400 | 30 | 12000 | 10 | 正常 |
| D001 | クリアファイル(10枚) | 整理用品 | 250 | 90 | 22500 | 30 | 正常 |
| D002 | バインダー(A4) | 整理用品 | 600 | 5 | 3000 | 15 | 要発注 |
| D003 | インデックスラベル | 整理用品 | 180 | 200 | 36000 | 50 | 正常 |
下記のプロンプトでMarkdownをtest.xlsxに変換してくれます
test.mdを読み取りExcelに転記してくださいtest.xlsxで保存してください


以下のプロンプトを実行すると在庫金額を合計して=SUMを認識して自動で入れてくれます


画像の貼り付け
以下のプロンプトを渡すとWordに画像を追加してくれます

以下のように画像を貼り付けます

設計のポイント
ツールをAIに渡す仕組み(Function Calling)
vibe-office は LLM の Function Calling(ツール呼び出し)機能を活用しています。Excelのセル読み書きやWordの段落操作を「ツール」として定義し、AIが必要なツールを自律的に選んで順番に実行します。
複数の操作が必要な場合も、AIが計画を立てて自動でこなしてくれます。
スマートツール選択
全ツールを毎回LLMに渡すとトークンを無駄に消費します。そこで会話の文脈から「ExcelかWordか」を自動判定し、必要なツールだけを渡す仕組みを実装しました。ローカルLLMでの実用性が大きく向上します。
OpenAI互換エンドポイントの活用
Claude(Anthropic)以外のプロバイダーには OpenAI 互換の API クライアントを使い回しています。Google Gemini も OpenAI 互換エンドポイントを提供しているため、新たな依存パッケージなしで対応できました。
メリット
ノーコードでファイル操作が完結する Pythonやopenpyxlの知識がなくても、日本語で話しかけるだけで複雑な操作ができます。
プロバイダーを自由に切り替えられる コストを抑えたいときはOllamaでローカル実行、精度を優先したいときはClaudeやGeminiと使い分けられます。
完全ローカル運用が可能 Ollamaを使えばファイルの内容が外部に送信されません。機密性の高いドキュメントを扱う場合に安心です。
拡張しやすい構造 ツールを追加するだけで対応できる操作が増えます。CSVやPDFへの対応も比較的容易に追加できます。
今後の展望
- GUI対応 — ターミナルだけでなく、WebUIやデスクトップアプリからも使えるようにしたい
- CSV / PDF 対応 — Excelだけでなく、CSVの読み込みやPDFからのテキスト抽出にも対応したい
- マルチファイル操作 — 複数のファイルをまたいだデータ転記や集計に対応したい
- 音声入力対応 — 話しかけてファイルを操作できるインターフェースへの発展
- スケジュール実行 — 定期的なレポート生成や集計の自動化
まとめ
vibe-office は「AIに話しかけてオフィスファイルを操作する」というシンプルなアイデアを、Function CallingとマルチプロバイダーLLMで実現したプロジェクトです。
ローカルLLMにも対応しているので、機密データを扱う現場でも導入しやすいのが強みです。ぜひ試してみてください。
ソースコードは GitHub で公開しています。フィードバックや Issue もお待ちしています。



コメント