Markdown を書けば、パワポができます。
書くのは Markdown だけ。番号・目次・ページ分割はツールが計算し、書式は手持ちの PowerPoint マスターをそのまま使います。隣のコンソールでは、Claude Code などが deck.md を直接編集できます。
macOS 13 以降 MIT License Markdown は Git でそのまま差分を追えます
1. 書く
Markdown で書く
# 章と ## スライドを書くだけ。番号は書きません。
2. 整える
mdslide が整える
番号・目次・ページ分割は自動。見た目はマスターのまま。
3. 出す
pptx に書き出す
手持ちのマスターの書式で out/deck.pptx に。
起動から書き出しまで
資料を開き、書き、並べ替え、レイアウトとマスターを選んで、pptx を書き出すまでを 7 つの場面で紹介します。
1 / 7
起動画面から始める
「Markdown を開く」で手元の資料を開き、「新しく作る」でフォルダを選んで空の資料を用意します。前回の資料は「最近開いたもの」からすぐに開けます。
汎用性より、報告資料の作業効率
スライドツールに必要な機能を全部持つのではなく、報告資料に必要な判断だけをツールに固定しました。
Markdown が唯一の正
左ペインの並べ替えもレイアウト変更も、すべて Markdown の書き換えとして実装しています。ラウンドトリップは保証され、差分は Git で読めます。
設定不要のレイアウト
章番号・スライド番号・アジェンダ・ページ分割は毎回導出します。書式はレイアウト名を規約どおりに付けた pptx マスターに任せ、ツールは「どこに何を流し込むか」だけを決めます。
コンソールが組み込み
中央下は本物のターミナルです。PATH にある Claude Code や Codex CLI、Gemini CLI などをそのフォルダで起動し、口語のメモから deck.md を書かせられます(エージェントは同梱していません)。エディタに未保存の変更が無ければ、エージェントが保存した内容はすぐプレビューに反映されます。
インストール
配布版は、ターミナルに 1 行貼るだけで入ります。Python 3 があれば、pptx の書き出しに使う python-pptx も一緒に入ります。
curl -fsSL https://froggugugugu.github.io/mdslide/install.sh | bash
最新版を GitHub がリリースに記録した sha256 と照らし合わせてから「アプリケーション」(書き込めなければ ~/Applications)に入れ、python-pptx を mdslide 専用の環境に入れて、mdslide を開きます。Python 3 が無いときは python-pptx を飛ばすので、xcode-select --install のあとにもう一度実行してください。中身は GitHub の scripts/install.sh で読めます。
ブラウザで Releases の dmg から入れる場合は、「アプリケーション」に入れたあと、開く前に xattr -dr com.apple.quarantine /Applications/mdslide.app を実行してください。実行しないと「壊れているため開けません」と表示されます(アプリは壊れていません。「ゴミ箱に入れる」は押さずに閉じてください)。この場合 python-pptx は入らないので、アプリが起動時に出す案内に沿って入れてください。
git clone https://github.com/froggugugugu/mdslide.git && cd mdslide
npm ci
python3.12 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
npm run dev
Node 24.15 以上、Python 3.12、Xcode Command Line Tools が必要です(Command Line Tools の Python 3.9 には、requirements.txt の matplotlib と pillow が入りません)。npm ci が Electron 用に node-pty を再ビルドします。Intel の Mac はこの方法で動かしてください。
マスターを用意する
書式はすべて pptx のスライドマスターから取ります。どのレイアウトを何に使うかは名前で決まり、枠の位置・フォント・配色・ロゴはマスターから読み取ります(プレビューにも出ます)。Cover / Agenda / Section / Body-Text / Body-2col の 5 つを揃えれば、フォント・配色・ロゴは手持ちのまま使えます。
python-pptx に同梱された Office の既定テンプレート(MIT License)から作った 16:9 の見本で、5 つのレイアウトに必要な枠だけを置いています。アプリにも同梱されていて、設定(⌘,)のマスターで「見本を取り込む」を押せば保管フォルダに入り、既定のマスターがまだ無ければ既定になります。PowerPoint で開いて配色やロゴを直し、上書き保存すれば自分のマスターになります。ダウンロードした場合は、資料フォルダに master.pptx という名前で置いても使えます。
| レイアウト名 | 役割 | 置くプレースホルダー |
|---|---|---|
| Cover | 表紙 | タイトル(ctrTitle か title)、サブタイトル(subTitle か body) |
| Agenda | 目次 | タイトル、本文(body か obj)1 つ |
| Section | 章の中表紙 | タイトル(本文は任意) |
| Body-Text | 本文 | タイトル、本文(body か obj)1 つ(枠は広めに) |
| Body-2col | 2 段組み(任意) | タイトル、本文(body か obj)2 つを左右に |
Body-2col 以外は必須です(Body-2col が無ければ、2 段を Body-Text の本文枠にまとめます)。画像用のレイアウトは要りません(ツールが Body-Text の上に配置します)。名前は大文字小文字と空白を区別せず、先頭が合えば通ります(Title Slide / 表紙 は Cover、TOC / 目次 は Agenda、Chapter / 中表紙 / 章 / Section Header は Section)。本文の枠は役割ごとに決まった数だけ置いてください。多いときは面積の大きい枠を本文に使います。本文枠はヘッダやフッタと重ならない位置に置きます。日付・フッター・スライド番号のプレースホルダーは、書き出しでスライドに複製されます。
- PowerPoint で「表示」→「スライドマスター」を開きます。左に並ぶのがレイアウトです。
- 表紙に使うレイアウトを右クリック →「レイアウト名の変更」で
Coverに。同じ要領でAgendaSectionBody-TextBody-2colを揃えます。無いものは「レイアウトの複製」で作り、「プレースホルダーの挿入」→「コンテンツ」で本文枠を置きます(Agenda は Body-Text の複製で十分です)。 - 通常のスライドを全部削除して
master.pptxとして保存し、資料フォルダに置くか、設定のマスターで取り込みます。「不足」が出なければ完成です。
いま使っているスライドを土台にすると書式がそのまま残ります。「見本を取り込む」で保管フォルダ(既定 ~/.config/mdslide/masters/)に入った見本を横に開き、レイアウト名と枠の構成を見比べながら名前を合わせてください。詳しい手順はガイドにあります。
Claude Code や ChatGPT にテンプレートの pptx を渡して、そのまま貼り付けます。1 行目のファイル名だけ書き換えてください。python-pptx が使える環境ならスクリプトで、使えなければ PowerPoint での手順を返します。
手元の PowerPoint テンプレート(ファイル名: ここに書く.pptx)を、mdslide 用のスライドマスター master.pptx に変換してください。
前提
- mdslide は Markdown からスライドを生成するツールで、書式(フォント・配色・背景・ロゴ・フッター)はこの master.pptx のスライドマスターとレイアウトから取ります。元ファイルのテーマはそのまま残し、新しいテーマは作らないでください。
- レイアウトは名前で役割を判定します。名前は次の 5 つに揃えてください(大文字小文字と空白は無視されます)。
必要なレイアウトとプレースホルダー
- Cover: 表紙。タイトル(ctrTitle か title)とサブタイトル(subTitle か body)を 1 つずつ
- Agenda: 目次。タイトル 1 つと本文(body か obj)1 つ。本文には箇条書きが入ります
- Section: 章の中表紙。タイトル 1 つ(本文は無くてもよい)
- Body-Text: 本文。タイトル 1 つと本文(body か obj)1 つ。本文枠はできるだけ広く
- Body-2col: 2 段組み。タイトル 1 つと本文(body か obj)2 つを左右に
- 本文の枠は、役割ごとに上の数だけにしてください(説明用や小見出しの枠が残っていると、mdslide は面積の大きい枠を本文に使います)。
- 画像用のレイアウトは不要です(ツールが Body-Text の上に画像を配置します)。日付・フッター・スライド番号のプレースホルダーは、元ファイルにあれば各レイアウトに残してください(mdslide が書き出しでスライドに複製します)。
作業
1. 元ファイルのスライドマスターにあるレイアウトを一覧し、役割の近いもの(例: Title Slide → Cover、Title and Content → Body-Text、Two Content → Body-2col、Section Header → Section)を選んで上の名前に変更してください。
2. 該当するものが無い役割は、近いレイアウトを複製して作ってください。Agenda は Body-Text の複製でかまいません。
3. 上の 5 つ以外のレイアウトは残してもかまいません。ただし名前が Title Slide、Section、Chapter、TOC、表紙、目次、中表紙、章 で始まるものは同じ役割として扱われ、先にあるほうが使われるので、名前を変えてください。
4. 通常のスライド(ページ)はすべて削除し、マスターとレイアウトだけのファイルにしてください。
5. master.pptx として保存し、最後に各レイアウトの名前とプレースホルダー(種類・idx・位置)を一覧で出力してください。
進め方
- python-pptx が使えるならスクリプトで行い、そのスクリプトも示してください。python-pptx でできるのはレイアウトの名前変更と、使わないレイアウトの削除(prs.slide_layouts.remove)までです。スライドの削除(prs.slides._sldIdLst から外して prs.part.drop_rel する)とレイアウトの複製は XML 操作が必要です。難しければ、PowerPoint の「表示 > スライドマスター」で行う手順(右クリック > レイアウト名の変更、レイアウトの複製、プレースホルダーの挿入)を代わりに示してください。
詳しい手順と確認のしかたは マスター pptx の作り方 にまとめています。