🙌

Zennのスクラップをマークダウンに変換するCLIツールを書いた

に公開

RustでZennの「スクラップ」機能でまとめたメモを一括でMarkdownファイルに変換するCLIツールを書いたので備忘録がてら使い方を説明します。

https://github.com/ackkerman/zenn-scrap-to-md

1. 機能

  • スクラップの取得:ZennのAPI(/api/scraps/<slug>/blob.json)からJSONを取得
  • 画像記法の変換:Zenn特有の ![](URL =300x)<img> タグに自動変換
  • 認証対応:Cookieを渡してログインが必要なスクラップも取得可能
  • オプション:コメント見出し(著者+日時)の表示/非表示切り替えや、出力ファイル名の指定
  • 水平線:メッセージ間に --- を挿入して読みやすく整形

2. インストール

  1. リポジトリをクローン
git clone [https://github.com/ackkerman/zenn-scrap-to-md.git](https://github.com/ackkerman/zenn-scrap-to-md.git)
cd zenn-scrap-to-md
  1. リリースビルド

    cargo build --release
    
  2. (任意)グローバルインストール

    cargo install --path .
    
    • ~/.cargo/bin にインストールされるので、どこからでも zenn-scrap-to-md コマンドが使えるようになる。
    • アンインストールする場合: cargo uninstall zenn-scrap-to-md
  3. 実行確認

    $ zenn-scrap-to-md --help
    Fetch Zenn scrap and save as Markdown file
    
    Usage: zenn-scrap-to-md [OPTIONS] <URL>
    
    Arguments:
      <URL>  Zenn scrap URL or slug (e.g. https://zenn.dev/xxx/scraps/your_slug)
    
    Options:
      -o, --output <OUTPUT>  Output Markdown file path (defaults to `<slug>.md`)
          --cookie <COOKIE>  Zenn session cookie, falls back to env ZENN_AUTH_COOKIE
          --skip-header      Skip rendering comment headers (author and timestamp)
      -h, --help             Print help
      -V, --version          Print version
    
    

3. 使い方

基本コマンド

# スクラップURLを指定して <slug>.md を生成
zenn-scrap-to-md https://zenn.dev/youruser/scraps/your_slug
  • <slug>.md にはタイトルをMarkdownの見出し (# タイトル) とし、各コメントは順番に書き出されます。
  • デフォルトではコメントごとに「著者 (日付)」が先頭に付き、メッセージ間に水平線 --- が入る。

出力ファイル名の指定

# my_notes.md に保存
zenn-scrap-to-md https://zenn.dev/... -o my_notes.md

コメントヘッダーをスキップ

# 著者&日付を表示せずに出力
zenn-scrap-to-md https://zenn.dev/... --skip-header

認証が必要なスクラップの取得

ログインが必要な非公開/アーカイブ済みスクラップもCookieを渡せば取得可能です。

# 直接 --cookie で渡す例
zenn-scrap-to-md https://zenn.dev/... --cookie "_zenn_session=…; remember_user_token=…"

# 環境変数に設定しておく例
export ZENN_AUTH_COOKIE="_zenn_session=…; remember_user_token=…"
zenn-scrap-to-md https://zenn.dev/...

例)

https://zenn.dev/moxak/scraps/d1a9bd5206a09c を保存してみる

$ zenn-scrap-to-md --cookie="_zenn_session=..." https://zenn.dev/moxak/scraps/d1a9bd5206a09c
---
Saved Markdown to 音声の局所的編集について(d1a9bd5206a09c).md

$ cat ./音声の局所的編集について(d1a9bd5206a09c).md
---

# 音声の局所的編集について

Original: [moxak/scraps/d1a9bd5206a09c](https://zenn.dev/moxak/scraps/d1a9bd5206a09c)

**moxak (2025-05-05)**

NotebookLMから出力された音声を聴くと、読み間違い(特に漢字に多い)が気になってしまう。
一度の生成にかかる時間は数分。インストラ...

4. オプション一覧

オプション 説明
-o, --output <path> 出力先Markdownファイル(省略時は <slug>.md
--cookie <cookie> Zennログイン用Cookie文字列
--skip-header コメント毎の「著者 (日付)」行を省略
-h, --help ヘルプメッセージを表示
-V, --version バージョン情報を表示

5. 開発&テスト

  • 依存ライブラリ

    • reqwest (HTTPクライアント)
    • serde (JSONデシリアライズ)
    • clap (CLIオプション解析)
    • regex (画像記法置換)
  • テスト実行

    cargo test
    

6. 最後に

ご意見・バグ報告は Issues へお気軽にどうぞ。

Discussion