Notation

Notation

Kristian Gaylord · コーディング · 学習

Notation は、Markdown ファイルのフォルダを Notion に公開する無料のオープンソース CLI だ。リポジトリで書いたドキュメントを 1 コマンドで送り、Notion の検索と AI 機能の上で読ませる。

Notation の画面プレビュー

Notation について

About

Notation とは

Notation は、Markdown ファイルが入ったディレクトリを丸ごと Notion のページに書き込む小さなターミナルツールだ。Rust で書かれ、GPL-3.0 で公開されている。notation ship --src を実行すると、ドキュメントのフォルダを走査し、Notion 側のページツリーを作り直す。

狙いははっきりしている。ドキュメントは、それが説明するコードのそばにあるべきだ。機能追加と同じ pull request で .md を編集すれば、レビュー担当者は差分を見られ、CI に公開処理を任せられる。マージのたびに別のサービスへログインする必要はない。

使う場面を決める制約は 2 つある。出力先は Notion だけなので、公開先は必ず自分のページになる。同期は Markdown から Notion への一方向だけで、リポジトリが唯一の正とされ、Notion 側で打った文字は戻ってこない。

はじめかた

  1. プロジェクトページの shell スクリプトでバイナリを入れる。実行ファイルは ~/.notation に置かれ、隣に設定ファイルの雛形ができる。
  2. Notion でドキュメントを載せるページを作り、設定ファイルにそのまま書き写せる名前にする。
  3. 「設定とメンバー」から内部インテグレーションを作り、シークレットを控える。親ページの「コネクト」でそのインテグレーションを追加し、書き込み権限を与える。
  4. ~/.notation/Notation.toml を開き、インテグレーションの secret と parent_page のタイトルを入れる。
  5. リポジトリで notation ship --src /docs/の/パス を実行する。Notion で結果を確認し、公開サイトにするならページを共有するか独自ドメインを向ける。

AIツール情報

Notationの料金、対応プラットフォーム、性能を簡単に確認できます。

無料プランはい
有料プラン$0 (open source, GPL-3.0)
プラットフォームmacOS, Linux
開発元Kristian Gaylord
カテゴリコーディング · 学習
リリース日Jul 2024
最終更新Aug 2024
サイト訪問数7.1K
サイト世界ランキング2.8M
API提供状況いいえ

こんな人におすすめ

このツールが最も力を発揮するユーザー、タスク、シーン。

ユーザー

  • バックエンドやプラットフォームのエンジニア
  • ドキュメントサイトを持たない小さなプロダクトチーム
  • サポート、営業、プロダクト担当

タスク

  • API リファレンスの公開
  • オンボーディング資料の更新
  • 社内ランブックの wiki 化

シーン

  • すでに Notion を契約していて、ドキュメント用の別サービスは増やしたくない。Notation が足すのは公開の一手間だけだ。
  • 更新のたびに別ツールを開く必要があり、ドキュメントが古くなっていた。原稿をリポジトリに戻せば、その往復が消える。
  • ドキュメントもコードと同じようにレビューしたい。原稿はバージョン管理下のプレーンテキストなので、普段の pull request の流れがそのまま使える。

主な機能

フォルダを 1 コマンドで公開する

notation ship --src がソースディレクトリをたどり、各ファイルを設定済みの Notion ページへ書き込む。ビルドも、生成したサイトのデプロイもない。マージしてから反映までの距離はコマンド 1 つ分だ。

フォルダ構造がページ構造になる

ディレクトリは子ページに、サブディレクトリは孫ページになる。エディタで見ているツリーが、そのまま読者の見る Notion のツリーだ。フォルダ名を変えれば、次の公開で該当ページ名も変わる。

intro.md で親ページを書く

ドキュメントのルートに intro.md を置くと、その中身は子ページを作らず親ページへ直接書き込まれる。章の入口に、文章とリンクと文脈のあるページができる。空のコンテナに子ページの一覧だけが並ぶことはない。

ページごとのタイトルと絵文字

Markdown の先頭に --title と --emoji を書くと、Notion 側のページ名とアイコンを指定できる。setup.md をロケットの絵文字付きで「Getting Started」として出せる。ファイル名は機械向けのまま、公開されるタイトルは読みやすくなる。

社内 wiki にも公開サイトにも

同じ公開先を、ワークスペース内の非公開のまま使うことも、公開ページとして共有することもできる。独自ドメインを使うなら、公式ドキュメントは Super をフロントエンドに挙げている。notation.so 自身もその構成で動いている。

Notion の検索、AI、書式をそのまま使う

内容が Notion に入れば、検索インデックス、AI の回答、目次、ブロック単位の書式がそのまま手に入る。大量のドキュメントを検索可能にするのは難しい問題で、ここでは他社に任せている。

メリットとデメリット

メリット

  • GPL-3.0 の無料オープンソースで、席数もプランもページ上限も気にしなくていい。
  • ドキュメントがリポジトリに残るので、コードレビュー、ブランチ、CI が追加設定なしで効く。
  • 導入が短い。バイナリを入れ、Notion のインテグレーションを作り、値を 2 つ埋めるだけだ。
  • 読む側は Notion で作業する。検索もコメントも AI の回答も、チームがすでに開いているツールに付いてくる。
  • 出力は Notion で手作りしたように見える。技術に詳しくない読者でも、Markdown から生成されたとは気づかない。

デメリット

  • 同期は一方向だ。Notion 側で直した内容は次の公開で上書きされるので、書く場所はリポジトリだけにしておく必要がある。
  • 画像は公開 URL が要る。ローカルのファイルはアップロードされないので、別の場所に置いてリンクを貼る。
  • 使う人ごとに Notion アカウント、親ページ、内部インテグレーションのトークンが要る。初回成功までに間違えられる箇所が 3 つある。
  • プロジェクトは小さく、最後のコミットは 2024 年 8 月だ。Notion API に破壊的な変更が入れば誰かがバイナリを直す必要があり、インストーラは Windows に対応していない。

よくある質問

Markdown を Notion に公開するためのツールだ。.md をコードリポジトリに置き、notation ship を実行すると、指定した Notion ページの中にページツリーとして現れる。