TLDL
Notion上に作成した資料をファイル化して納品する必要があったが、NotionのPDFエクスポートはビジネスプランでないとサブページを含んだエクスポートができなかったため、AIでツール化した
使用したツール
- Antigravity CLI(Gemini 3.7 Flash[medium])
- Ghostty
- Zed
リポジトリ
わざわざ作った理由
- Web上のツールやPythonで作成されたツール、Chrome拡張機能などいろいろあったが、昨今のセキュリティインシデントが気になって使いづらい
- Google AI Proを契約してtokenが余ってた
なお、言語がrubyなのは、会社のメイン言語がrubyなのと、検索でヒットするのが大体pythonなのでなんとなく。
主な機能
- ZIP直接対応: NotionからダウンロードしたZIPファイルを解凍せずにそのまま指定可能
-
トグルの自動展開: トグルリスト(
<details>)を展開して印刷用に出力 -
目次・しおり対応: PDFのサイドバー目次(アウトライン)や先頭の目次ページ生成(
--toc)に対応 - 内部リンク・アセット保持: サブページ間リンクをPDF内アンカーに変換し、画像やアイコンも維持
-
改ページマーカー: 本文中に
[改ページ]や[pagebreak]と書くことで任意の位置で改ページ可能 -
ヘッダー・フッター付与: ファイル名およびページ番号(
- No -)を自動出力
使い方
1. Finderから実行(ドラッグ&ドロップ)
notion-html_to_pdf.command をダブルクリックし、NotionからエクスポートしたZIPファイルまたはフォルダをターミナルにドラッグ&ドロップして実行します。
2. コマンドラインから実行
# 基本的な実行
./notion-html_to_pdf.rb /path/to/NotionExport.zip
# 目次ページ付きで実行
./notion-html_to_pdf.rb /path/to/NotionExport.zip --toc
オプション等の詳細仕様はリポジトリの README.mdを参照してください。
感想
- Notion独自のCSSがかなり調整の邪魔になった
- サブページのPDF出力のために3千円強出すよりか、AIに課金して使い捨てのツールを作るほうが低コストなのかは、作っててちょっと疑問を感じるくらいには面倒だった。
以上