Markdown + Cursor でPDF生成チャレンジ
この投稿は、2025年JINSのアドベントカレンダー10日目の記事です。
こんにちは。JINSのITデジタル部に所属している Tamakan です。
みなさん普段あまり触らないツールって地味にストレスですよね?私もこれまでの人生であまりパワポを触る機会が無かったので、メニューを選ぶだけで迷子になったりします。
パワポ操作で迷子になっている時間を減らしたい。
というわけで今回のテーマは…
なぜ PowerPoint を捨てたいのか?
資料作りにかける時間を少しでも減らしたい。
だって、パワポって
- 余白ズレる
- 画像のサイズ毎回直すの面倒
- スタイル統一に気づけば1時間溶ける
「もう!プロンプトで指示して勝手にPDFになってほしい!」
そう思ったのがきっかけです。
今どき生成AIもあるし、もっと効率化できるはず! と。
Marpとは?
Marpについて軽く説明しておきます。
Marp(Markdown Presentation Ecosystem)は、Markdownでスライド資料を作れるツールです。
何ができるの?
-
Markdownでスライドを書ける
普通のMarkdown記法でスライドが作れます。---でスライドを区切るだけ。 -
PDFやHTMLに変換できる
コマンド一発でPDF化できます。プレゼン用のHTMLも生成可能。 -
テーマが選べる
デフォルトテーマから選んだり、自分でCSSを書いてカスタマイズも可能。
例

Markdown記法で書いて変換するだけ。
なぜMarpを選んだか
パワポやGoogleスライドと比べて:
| 項目 | Marp | パワポ/スライド |
|---|---|---|
| 編集方法 | テキストエディタ | GUI操作 |
| バージョン管理 | Git管理すれば差分が見やすい | ファイル単位でしか管理できない |
| 自動化 | コマンドで一発変換 | 手動操作が必要 |
| AIとの相性 | テキストなので生成しやすい | GUI操作はAIが苦手 |
特に 「テキストで書ける」 のがポイント。CursorのAIに「スライド作って」って言えば、Markdown形式でサクッと生成してくれます。Cursorでなくともお好みのエディタで良いと思います。
パワポだと「ここにテキストボックス追加して、フォントサイズ20にして…」みたいな指示が必要だけど、Marpなら「## 見出し」って書くだけで済む。この差が大きい!
ちなみに、NotebookLMによるPDF生成も試してみましたが、ぱっと見は良い感じにアウトプットされるものの編集できない(2025/12時点)のが僕にとっては致命的でした。今後に期待したいところ。
どんな資料に向いてる?
- ✅ テキスト主体の資料(アジェンダ、議事録、技術資料など)
- ✅ 同じレイアウトで量産する資料
- ✅ 更新頻度が高い資料
- ❌ ビジュアル重視の営業資料(画像の細かい配置が必要なもの)
やってみた構成
今回採用したワークフローはこんな感じ👇
-
Marp形式のMarkdownで資料を書く
→スライドっぽい見た目も書ける -
Cursorで執筆効率アップ
→レイアウトや画像挿入もAIに手伝ってもらう -
Marp CLI or VS Code拡張でPDF出力
→ほぼワンボタンでPDF生成!
しかもMarkdownなのでGit管理しやすいし、修正も楽。
テキスト主体の資料ならかなり相性が良いと感じました。
ステップ1: 環境セットアップ
まずはMarp CLIをインストール。
npm init -y
npm install --save-dev @marp-team/marp-cli
これで準備完了。グローバルに入れたい場合は -g オプション付きでインストールしてもOKです。
ステップ2: Marpファイルの基本構造
Marp形式のMarkdownファイルを作成します。ファイル名は slides.marp.md みたいな感じで。
---
marp: true
theme: default
paginate: true
---
# タイトルスライド
サブタイトルとか
---
## 2枚目のスライド
- 箇条書き1
- 箇条書き2
---
## 3枚目のスライド
本文テキスト
ポイントは:
- ファイルの先頭に
---で囲んだフロントマターを書く -
marp: trueが必須(これがないとMarpとして認識されない) -
paginate: trueでページ番号が自動で付く - スライドの区切りは
---で表現
これだけでスライド形式の見た目になります。シンプル!
ステップ3: CursorでAIに手伝ってもらう
ここからが本番。CursorのAI機能をフル活用します。
よく使ったパターン:
-
スライドの雛形を生成してもらう
「マイクロサービス移行の課題を3枚のスライドでまとめて」みたいにプロンプトを投げると、Marp形式でサクッと生成してくれます。
-
箇条書きの整形
マルチカーソルで同じフォーマットの箇条書きを一気に選択して、AIに「もっと簡潔に」とか指示すると、統一感のある文章に整えてくれます。 -
画像の挿入
「このスライドにアーキテクチャ図を追加して。画像パスは ./images/arch.png で」みたいに指示すると、適切な位置に画像タグを入れてくれます。
-
レイアウト調整
スライドが長すぎる時は「この内容を2枚のスライドに分割して」とお願いすると、自然な区切りで分けてくれます。
CursorのAIはMarkdownの構造を理解しているので、Marp形式でもちゃんと対応してくれるのが助かります。
ステップ4: PDF出力
いよいよPDF化です。コマンド一発で完了。
npx marp slides.marp.md --pdf --allow-local-files
--allow-local-files は重要です。これがないとローカルの画像ファイルがPDFに含まれません。最初これ忘れて画像が全部消えてて焦りました😅
出力されるPDFは slides.pdf という名前で、元のMarkdownファイルと同じディレクトリに生成されます。
VS Codeを使っている場合:
Marp for VS Codeという拡張機能を入れると、エディタ内でプレビューしながら編集できて便利です。PDF出力も右クリックメニューから一発でできます。
実際の作業フロー
- Cursorで
slides.marp.mdを開く - AIに「今日の定例のアジェンダスライド作って」と依頼
- 生成された内容を確認・微調整
-
npx marp slides.marp.md --pdf --allow-local-filesでPDF生成 - 完成!
この流れなら、パワポで1時間かかってた資料が10分でできちゃいます。
実際に苦労したところ 😇
もちろん課題もありました。
| 苦労ポイント | 内容 |
|---|---|
| 画像の扱い | サイズが台紙に合わず、手で微調整することに… |
| レイアウト調整 | 思った位置に置けないことが多い、微修正が地味に大変 |
| ページ構成が複雑な資料 | AI任せだけでは厳しい、結局人の判断が必要 |
特に 「画像の見栄えを整える」系はAIがまだ苦手な印象。
結局、指示を試行錯誤するのに時間をかけちゃいました。
それでもメリットは大きい
- 同じレイアウトで流していく資料は超楽
- 修正が入っても即対応できる
- スタイルがMarkdownに紐付くので統一感出しやすい
- 最終的なPDF出力までの操作が少ない
「更新頻度が高い資料や、情報が主役のドキュメント」には最強。
逆に、ビジュアルが命の営業資料には向かない印象。
今後の改善アイデア
次にこんなことを試したいと思っています👇
- 画像の 自動リサイズ&レイアウトをAIに任せられるよう工夫
- テンプレートを充実させる(テーマ性のある資料にも対応)
- GitHub Actions でプッシュしたら自動でPDF生成
理想は…
「書く→コミット→勝手にきれいなPDFが手元に」
ここまで行けば、資料作りのストレスは一気に減らせそう。
まとめ
| Point | メッセージ |
|---|---|
| AI×Markdownは相性がとても良い | 生成効率UPが期待できる |
| 画像多い資料はまだまだ厳しい | 正確なレイアウト指示が必要 |
| 標準化されたような資料には向く | 更新や再利用がしやすい |
「全部AIでやって!」はまだ難しいけど、
定型文書の効率化には めちゃ使える と感じました。
Discussion