コマンドライン
無料の marsdawn コマンドラインツール:シェルや LLM エージェントから Markdown を PDF に書き出せます。MarsDawn アプリがインストールされていれば、そのアプリでファイルを開くこともできます。
marsdawn は無料で、Mac App Store とは別に配布されています。Homebrew でインストールすると、Apple シリコンの Mac では、すぐに実行できる状態でインストールされます。export は単独で動作し、open には MarsDawn アプリが必要です。
AI エージェントやスクリプトから marsdawn を呼び出しますか?JSON 出力とそのスキーマ、すべての終了コードについてはAI エージェント向け marsdawnをご覧ください。
インストール
Homebrew を使う場合:
brew tap redtear1115/tap && brew install marsdawn
Apple シリコンの Mac では、Homebrew がビルド済みのコピーを数秒でインストールし、他に何もインストールする必要はありません。Intel Mac では代わりにソースから marsdawn をビルドするため数分かかり、Xcode 26 以降(Swift 6.2)が必要です。このツールは macOS 15 以降で動作します。
または、Swift Package Manager でソースからビルドします。
git clone https://github.com/redtear1115/mars-dawn-kit.git
cd mars-dawn-kit
swift build -c release --product marsdawn
インストールされているバージョンは marsdawn --version で確認できます。
コマンド
marsdawn open
1つ以上の Markdown ファイルを MarsDawn アプリで開いて確認できます。アプリのインストールが必要です。インストールされていない場合、marsdawn open はコード 3 で終了し、MarsDawn がインストールされていないことを知らせます。export にはアプリは不要です。
marsdawn open notes.md
marsdawn open notes.md:120
marsdawn open notes.md --line 120
path:line:MarsDawn にその行に移動するよう指定します。その後にコロンが続く場合、たとえばnotes.md:120:8の列部分は無視されます。引数全体と一致するファイル名が存在する場合、その引数はそのファイルとして扱われます。--line <n>:単一ファイルに対して同じ指定ができ、それ自体がコロンと数字で終わるパスに対して行を指定する方法でもあります。ファイルは1つだけ指定できます。- 行番号は 1 から 999999999 までです。
- MarsDawn 1.0 はファイルを開きますが、まだその行にジャンプしません。
--json:テキストではなく JSON の結果を出力します。
行の指定は marsdawn 0.3.0 で追加されました。
marsdawn export
Markdown ファイルを、MarsDawn 自身の PDF 書き出しと同じ書き出しエンジンで、ページ分割された PDF にレンダリングします。MarsDawn アプリは不要です。相対パスの画像は、入力ファイルのあるフォルダを基準に解決されます。
marsdawn export notes.md -o notes.pdf --theme classic --paper a4
-o, --output <path>:PDF の書き出し先。デフォルトは入力パスの拡張子を.pdfにしたものです。--theme <dawn|classic|modern|vivid>:プレビューテーマのライトパレット。デフォルトは$MARSDAWN_THEME、それもなければdawnです。--paper <a4|letter>:用紙サイズ。デフォルトはa4です。--allow-remote-images:レンダリング時にウェブから画像を読み込みます。デフォルトはオフです。--force:出力ファイルがすでに存在する場合に置き換えます。--json:テキストではなく JSON の結果を出力します。
$MARSDAWN_THEME 環境変数
--theme が指定されない場合、export は $MARSDAWN_THEME 環境変数を読み取ります。値は dawn、classic、modern、vivid のいずれかである必要があり、それ以外は dawn にフォールバックします。CLI はアプリ自身のテーマ設定を読み取りません。他のアプリのコンテナを読み取ると、macOS のプライバシープロンプトが表示されることがあるためです。
ファイルの上書き
export は、--force を指定しない限り、既存の出力ファイルを置き換えません。
終了コード
0:成功。2:入力が見つからない。3:MarsDawn がインストールされていない(openのみ)。4:出力先がすでに存在する(--forceを指定してください)。5:書き出しに失敗。64:使用方法のエラー。範囲外の行や、複数ファイルに対する--lineの指定などを含みます。
--json 出力
成功時、marsdawn open --json は ok、opened(各ファイルの path、行が指定されていれば line も含む)、app(アプリのパス)を出力します。marsdawn export --json は ok、output、pages、theme、paper、diagramErrors を出力します。失敗時はどちらも ok、error、message を出力します。