AIエージェントにPowerPointを作らせる——OfficeCLIではじめるCLI操作Office入門
AIエージェントがWord/Excel/PowerPointをCLI一発で作れるオープンソースツールOfficeCLI。1コマンドでスライド作成、ライブプレビュー、テンプレート差し込みまで。インストールから実践パターン、罠まですべて紹介。
AIエージェントがWord/Excel/PowerPointをCLI一発で作れるオープンソースツールOfficeCLI。1コマンドでスライド作成、ライブプレビュー、テンプレート差し込みまで。インストールから実践パターン、罠まですべて紹介。
📑 目次
ふむふむ、これはちょっと見過ごせない。
PowerPointスライドをPythonで作ろうとした経験、ありませんか?python-pptxを入れて、スライドを追加して、テキストボックスを置いて、フォントサイズを指定して……気づけば50行くらい書いてる。しかもレイアウトが微妙にズレて、結局手作業で直す。
そういう「Office文書をプログラムで作る」って、ずっと面倒でした。APIが複雑で、フォーマットごとにライブラリが違って、AIエージェントに任せようとしても「文書がどう見えるか」を確認する術がない。
そこに現れたのが OfficeCLI(iOfficeAI製)。AIエージェント向けに作られたOfficeスイートで、Word/Excel/PowerPointを1行のコマンドで作れる。GitHubで18,000スター超、この1週間だけで5,300スターを追加——しかも130回以上のリリースを重ねていて、開発ペースが鬼速い。
でもね、チカちゃん的には「AIがOfficeを作る」って言葉だけ聞くと、ちょっとフワッとしすぎに感じる。実際どう動くの?コマンドは覚えやすいの?何に使えて、どこでつまずくの?そこを今日はガッツリ掘り下げます。
OfficeCLI は何をするのか——30秒でつかむ
OfficeCLI は、ひと言でいうと「AIエージェントのためのOfficeスイート」です。
具体的にはこんなことをします:
- Word(
.docx)/ Excel(.xlsx)/ PowerPoint(.pptx)を作成・読み取り・編集 - 単一バイナリで動く——.NETやOfficeのインストールが不要
- 内蔵HTMLレンダリングエンジンで文書を可視化——AIに「目」を与える
create(作る)/add(追加する)/view(見る)/get(取得する)/close(保存する)の基本コマンド- XPath風のセレクタで要素を指定——
/slide[1]/shape[1]のように直感的
一番面白いのは、「レンダー → 見る → 直す」のループを閉じているところ。AIエージェントがコマンドで文書を編集し、それをHTMLかPNGでレンダリングして「見て」、問題があればまた直す——このサイクルがターミナル1つで完結する。
つまり、エージェントが「スライドを作ったけど、タイトルが枠からはみ出してるね。位置を直そう」と自分で判断して修正できる。これが従来のpython-pptxにはなかった体験です。
インストール——3つの方法
OSに合わせて、どれか一つ選んでください。
方法1:スクリプト一発(macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash
方法2:パッケージマネージャー
# Homebrew(macOS)
brew install officecli
# npm(Node.js環境があれば)
npm install -g @officecli/officecli
方法3:Windows(PowerShell)
irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex
インストール後、PATHを通すだけ:
officecli install
これでバイナリがPATHにコピーされ、さらに検出されたAIコーディングエージェント(Claude Code、Cursor、Windsurf、GitHub Copilotなど)に自動的にスキルファイルが登録されます。設定ファイルを手動でいじる必要はありません。
30秒クイックスタート——スライドを作ってみる
一番わかりやすいのは、PowerPointで「作って、見て、直す」の流れを体験すること。
# 1. 空のPowerPointを作る
officecli create deck.pptx
# 2. ライブプレビューを起動(ブラウザで http://localhost:26315 が開く)
officecli watch deck.pptx
# 3. 別のターミナルを開いて、スライドを追加
officecli add deck.pptx / --type slide --prop title="Hello, World!"
ブラウザを見ると、もうスライドが表示されている。watchは常駐モードで動いていて、addやsetコマンドを叩くたびにリアルタイムで画面が更新される。Hot reloadみたいな感覚です。
ここにテキストボックスを置いてみましょう:
officecli add deck.pptx '/slide[1]' --type shape \
--prop text="Revenue grew 25%" \
--prop x=2cm --prop y=5cm \
--prop font=Arial --prop size=24 --prop color=FFFFFF
ブラウザのプレビューが即座に変わる。位置もフォントも色も、1コマンドで制御できる。
基本コマンド——これだけ覚えればOK
OfficeCLIのコマンドは5つだけ覚えれば、大抵のことはできます。
create —— 作る
officecli create deck.pptx # PowerPoint
officecli create report.docx # Word
officecli create budget.xlsx # Excel
add —— 追加する
# スライドを追加
officecli add deck.pptx / --type slide --prop title="Q4 Report"
# スライド1にシェイプ(テキストボックス)を追加
officecli add deck.pptx '/slide[1]' --type shape \
--prop text="Hello"
# Excelにシートを追加(CSVから読み込みも可)
officecli add budget.xlsx / --type sheet \
--prop name="Q1 Data" --prop csv=sales.csv
--propでプロパティを指定するのが基本パターン。title、text、x/y(位置)、font、size、color、backgroundなど、種類は要素によって変わります。
view —— 見る
# アウトライン表示(テキスト構造を一覧)
officecli view deck.pptx outline
# → Slide 1: Q4 Report
# → Shape 1 [TextBox]: Revenue grew 25%
# HTMLレンダリング(ブラウザでプレビュー)
officecli view deck.pptx html
# 品質チェック(フォーマットの不整合を検出)
officecli view report.docx issues --json
view ... issuesは地味に便利で、「フォントが混在してる」「見出しレベルが飛んでる」みたいな問題をJSONで返してくれます。
get —— 取得する
# 特定要素をJSONで取得
officecli get deck.pptx '/slide[1]/shape[1]' --json
返ってくるのはこういう構造化データ:
{
"tag": "shape",
"path": "/slide[1]/shape[1]",
"attributes": {
"name": "TextBox 1",
"text": "Revenue grew 25%",
"x": "720000",
"y": "1800000"
}
}
AIエージェントにとっては、このJSONが命綱。「今の文書構造はこうなっている」と把握して、次に何を直すべきか判断できる。
close —— 保存する
officecli close deck.pptx
watchで常駐しているセッションをディスクに書き出して終了。忘れると変更が保存されないので注意。
AIエージェントに統合する——SKILL.mdの仕組み
ここが OfficeCLI の一番の本領です。
AIエージェント(Claude Code、Cursor、Codexなど)に、以下の1行を貼り付けるだけ:
curl -fsSL https://officecli.ai/SKILL.md
エージェントはこのSKILL.mdを読み込み、OfficeCLIのインストール方法から全コマンドの使い方までを自力で理解します。ユーザー側の設定作業はほぼゼロ。
実際にClaude Codeで試すと、こういう流れになります:
あなた: "Q4の売上報告スライドを3枚作って。タイトル、グラフの説明、サマリーの3ページで。"
Claude Code: (officecli create → add を3回実行 → watchで確認 → レイアウト微調整)
Claude Code: "deck.pptx を作成しました。ブラウザでプレビューできます。"
エージェントがコマンドを叩いて、レンダリング結果を自分で確認して、必要なら直す。この自律ループが回るのが、python-pptxにはない決定的な違いです。
対応エージェントは Claude Code、Cursor、Windsurf、GitHub Copilot、Codexなど主要どころは網羅。MCPサーバーとしても動くので、MCP対応エージェントなら概ねつながります。
実践パターン①:ExcelにCSVを流し込んでダッシュボード風に
Excel系で一番使うのは、CSVデータのインポートでしょう。
# 新規ブック作成
officecli create dashboard.xlsx
# CSVからシートを追加
officecli add dashboard.xlsx / --type sheet \
--prop name="Sales" --prop csv=monthly_sales.csv
# セルに数式を設定
officecli set dashboard.xlsx '/sheet[1]/cell[B10]' \
--prop formula="=SUM(B2:B9)"
# チャートを追加
officecli add dashboard.xlsx '/sheet[1]' --type chart \
--prop chartType="bar" --prop dataRange="A1:B9"
これを1行ずつ実行するのが面倒なら、batchコマンドで一括処理もできます:
officecli batch dashboard.xlsx --input updates.json --json
updates.jsonにコマンドのリストを書いておけば、一気に流せる。定型レポートの自動生成に向いています。
実践パターン②:Wordテンプレート差し込み
請求書や契約書など、テンプレートにデータを流し込むパターン:
officecli merge invoice-template.docx invoice-001.docx \
'{"client":"Acme Corp","total":"$5,200","date":"2026-07-17"}'
テンプレート内の {{client}}、{{total}}、{{date}} みたいなプレースホルダーが、JSONの値に置換される。バッチ生成なら、JSONの配列を回して数十枚一気に作ることも可能。
実践パターン③:Python/Nodeからプログラムで使う
CLIをサブプロセスで叩くのは効率が悪いので、常駐パイプ型のSDKが用意されています。
Python:
pip install officecli-sdk
from officecli import Doc
with Doc("deck.pptx") as d:
d.add("/", type="slide", title="Q4 Report")
d.add("/slide[1]", type="shape", text="Revenue grew 25%",
x="2cm", y="5cm", size="24")
print(d.get("/slide[1]"))
Node.js:
npm install @officecli/sdk
import { Doc } from "@officecli/sdk";
await using d = await Doc.open("deck.pptx");
await d.add("/", { type: "slide", title: "Q4 Report" });
await d.add("/slide[1]", { type: "shape", text: "Revenue grew 25%" });
console.log(await d.get("/slide[1]"));
両SDKとも、CLIバイナリが未インストールなら自動でダウンロードしてくれます。プロセスを毎回起動しない「常駐パイプ」方式なので、大量の操作でも高速。
知っておくべき罠と注意点
ここ、めっちゃ大事です。「1行で動く!」に騙されないでください。
罠1:XPath風セレクタに学習コストがある
OfficeCLIの要素指定は /slide[1]/shape[2] のようなXPath記法。慣れてれば直感的ですが、「スライドの3番目のテキストボックス」を指定しようとして /slide[1]/shape[3] と書いたら、実はshapeの順序が保証されてなくて別の要素を操作していた——みたいなことが起こります。
👉 最初は view ... outline で構造を確認してから、正確なパスをgetで取得する癖をつけるのが安全です。
罠2:watchのポートが固定(26315)
ライブプレビューの watch は http://localhost:26315 で開きますが、このポートが固定されています。複数の文書を同時にプレビューしたい場合はポートが衝突するので、1つずつ順番に使うか、SSHフォワーディングなどで工夫が必要。
罠3:複雑なレイアウトには限界がある
OfficeCLIは「要素を1つずつ配置する」モデルなので、精密なデザイントレーニング(マージン、カーニング、複雑なマスターレイアウト)を再現するのは得意じゃありません。「Q4報告のサマリースライドを3枚」とかなら余裕ですが、「印刷用のカタログをピクセル単位で」となると、まだGUIのPowerPointに軍配が上がります。
罠4:プロジェクトが若く、APIがまだ動いている
OfficeCLIは2026年3月生まれで、130回以上のリリースを重ねている反面、破壊的変更が入る可能性があります。本番ワークフローに組み込むなら、バージョンを固定([email protected]のように)して、アップデート時には変更ログを確認する運用にしましょう。
罠5:Wordの高度な機能はWikiを要参照
Word系は対応範囲が広く(数式、mermaid図表、トラック変更、コンテンツコントロールなど)、すべてをCLIオプションで表現しきれないため、詳細はWikiを見る必要があります。READMEだけだと「これできるの?」が分かりにくいのが正直なところ。
他のツールとの使い分け——チカちゃん的チートシート
| ユースケース | おすすめ | 理由 |
|---|---|---|
| AIエージェントにOffice作らせる | OfficeCLI | CLI完結、レンダリング確認ループが回る |
| Pythonで精密なpptx制御 | python-pptx | APIが豊富、細かい制御が可能 |
| Excelの複雑な計算・ピボット | openpyxl / Polars | 数式エンジンとデータ処理が強い |
| 自然言語でスライド作りたい(GUI派) | AionUi | OfficeCLI搭載のデスクトップアプリ |
| ノーコードでプレゼン自動生成 | Gamma等のSaaS | デザインテンプレートが充実 |
迷ったら「AIエージェント経由か、人間が直接か」で分けると分かりやすい。エージェントに任せるならOfficeCLI、自分でスクリプトを書くなら各言語の専用ライブラリ、GUIで済ませたいならAionUi。
まとめ——「AIに目を与える」ことの意味
OfficeCLIの本質は、「Office文書をCLIで操作できる」だけじゃありません。AIエージェントにレンダリング結果を「見せる」ことで、作って・見て・直すのループを閉じた——ここが本当に新しい。
従来のpython-pptxでは、エージェントがスライドを作っても「それがどう見えるか」を自分で確認できませんでした。人間が開いて確認して、フィードバックして、また直す。OfficeCLIはそのボトルネックを、内蔵レンダリングエンジンで解消しています。
一方で、プロジェクトはまだ若く、精密なデザイン領域ではGUIに一日の長があります。「これ一本ですべて解決」ではなく、「定型レポートの自動生成」「ドラフト作成の高速化」といった用途で活躍するツールと割り切るのが現実的。
チカちゃん的には、まずClaude Codeあたりに「スライド3枚作って」と頼んでみるのが一番のおすすめ。ブラウザでリアルタイムにスライドが育っていく体験は、ちょっと感動ものです。そこから自分のワークフローに合うか探ってみてください。
思索は冒険です。AIが文書を「作る」だけでなく「見る」——その一歩が、エージェントと人間の協業の形を少しずつ変えていく気がします。チカちゃん的には、そこが一番面白いところです。
参考URL
GitHub - iOfficeAI/OfficeCLI → https://github.com/iOfficeAI/OfficeCLI
OfficeCLI 公式サイト → https://officecli.ai
OfficeCLI Wiki(コマンド・要素リファレンス) → https://github.com/iOfficeAI/OfficeCLI/wiki
OfficeCLI Releases → https://github.com/iOfficeAI/OfficeCLI/releases
AionUi(OfficeCLI搭載デスクトップアプリ) → https://github.com/iOfficeAI/AionUi
- インターネット上のツールは第三者が提供するものです。開発工程や配布経路を悪用した攻撃(サプライチェーン攻撃)が仕掛けられる可能性もゼロではありません。ご利用の際は公式リポジトリの情報をご確認いただき、自己責任でお使いください。
- AIに関する技術や情報は急速に変化します。本記事の内容が公開後に古くなる可能性があります。各サービスの公式ドキュメントや最新情報をご確認ください。