MarkDownSlideTool

MarkdownからPowerPointを自動生成する、スライド作成支援ツール。

スライド作成時に発生しやすい、本文作成・テンプレート適用・画像配置といった手作業を減らすために、 CLI・Quarto・Pythonスクリプトを組み合わせた生成フローを構築しました。

  • 種別個人開発ツール
  • 使用技術Node.js / Python / Quarto / Pandoc / Docker
  • 役割設計・実装・改善
MarkDownSlideTool メイン画像

概要

MarkDownSlideTool は、Markdown形式で記述した内容から PowerPoint を生成するためのツールです。 単に変換するだけでなく、テンプレート適用や画像の扱いまで含めて、 スライド作成をより進めやすくすることを目的にしています。

作ろうと思った背景

スライド作成では、文章を書く作業に加えて、画像配置やテンプレート調整などの手作業が多くなりがちです。 特に、Markdownベースで内容を整理したい一方で、最終的には PowerPoint として使いたい場面が多く、 その間をつなぐ仕組みが欲しいと感じたことがきっかけでした。

解決したこと

1. CLIでプロジェクトを作成

新規スライドプロジェクトをコマンドで生成し、テンプレート・QMD・画像フォルダなどをまとめて準備できるようにしました。

2. Markdown と画像情報を分離

QMD 内の画像行を解析し、レンダリング用テキストと画像情報JSONに分けることで、 本文生成と画像配置を別工程で扱えるようにしました。

3. PowerPoint生成後に画像を再配置

生成後のスライドを解析し、空き領域に応じて画像を配置することで、 手動調整を減らせるようにしました。

処理の流れ

  1. CLIでプロジェクト作成
  2. Markdown / QMD で本文を書く
  3. 画像情報を抽出して JSON 化
  4. Quarto / Pandoc で PPTX を生成
  5. Python で画像配置などを後処理

技術的なポイント

テンプレートベースの生成

Node.js の CLI からプロジェクトを作成し、テンプレートをもとに QMD を生成する構成にしています。

画像と本文の分離処理

Python で QMD を解析し、画像行だけを抽出して JSON にまとめることで、 レンダリング工程と配置工程を分けています。

PPTXテンプレートの正規化

テンプレート側のレイアウト名の違いによる問題に対応するため、 正規化スクリプトで扱いやすい状態に整えています。

画像配置の後処理

生成後のスライドを読み取り、タイトルや本文の位置をもとに空き領域を推定して画像を追加する仕組みを作っています。

この制作で得たこと

テキスト生成・テンプレート処理・画像配置といった処理を分割することで、 複数工程をまたぐツールの設計や改善の考え方を実践できました。 また、見た目の出力だけでなく、実際に使いやすい流れを意識して組み立てることの大切さを学びました。