vibe-notion について
vibe-notionは、Agentやユーザーが非公式のプライベートAPI経由でNotionワークスペースを操作するTypeScript製コマンドラインツールです。ページ、データベース、ブロック、ユーザーを扱い、Notionデスクトップアプリから認証情報を取得しますが、APIの変更で動作しなくなる可能性があります。
主な機能
- 01ページ、データベース、ブロックのCRUD
- 02ワークスペース検索とユーザー管理
- 03バッチ操作の実行
- 04デスクトップアプリからの認証情報取得
活用シーン
- 01ワークスペース内のページ検索と確認
- 02データベース行の一括作成や更新
- 03ページ内容とコメントの管理
- 04ワークスペースとユーザー情報の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ devxoul/ vibe-notion --skill vibe-notionインストール後、Claude Code で/vibe-notionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/batch-operations.mdblock-types.mdcommon-patterns.mdoutput-format.mdtemplates/create-page.shquery-database.shread-page.shworkspace-overview.sh詳細
Vibe Notion
非公式のプライベート API を通じて、AI エージェントや人が Notion ワークスペースを操作できる TypeScript 製の CLI ツールです。ページ、データベース、ブロックの完全な CRUD 操作、検索、ユーザー管理に対応しています。
注:このスキルでは、公式のパブリック API とは別の Notion 内部/プライベート API(
/api/v3/)を使用します。公式 API を利用する場合は、vibe-notionbotを使用してください。
使用する CLI の選び方
このパッケージには 2 つの CLI が含まれています。状況に応じて適切な方を選んでください。
vibe-notion(この CLI) | vibe-notionbot | |
|---|---|---|
| API | 非公式のプライベート API | 公式 Notion API |
| 認証 | Notion デスクトップアプリから token_v2 を自動抽出 | NOTION_TOKEN 環境変数(インテグレーショントークン) |
| アイデンティティ | ユーザーとして動作 | ボットとして動作 |
| セットアップ | 不要 — 認証情報を自動抽出 | 手動 — notion.so/my-integrations でインテグレーションを作成 |
| データベースの行 | add-row、update-row | page create --database で作成 |
| ビュー管理 | view-get、view-update、view-list、view-add、view-delete | 非対応 |
| ワークスペースの一覧表示 | 対応 | 非対応 |
| 安定性 | プライベート API — Notion の変更により動作しなくなる場合があります | 公式のバージョン管理された API — 安定しています |
選択の流れ:
- Notion デスクトップアプリがインストールされている場合 →
vibe-notion(この CLI)を使用 NOTION_TOKENが設定されているものの、デスクトップアプリがない場合 →vibe-notionbotを使用- 両方とも利用できる場合 →
vibe-notionを優先(機能が豊富で、セットアップ不要) - どちらも利用できない場合 → いずれかを設定するようユーザーに依頼
重要:CLI のみを使用
Notion の内部 API を直接呼び出してはいけません。 必ず、このスキルで説明している vibe-notion CLI コマンドを使用してください。notion.so/api/v3/ への生の HTTP リクエストや、Notion クライアントライブラリの使用は禁止です。API を直接呼び出すと認証情報が漏えいするおそれがあり、Notion の不正利用検知が作動してユーザーのアカウントがブロックされる可能性があります。
必要な機能が vibe-notion でサポートされていない場合は、その旨をユーザーに伝え、devxoul/vibe-notion への機能リクエストの投稿を代行すると申し出てください。投稿する前に、実際のユーザーデータ(ID、名前、メールアドレス、トークン、ページの内容など、ユーザーやそのワークスペースを特定できるもの)をすべて削除してください。代わりに汎用的なプレースホルダーを使い、不足している機能の説明に絞った Issue にしてください。
重要:スクリプトを書かない
Notion の操作を自動化するスクリプト(Python、TypeScript、Bash など)を書いてはいけません。 batch コマンドは、規模を問わず一括操作をすでに処理できます。API 呼び出しを繰り返すスクリプトを書くのは常に誤りです。代わりに --file を指定して batch を使用してください。
次の場合も同様です。
- 100 行以上を作成する必要がある
- 新しく作成する行どうしの相互参照が必要である(複数パスの batch を使用してください。references/batch-operations.md を参照)
- 1 つのコマンドで処理するには「大きすぎる」と感じる
「スクリプトを書いたほうがよい」と考えたら、手を止めて batch を使用してください。
クイックスタート
# 1. Find your workspace ID
vibe-notion workspace list --pretty
# 2. Search for a page
vibe-notion search "Roadmap" --workspace-id <workspace-id> --pretty
# 3. Get page content
vibe-notion page get <page-id> --workspace-id <workspace-id> --pretty
# 4. Query a database
vibe-notion database query <collection-id> --workspace-id <workspace-id> --pretty
初回使用時に Notion デスクトップアプリから認証情報が自動抽出されます。手動でのセットアップは不要です。
ヒント:対象のページ/ブロック/データベース ID を指定するほとんどのコマンドでは、
--workspace-idは省略可能になりました。省略すると、認証済みの各アカウントを照会して自動的に解決されます。プライマリターゲットのない次のコマンドでは、引き続きこのフラグが必要です:page list、database list、search、user list、user get、database create --parent(ルート階層)、--parentを指定しないpage create、batch、comment get/comment create --discussion。vibe-notion workspace listでワークスペース ID を確認するか、vibe-notion workspace resolve <page_id_or_url>を使って Notion URL からワークスペース ID を直接調べてください。
認証
いずれかのコマンドを実行すると、Notion デスクトップアプリから認証情報(token_v2)が自動的に抽出されます。API キー、OAuth、手動での抽出は必要ありません。
macOS では、初回使用時にシステムからキーチェーンへのアクセスを求められる場合があります。これは正常な動作であり、Cookie の復号に必要です。
抽出された token_v2 は、アクセス権限 0600 で ~/.config/vibe-notion/credentials.json に保存されます。カスタム設定ディレクトリを使うには、VIBE_NOTION_CONFIG_DIR 環境変数を設定してください。
メモリ
エージェントは、セッションをまたいで情報を保持するメモリとして ~/.config/vibe-notion/MEMORY.md ファイルを管理します。このファイルはエージェントが管理するもので、CLI は読み書きしません。Read および Write ツールを使ってメモリファイルを管理してください。
メモリの読み込み
各タスクの開始時に、Read ツールを使って ~/.config/vibe-notion/MEMORY.md を読み込み、以前に見つかったワークスペース ID、ページ ID、データベース ID、ユーザーの設定を読み込んでください。
- ファイルがまだ存在しない場合は、そのまま進めてください。有用な情報を初めて保存するときに作成します。
- ファイルを読み込めない場合(アクセス権限、ディレクトリが存在しないなど)は、メモリなしで処理を続けてください。エラーにはしないでください。
メモリの書き込み
有用な情報を見つけたら、Write ツールを使って ~/.config/vibe-notion/MEMORY.md を更新してください。書き込みが必要となる例は次のとおりです。
- ワークスペース ID を見つけた後(
workspace listから) - 有用なページ ID、データベース ID、コレクション ID を見つけた後(
search、page list、page get、database listなどから) - ユーザーから別名や設定を伝えられた後(「これを Tasks DB と呼んでください」「メインのワークスペースは X です」など)
- ページやデータベースの構造を見つけた後(親子関係、どのデータベースがどのページの下にあるかなど)
書き込む際は、ファイル全体の内容を含めてください。Write ツールはファイル全体を上書きします。
保存する情報
- ワークスペース ID と名前
- ページ ID とタイトル、親の情報
- データベース/コレクション ID とタイトル、親の情報
- ユーザーが指定した別名(「Tasks DB」「メインのワークスペース」など)
- よく使用するビュー ID
- 親子関係(どのページの下にどのデータベースがあるか)
- 対話中に示されたユーザーの設定
保存しない情報
token_v2、認証情報、API キーなどの機密情報は絶対に保存しないでください。ページの内容全体も保存しないでください(ID とタイトルのみを保存します)。永続的な参照として使うもの(データベースブロックなど)を除き、ブロックレベルの ID も保存しないでください。
古くなったデータの扱い
記憶している ID でエラー(ページが見つからない、アクセスが拒否されたなど)が発生した場合は、その ID を MEMORY.md から削除してください。記憶したデータを無条件に信頼せず、何かおかしいと感じたら検証してください。古くなっている可能性のある記憶済み ID を使うより、再検索を優先してください。
形式/例
MEMORY.md の構成例を以下に示します。
# Vibe Notion Memory
## Workspaces
- `abc123-...` — Acme Corp (default)
## Pages (Acme Corp)
- `page-id-1` — Product Roadmap (top-level)
- `page-id-2` — Q1 Planning (under Product Roadmap)
## Databases (Acme Corp)
- `coll-id-1` — Tasks (under Product Roadmap, views: `view-1`)
- `coll-id-2` — Contacts (top-level)
## Aliases
- "roadmap" → `page-id-1` (Product Roadmap)
- "tasks" → `coll-id-1` (Tasks database)
## Notes
- User prefers --pretty output for search results
- Main workspace is "Acme Corp"
メモリを使えば、
searchやworkspace listの呼び出しを繰り返さずに済みます。以前のセッションで ID がわかっている場合は、その ID を直接使ってください。
コマンド
認証コマンド
vibe-notion auth status # Check authentication status
vibe-notion auth logout # Remove stored token_v2
vibe-notion auth extract # Manually re-extract token_v2 (for troubleshooting)
ページコマンド
# List pages in a space (top-level only)
vibe-notion page list --workspace-id <workspace_id> --pretty
vibe-notion page list --workspace-id <workspace_id> --depth 2 --pretty
# Get a page and all its content blocks
vibe-notion page get <page_id> --workspace-id <workspace_id> --pretty
vibe-notion page get <page_id> --workspace-id <workspace_id> --limit 50
vibe-notion page get <page_id> --workspace-id <workspace_id> --backlinks --pretty
# Create a new page (--parent is optional; omit to create at workspace root)
vibe-notion page create --workspace-id <workspace_id> --parent <parent_id> --title "My Page" --pretty
vibe-notion page create --workspace-id <workspace_id> --title "New Root Page" --pretty
# Create a page with markdown content
vibe-notion page create --workspace-id <workspace_id> --parent <parent_id> --title "My Doc" --markdown '# Hello\n\nThis is **bold** text.'
# Create a page with markdown from a file
vibe-notion page create --workspace-id <workspace_id> --parent <parent_id> --title "My Doc" --markdown-file ./content.md
# Create a page with markdown containing local images (auto-uploaded to Notion)
vibe-notion page create --workspace-id <workspace_id> --parent <parent_id> --title "My Doc" --markdown-file ./doc-with-images.md
# Replace all content on a page with new markdown
vibe-notion page update <page_id> --workspace-id <workspace_id> --replace-content --markdown '# New Content'
vibe-notion page update <page_id> --workspace-id <workspace_id> --replace-content --markdown-file ./updated.md
# Update page title or icon
vibe-notion page update <page_id> --workspace-id <workspace_id> --title "New Title" --pretty
vibe-notion page update <page_id> --workspace-id <workspace_id> --icon "🚀" --pretty
# Archive a page
vibe-notion page archive <page_id> --workspace-id <workspace_id> --pretty
# Get page or database row properties (without content blocks — lightweight alternative to page get)
vibe-notion page properties <page_id> --workspace-id <workspace_id> --pretty
データベースコマンド
# Get database schema
vibe-notion database get <database_id> --workspace-id <workspace_id> --pretty
# Query a database (auto-resolves default view)
vibe-notion database query <database_id> --workspace-id <workspace_id> --pretty
vibe-notion database query <database_id> --workspace-id <workspace_id> --limit 10 --pretty
vibe-notion database query <database_id> --workspace-id <workspace_id> --view-id <view_id> --pretty
vibe-notion database query <database_id> --workspace-id <workspace_id> --search-query "keyword" --pretty
vibe-notion database query <database_id> --workspace-id <workspace_id> --timezone "America/New_York" --pretty
# Query with filter and sort (uses property IDs from database get schema)
vibe-notion database query <database_id> --workspace-id <workspace_id> --filter '<filter_json>' --pretty
vibe-notion database query <database_id> --workspace-id <workspace_id> --sort '<sort_json>' --pretty
# List all databases in workspace
vibe-notion database list --workspace-id <workspace_id> --pretty
# Create a database
vibe-notion database create --workspace-id <workspace_id> --parent <page_id> --title "Tasks" --pretty
vibe-notion database create --workspace-id <workspace_id> --parent <page_id> --title "Tasks" --properties '{"status":{"name":"Status","type":"select"}}' --pretty
# Update database title or schema
vibe-notion database update <database_id> --workspace-id <workspace_id> --title "New Name" --pretty
vibe-notion database update <database_id> --workspace-id <workspace_id> --properties '{"status":{"name":"Status","type":"select"}}' --pretty
vibe-notion database update <database_id> --workspace-id <workspace_id> --title "New Name" --properties '{"status":{"name":"Status","type":"select"}}' --pretty
# Add a row to a database
vibe-notion database add-row <database_id> --workspace-id <workspace_id> --title "Row title" --pretty
vibe-notion database add-row <database_id> --workspace-id <workspace_id> --title "Row title" --properties '{"Status":"In Progress","Due":{"start":"2025-03-01"}}' --pretty
# Add row with date range
vibe-notion database add-row <database_id> --workspace-id <workspace_id> --title "Event" --properties '{"Due":{"start":"2026-01-01","end":"2026-01-15"}}' --pretty
# Update properties on an existing database row (row_id from database query)
vibe-notion database update-row <row_id> --workspace-id <workspace_id> --properties '{"Status":"Done"}' --pretty
vibe-notion database update-row <row_id> --workspace-id <workspace_id> --properties '{"Priority":"High","Tags":["backend","infra"]}' --pretty
vibe-notion database update-row <row_id> --workspace-id <workspace_id> --properties '{"Due":{"start":"2026-06-01"},"Status":"In Progress"}' --pretty
vibe-notion database update-row <row_id> --workspace-id <workspace_id> --properties '{"Due":{"start":"2026-01-01","end":"2026-01-15"}}' --pretty
vibe-notion database update-row <row_id> --workspace-id <workspace_id> --properties '{"Related":["<target_row_id>"]}' --pretty
# Delete a property from a database (cannot delete the title property)
vibe-notion database delete-property <database_id> --workspace-id <workspace_id> --property "Status" --pretty
# Get view configuration and property visibility
vibe-notion database view-get <view_id> --workspace-id <workspace_id> --pretty
# Show or hide properties on a view (comma-separated names)
vibe-notion database view-update <view_id> --workspace-id <workspace_id> --show "ID,Due" --pretty
vibe-notion database view-update <view_id> --workspace-id <workspace_id> --hide "Assignee" --pretty
vibe-notion database view-update <view_id> --workspace-id <workspace_id> --show "Status" --hide "Due" --pretty
# Reorder columns (comma-separated names in desired order; unmentioned columns appended)
vibe-notion database view-update <view_id> --workspace-id <workspace_id> --reorder "Name,Status,Priority,Date" --pretty
vibe-notion database view-update <view_id> --workspace-id <workspace_id> --reorder "Name,Status" --show "Status" --pretty
# Resize columns (JSON mapping property names to pixel widths)
vibe-notion database view-update <view_id> --workspace-id <workspace_id> --resize '{"Name":200,"Status":150}' --pretty
# List all views for a database
vibe-notion database view-list <database_id> --workspace-id <workspace_id> --pretty
# Add a new view to a database (default type: table)
vibe-notion database view-add <database_id> --workspace-id <workspace_id> --pretty
vibe-notion database view-add <database_id> --workspace-id <workspace_id> --type board --name "Board View" --pretty
# Delete a view from a database (cannot delete the last view)
vibe-notion database view-delete <view_id> --workspace-id <workspace_id> --pretty
テーブルコマンド
シンプルなテーブル(データベースではないテーブル)。ページ内に埋め込まれる軽量なテーブルです。
# Create a simple table with headers and optional rows
vibe-notion table create <parent_id> --workspace-id <workspace_id> --headers "Name,Role,Score" --pretty
vibe-notion table create <parent_id> --workspace-id <workspace_id> --headers "Name,Role,Score" --rows '[["Alice","Dev","95"],["Bob","PM","88"]]' --pretty
vibe-notion table create <parent_id> --workspace-id <workspace_id> --headers "A,B" --after <block_id> --pretty
vibe-notion table create <parent_id> --workspace-id <workspace_id> --headers "A,B" --before <block_id> --pretty
# Add a row to a simple table
vibe-notion table add-row <table_id> --workspace-id <workspace_id> --cells "Charlie,QA,92" --pretty
# Update a single cell (row and col are 0-indexed, excluding header row)
vibe-notion table update-cell <table_id> --workspace-id <workspace_id> --row 0 --col 1 --value "Lead" --pretty
# Delete a row (0-indexed, excluding header row)
vibe-notion table delete-row <table_id> --workspace-id <workspace_id> --row 0 --pretty
シンプルなテーブルとデータベースの違い:シンプルなテーブルは、スキーマ、フィルター、ビューのない、インラインの軽量なグリッドです。型付きプロパティ、フィルタリング、並べ替えを備えた構造化データには、
databaseコマンドを使ってください。
ブロックコマンド
# Get a specific block
vibe-notion block get <block_id> --workspace-id <workspace_id> --pretty
vibe-notion block get <block_id> --workspace-id <workspace_id> --backlinks --pretty
# List child blocks
vibe-notion block children <block_id> --workspace-id <workspace_id> --pretty
vibe-notion block children <block_id> --workspace-id <workspace_id> --limit 50 --pretty
vibe-notion block children <block_id> --workspace-id <workspace_id> --start-cursor '<next_cursor_json>' --pretty
# Append child blocks
vibe-notion block append <parent_id> --workspace-id <workspace_id> --content '[{"type":"text","properties":{"title":[["Hello world"]]}}]' --pretty
# Append markdown content as blocks
vibe-notion block append <parent_id> --workspace-id <workspace_id> --markdown '# Hello\n\nThis is **bold** text.'
# Append markdown from a file
vibe-notion block append <parent_id> --workspace-id <workspace_id> --markdown-file ./content.md
# Append markdown with local images (auto-uploaded to Notion)
vibe-notion block append <parent_id> --workspace-id <workspace_id> --markdown-file ./doc-with-images.md
# Append nested markdown (indented lists become nested children blocks)
vibe-notion block append <parent_id> --workspace-id <workspace_id> --markdown '- Parent item\n - Child item\n - Grandchild item'
# Append blocks after a specific block (positional insertion)
vibe-notion block append <parent_id> --workspace-id <workspace_id> --after <block_id> --markdown '# Inserted after specific block'
vibe-notion block append <parent_id> --workspace-id <workspace_id> --after <block_id> --content '[{"type":"text","properties":{"title":[["Inserted after"]]}}]'
# Append blocks before a specific block
vibe-notion block append <parent_id> --workspace-id <workspace_id> --before <block_id> --markdown '# Inserted before specific block'
# Update a block
vibe-notion block update <block_id> --workspace-id <workspace_id> --content '{"properties":{"title":[["Updated text"]]}}' --pretty
# Delete a block
vibe-notion block delete <block_id> --workspace-id <workspace_id> --pretty
# Upload a file as a block (image or file block)
vibe-notion block upload <parent_id> --workspace-id <workspace_id> --file ./image.png --pretty
vibe-notion block upload <parent_id> --workspace-id <workspace_id> --file ./document.pdf --pretty
vibe-notion block upload <parent_id> --workspace-id <workspace_id> --file ./image.png --after <block_id> --pretty
vibe-notion block upload <parent_id> --workspace-id <workspace_id> --file ./image.png --before <block_id> --pretty
# Move a block to a new position
vibe-notion block move <block_id> --workspace-id <workspace_id> --parent <parent_id> --pretty
vibe-notion block move <block_id> --workspace-id <workspace_id> --parent <parent_id> --after <sibling_id> --pretty
vibe-notion block move <block_id> --workspace-id <workspace_id> --parent <parent_id> --before <sibling_id> --pretty
ブロックの種類とリッチテキストのリファレンス
ブロックタイプの JSON 形式(見出し、テキスト、リスト、ToDo、コード、引用、区切り線)とリッチテキストの書式コードについては、references/block-types.md を参照してください。
コメントコマンド
# List comments on a page
vibe-notion comment list --page <page_id> --workspace-id <workspace_id> --pretty
# List inline comments on a specific block
vibe-notion comment list --page <page_id> --block <block_id> --workspace-id <workspace_id> --pretty
# Create a comment on a page (starts a new discussion)
vibe-notion comment create "This is a comment" --page <page_id> --workspace-id <workspace_id> --pretty
# Reply to an existing discussion thread
vibe-notion comment create "Replying to thread" --discussion <discussion_id> --workspace-id <workspace_id> --pretty
# Get a specific comment by ID
vibe-notion comment get <comment_id> --workspace-id <workspace_id> --pretty
一括操作
一括コマンドの形式、サポートされるアクション(全 14 種類)、操作の JSON 構造、出力形式、フェイルファスト動作、一括操作の戦略(マルチパスパターン)、レート制限への対処については、references/batch-operations.md を参照してください。
簡単な使用例:
# Inline JSON
vibe-notion batch --workspace-id <workspace_id> '<operations_json>'
# From file (for large payloads)
vibe-notion batch --workspace-id <workspace_id> --file ./operations.json '[]'
検索コマンド
# Search across workspace (--workspace-id is required)
vibe-notion search "query" --workspace-id <workspace_id> --pretty
vibe-notion search "query" --workspace-id <workspace_id> --limit 10 --pretty
vibe-notion search "query" --workspace-id <workspace_id> --start-cursor <offset> --pretty
vibe-notion search "query" --workspace-id <workspace_id> --sort lastEdited --pretty
ワークスペースコマンド
# List all workspaces accessible to the current user (members and guests)
vibe-notion workspace list --pretty
# Resolve the workspace ID that owns a page, block, database, or view.
# Accepts either a raw ID or a full Notion URL — the page ID is extracted from
# the URL path automatically. Useful when you only have a Notion URL and need
# to find the --workspace-id to use for other commands.
vibe-notion workspace resolve <page_id_or_url> --pretty
Tip:
block get、page get、page create、page updateの出力には、ページまたはブロックを所有するワークスペースの ID であるspace_idフィールドが含まれるようになりました。これを使って、以降の操作に適した--workspace-idを確認してください。
ユーザーコマンド
# Get current user info
vibe-notion user me --pretty
# Get a specific user
vibe-notion user get <user_id> --workspace-id <workspace_id> --pretty
# List users in a workspace
vibe-notion user list --workspace-id <workspace_id> --pretty
出力形式
すべてのコマンドは、デフォルトで JSON を出力します。人間が読みやすい形式で出力するには、--pretty を使用してください。
JSON レスポンスの形式(search、database query、page get、block get、backlinks)、$hints のスキーマ警告、詳細な例については、references/output-format.md を参照してください。
--backlinks を使うタイミング
バックリンクを使うと、指定したページにリンクしているページやデータベースがわかります。効率的なナビゲーションには欠かせません。
--backlinks を使うケース:
- 関連をたどる:検索結果が選択肢、列挙値、関連先(プラン名やカテゴリなど)に見える場合。バックリンクを使えば、関連プロパティを介してそれを参照しているすべての行やページがすぐにわかります。親データベースを探し回る必要はありません。
- 参照を探す:ページを見つけ、そのページに言及またはリンクしているほかのページを知りたい場合。
- 逆引き検索:ページを参照している行を見つけるために各データベースをクエリする代わりに、対象ページに対してバックリンクを使うと、該当する行を直接取得できます。
例 — 特定のプランを利用している対象を調べる:
# BAD: 15 API calls — search, open empty pages, trace parents, find database, query
vibe-notion search "Enterprise Plan" ...
vibe-notion page get <plan-page-id> ... # empty
vibe-notion block get <plan-page-id> ... # find parent
# ... many more calls to discover the database
# GOOD: 2-3 API calls — search, then backlinks on the target
vibe-notion search "Enterprise Plan" ...
vibe-notion page get <plan-page-id> --backlinks --pretty
# → backlinks immediately show all people/rows linked to this plan
ページネーション
リストを返すコマンドは、has_more フィールドと next_cursor フィールドを使ったページネーションに対応しています。
block children:カーソルベースです。前回のレスポンスのnext_cursor値を--start-cursorとして渡します。search:オフセットベースです。next_cursor値(数値)を--start-cursorとして渡します。database query:--limitを使ってページサイズを調整します。has_moreは結果がさらにあることを示しますが、プライベート API はカーソルベースのページネーションに対応していないため、さらに行を取得するには--limitを大きくしてください。
トラブルシューティング
認証の失敗
自動抽出に失敗した場合(Notion のデスクトップアプリがインストールされていない、またはログインしていない場合など)、デバッグ出力を確認するため、手動で抽出コマンドを実行してください。
vibe-notion auth extract --debug
このコマンドでは、Notion のディレクトリパスと抽出手順が表示され、問題の診断に役立ちます。
抽出中にデータベースがロックされる
auth extract が次のエラーで失敗し、
{"error":"No token_v2 found. Make sure Notion desktop app is installed and logged in."}
Notion のデスクトップアプリがインストール済みでログインも済んでいる場合、実行中の Notion アプリが Cookie データベースをロックしている可能性があります。Notion のデスクトップアプリを完全に終了してから、コマンドを再試行するようユーザーに伝えてください。認証情報を抽出した後は、Notion を再び開けます。
vibe-notion: command not found
vibe-notion パッケージがインストールされていません。パッケージランナーを使って直接実行してください。どのパッケージランナーを使うか、ユーザーに確認してください。
npx -y vibe-notion ...
bunx vibe-notion ...
pnpm dlx vibe-notion ...
ユーザーが普段使っているパッケージランナーがわかっている場合は、確認せずにそれを使用してください。
制限事項
- 自動抽出は macOS と Linux に対応しています。Windows DPAPI の復号にはまだ対応していません。
token_v2は非公式の内部 API を使用しているため、Notion の仕様変更によって動作しなくなる可能性があります。- これは非公開の非公式 API であり、Notion のサポート対象ではありません。