mcpField
V
vibe-notion

vibe-notion

github.com/devxoul生産性63232 回インストール3 日前に更新
リポジトリ

vibe-notion について

vibe-notionは、Agentやユーザーが非公式のプライベートAPI経由でNotionワークスペースを操作するTypeScript製コマンドラインツールです。ページ、データベース、ブロック、ユーザーを扱い、Notionデスクトップアプリから認証情報を取得しますが、APIの変更で動作しなくなる可能性があります。

主な機能

  1. 01ページ、データベース、ブロックのCRUD
  2. 02ワークスペース検索とユーザー管理
  3. 03バッチ操作の実行
  4. 04デスクトップアプリからの認証情報取得

活用シーン

  1. 01ワークスペース内のページ検索と確認
  2. 02データベース行の一括作成や更新
  3. 03ページ内容とコメントの管理
  4. 04ワークスペースとユーザー情報の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/devxoul/vibe-notion --skill vibe-notion

インストール後、Claude Code で/vibe-notionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
batch-operations.md
block-types.md
common-patterns.md
output-format.md
templates/
create-page.sh
query-database.sh
read-page.sh
workspace-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-rowpage create --database で作成
ビュー管理view-get、view-update、view-list、view-add、view-delete非対応
ワークスペースの一覧表示対応非対応
安定性プライベート API — Notion の変更により動作しなくなる場合があります公式のバージョン管理された API — 安定しています

選択の流れ:

  1. Notion デスクトップアプリがインストールされている場合 → vibe-notion(この CLI)を使用
  2. NOTION_TOKEN が設定されているものの、デスクトップアプリがない場合 → vibe-notionbot を使用
  3. 両方とも利用できる場合 → vibe-notion を優先(機能が豊富で、セットアップ不要)
  4. どちらも利用できない場合 → いずれかを設定するようユーザーに依頼

重要: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 のサポート対象ではありません。

コメント