sb2nは、Scrapboxの全ページを指定したNotionデータベースへ移行するためのツールです。
Scrapboxから機械的にページをコピーし、ラベルを作り、適宜他のデータベースなどに移行するための基盤ツールを提供します。
- Scrapbox APIを使用して、指定したプロジェクトの全ページを取得
- ページのメタデータ(タイトル、作成日、更新日、タグなど)を収集
- ページ本文の取得
Notionの移行先データベースは**フルページデータベース(Full Page Database)**として作成し、以下のプロパティを持つ:
| プロパティ名 | タイプ | 必須 | 説明 |
|---|---|---|---|
| Title | Title | ✓ | ページタイトル(Scrapboxのページ名) |
| Scrapbox URL | URL | ✓ | 元のScrapboxページへのリンク |
| Created Date | Date | ✓ | Scrapboxでのページ作成日時 |
| Tags | Multi-select | Scrapboxページに含まれるタグ |
注意: マイグレーション実行時に、これらの必須プロパティが正しく設定されているかを自動的に検証します。検証に失敗した場合、マイグレーションは中止されます。
-
Notionでフルページデータベースを作成
- Notionで新規ページを作成
/databaseと入力して「データベース - フルページ」を選択- または、既存ページで
/tableと入力して「テーブルビュー - フルページ」を選択後、右上の「...」から「データベースに変換」
-
プロパティを追加・設定
- デフォルトの「Name」プロパティを「Title」に変更(またはそのまま「Name」でも可)
- 「+」ボタンをクリックして以下のプロパティを追加:
- Scrapbox URL: タイプを「URL」に設定
- Created Date: タイプを「日付」に設定
- Tags: タイプを「マルチセレクト」に設定
-
インテグレーションとの共有
- データベースページの右上「...」メニューから「接続を追加」
- 作成したインテグレーションを選択して共有
-
データベースIDの取得
- データベースのURLから32文字のIDをコピー
- 例:
https://www.notion.so/{workspace}/{database_id}?v=... database_id部分(ハイフンなし32文字)を.envのNOTION_DATABASE_IDに設定
- タイトル: Scrapboxのページタイトルをそのまま使用
- Scrapbox URL:
https://scrapbox.io/{project}/{page_title}形式 - 作成日: Scrapboxページの作成日時(Unix timestamp から変換)
- タグ: Scrapboxページ内のハッシュタグ(
#tag形式)を抽出してMulti-selectとして設定 - 本文: Notionページの本文として、Scrapbox記法からNotion Blocksへ変換して格納
マイグレーション実行時には、Notionデータベースのプロパティを自動的に検証します。
-
必須プロパティの存在確認:
Title(またはName) プロパティが存在するかScrapbox URLプロパティが存在するかCreated Dateプロパティが存在するか
-
プロパティタイプの確認:
Title/NameがtitleタイプであるかScrapbox URLがurlタイプであるかCreated Dateがdateタイプであるか
-
オプションプロパティの確認:
Tagsプロパティが存在しない場合は警告を表示(タグ情報は無視される)Tagsが存在するがmulti_selectタイプでない場合も警告を表示
sb2n migrateコマンド実行時、最初のページを移行する前に自動的に実行されます--dry-runモードでは検証をスキップします(実際にAPIアクセスしないため)- 検証に失敗した場合、エラーメッセージを表示してマイグレーションを中止します
ERROR: Database property validation failed
ERROR: Database must have a 'Scrapbox URL' property
ERROR: Migration aborted.
- Scrapboxページに含まれる画像(
[image_url]形式)を検出 - 画像がScrapbox上にホストされている場合(
https://gyazo.com/など)は、画像をダウンロード - ダウンロードした画像をNotionへアップロード
- Notion Block内で画像を適切に配置
認証情報は以下の2つの方法で指定できます:
.env ファイルから以下の認証情報を読み込む:
# Scrapbox API設定
SCRAPBOX_PROJECT=your-project-name
SCRAPBOX_COOKIE_CONNECT_SID=your-connect-sid
# Notion API設定
NOTION_API_KEY=secret_xxxxxxxxxxxxx
NOTION_DATABASE_ID=xxxxxxxxxxxxxコマンドライン引数で直接指定することも可能です。.envファイルと同時に指定された場合、コマンドラインオプションが優先されます。
sb2n migrate -P project-name -S connect-sid -N token -D database-id- SCRAPBOX_PROJECT /
-P, --project: 移行元のScrapboxプロジェクト名 - SCRAPBOX_COOKIE_CONNECT_SID /
-S, --sid: Scrapbox APIアクセス用のCookie(プライベートプロジェクトの場合に必要) - NOTION_API_KEY /
-N, --ntn: Notion Integration Token - NOTION_DATABASE_ID /
-D, --db: 移行先のNotionデータベースID
- バージョン: Python >= 3.14
Scrapbox APIとのやり取りを行うためのPythonクライアントライブラリ。
- PyPI: scrapbox-client
- ドキュメント: https://egpl.dev/scrapbox-client/scrapbox.html
- バージョン: >= 0.1.0
主な機能:
ScrapboxClient: Scrapbox APIクライアントget_pages(project_name, skip, limit): ページ一覧取得get_page(project_name, page_title): ページ詳細取得get_page_text(project_name, page_title): ページテキスト取得get_page_icon_url(project_name, page_title): ページアイコンURL取得get_file(file_id): ファイル(画像など)のダウンロード
- 認証:
connect_sidCookie による認証(プライベートプロジェクト用) - レスポンスモデル:
PageListResponse,PageDetail,PageListItem,Line
使用例:
from scrapbox.client import ScrapboxClient
# 認証情報付きでクライアント初期化
with ScrapboxClient(connect_sid="s%3AykQ__xxxxx-...") as client:
# 全ページリストを取得
pages = client.get_pages("project-name", skip=0, limit=100)
# 個別ページの詳細取得
page_detail = client.get_page("project-name", "Page Title")
# 画像ファイルのダウンロード
image_data = client.get_file("1a2b3c4d5e6f7g8h9i0j.JPG")Notion APIとのやり取りを行うためのPythonクライアントライブラリ。
- PyPI: notion-client
- ドキュメント: https://ramnes.github.io/notion-sdk-py/
- バージョン: >= 2.7.0
主な機能:
Client/AsyncClient: Notion APIクライアント(同期/非同期)- APIエンドポイントへのアクセス:
pages.create(): ページ作成blocks.children.append(): ブロック追加data_sources.query(): データベースクエリ
- ヘルパー関数:
iterate_paginated_api(): ページネーションAPIのイテレータcollect_paginated_api(): ページネーションAPIの一括取得is_full_page(),is_full_block(): レスポンス型判定
- エラーハンドリング:
APIResponseError,APIErrorCode - ログ設定可能
使用例:
import os
from notion_client import Client
# クライアント初期化
notion = Client(auth=os.environ["NOTION_TOKEN"])
# データベースにページを作成
new_page = notion.pages.create(
parent={"database_id": database_id},
properties={
"Name": {"title": [{"text": {"content": "Page Title"}}]},
"URL": {"url": "https://scrapbox.io/project/page"},
},
)
# ページにブロックを追加
notion.blocks.children.append(
block_id=new_page["id"],
children=[
{
"object": "block",
"type": "paragraph",
"paragraph": {
"rich_text": [{"type": "text", "text": {"content": "Hello, world!"}}]
},
}
],
)- python-dotenv:
.envファイルからの環境変数読み込み - httpx: HTTP通信(scrapbox-client/notion-clientが内部使用)
- ベースURL:
https://scrapbox.io/api - ページ一覧取得:
GET /pages/{project} - ページ詳細取得:
GET /pages/{project}/{title} - ファイル取得:
GET /files/{file_id}
- ベースURL:
https://api.notion.com/v1 - データベースページ作成:
POST /pages - ブロック追加:
POST /blocks/{block_id}/children - 画像アップロード: external または file タイプを使用
| Scrapbox記法 | Notion Block Type | 実装状態 |
|---|---|---|
| 通常テキスト | paragraph | ✅ |
[* 見出し] |
heading_3 (H3) | ✅ |
[** 見出し2] |
heading_2 (H2) | ✅ |
[*** 見出し3] |
heading_1 (H1) | ✅ |
[https://example.com] |
bookmark or link | ✅ |
[image_url] |
image | ✅ |
[icon_name.icon] |
image | ✅ |
[/icons/icon_name.icon] |
image | ✅ |
`code` |
code (inline) | 部分的 |
code:filename ブロック |
code block | ✅ |
table:テーブル名 |
table block | ✅ |
| 箇条書き(インデント) | bulleted_list_item | ✅ |
[link text] |
内部リンク(通常テキストとして扱う) | ✅ |
#tag |
タグとして抽出(Multi-selectへ) | ✅ |
> 引用文 |
quote | ✅ |
| Scrapbox記法 | 説明 | 実装状態 | 優先度 |
|---|---|---|---|
[[文字列]] |
太字(bold) | ✅ | - |
[* 文字列] |
太字(bold)※文中の場合 | ✅ | - |
[** 文字列] |
太字(bold)※文中の場合 | ✅ | - |
[- 文字列] |
取り消し線(strikethrough) | ✅ | - |
[_ 文字列] |
下線(underline) | ✅ | - |
[/ 文字列] |
斜体(italic) | ✅ | - |
`code` |
インラインコード | ✅ | - |
[! 文字列] |
赤背景 | ✅ | - |
[# 文字列] |
緑背景 | ✅ | - |
[% 文字列] |
青背景 | ✅ | - |
注: Scrapboxでは行頭の [* 見出し] が見出しで、文中の [* 文字列] が太字として扱われる。見出しは行全体が [*...] の形式の場合のみ。
見出しレベルのマッピング:
- Scrapboxでは
*の数が多いほど文字が大きくなる([***]>[**]>[*]) - Notionでは
#の数が多いほど文字が小さくなる(#>##>###) - そのため、アスタリスクの数を逆にマッピング:
[*](1個) → Notion H3 (###)[**](2個) → Notion H2 (##)[***+](3個以上) → Notion H1 (#)
- 引用記号
>と見出しが組み合わさった場合(> [* 見出し])は、引用を無視して見出しとして扱う
| Scrapbox記法 | 説明 | 実装状態 | 優先度 |
|---|---|---|---|
[リンクテキスト] |
内部リンク(同一プロジェクト) | ✅(テキスト化) | - |
[page#fragment] |
フラグメント付き内部リンク | ✅ | 中 |
[/project/page] |
クロスプロジェクトリンク | ✅ | 高 |
[リンクテキスト URL] |
外部リンク(表示テキスト付き) | ✅ | - |
[URL リンクテキスト] |
外部リンク(表示テキスト付き・逆順) | ✅ | - |
http://example.com |
URL自動リンク | 部分的 | 中 |
#ハッシュタグ |
ハッシュタグ(内部リンク) | ✅(タグ抽出) | - |
フラグメント付き内部リンクの変換:
Scrapboxでは [page#fragment] 形式で同一プロジェクト内のページの特定セクションへリンクできます。これをNotionでは外部URLリンクとして変換します。
[PageTitle#section]→https://scrapbox.io/{project}/PageTitle#sectionへのリンク[ページタイトル#セクション]→https://scrapbox.io/{project}/ページタイトル#セクションへのリンク
クロスプロジェクトリンクの変換:
Scrapboxでは [/project/page] 形式でScrapbox内の他のプロジェクトへリンクできます。これをNotionでは外部URLリンクとして変換します。
[/icons/hr]→https://scrapbox.io/icons/hrへのリンク[/help-jp/記法]→https://scrapbox.io/help-jp/記法へのリンク
クロスプロジェクトリンクのフラグメント:
クロスプロジェクトリンクもフラグメントをサポートします:
[/project/page#fragment]→https://scrapbox.io/project/page#fragmentへのリンク
アイコン記法との違い:
[/icons/hr.icon]→ アイコン画像として表示(--iconフラグ使用時)[/icons/hr]→ Scrapboxページへのリンク(常に変換)
実装方針:
/で始まり.iconで終わらないパターンを検出https://scrapbox.io/project/page形式のURLに変換- Notionでは外部リンク(
link_url)または bookmark ブロックとして表示
| Scrapbox記法 | 説明 | 実装状態 | 優先度 |
|---|---|---|---|
[image_url] |
画像埋め込み | ✅ | - |
[youtube_url] |
YouTube埋め込み | ❌ | 対応不要 |
[vimeo_url] |
Vimeo埋め込み | ❌ | 対応不要 |
[spotify_url] |
Spotify埋め込み | ❌ | 対応不要 |
[soundcloud_url] |
SoundCloud埋め込み | ❌ | 対応不要 |
[twitter_url] |
Twitter埋め込み | ❌ | 対応不要 |
| Scrapbox記法 | 説明 | 実装状態 | 優先度 |
|---|---|---|---|
[* 見出し] |
見出しレベル3 (H3) | ✅ | - |
[** 見出し] |
見出しレベル2 (H2) | ✅ | - |
[*** 見出し] |
見出しレベル1 (H1) | ✅ | - |
> [* 見出し] |
引用付き見出し → 見出しとして扱う | ✅ | - |
| スペースによるインデント | 箇条書き | ✅(最大2階層) | - |
code:filename |
コードブロック | ✅ | - |
table:テーブル名 |
テーブル記法 | ❌ | 中 |
箇条書きのネスト制限:
Notion APIの制限により、箇条書きのネストは最大2階層(トップレベルを含めて合計3レベル)までサポートされています。
- トップレベル(インデントなし)
- 第1階層(インデント1)
- 第2階層(インデント2)
第3階層(サポートされない)
- 第2階層(インデント2)
- 第1階層(インデント1)
Scrapboxで3階層以上のネストがある場合、インデントレベル3以降はすべて第2階層にまとめられます。
例(Scrapboxの深いネスト):
test0
test1
test2
test3
test4
Notionでの表示:
test0
- test1
- test2
- test3(第2階層に配置)
- test4(第2階層に配置)
これはNotion API仕様による制限です(エラー: bulleted_list_item.children[0].bulleted_list_item.children[0].bulleted_list_item.children should be not present)。
| Scrapbox記法 | 説明 | 実装状態 | 優先度 |
|---|---|---|---|
[icon_name.icon] |
プロジェクト内ページのアイコン画像 | 🚧 実装中 | 中 |
[/icons/icon_name.icon] |
/iconsプロジェクトのアイコン画像 |
🚧 実装中 | 中 |
アイコン記法の詳細:
Scrapboxのアイコン記法は、指定したページに設定されているアイコン画像を表示する機能です。
-
[icon_name.icon]: 同じプロジェクト内のicon_nameページのアイコン画像を表示- 実際のURL:
https://scrapbox.io/api/pages/{project}/icon_nameのimageフィールドから取得 - 例:
[hr.icon]→ プロジェクト内のhrページのアイコン画像
- 実際のURL:
-
[/icons/icon_name.icon]:/iconsプロジェクトのicon_nameページのアイコン画像を表示- 実際のURL:
https://scrapbox.io/api/pages/icons/icon_nameのimageフィールドから取得 - 例:
[/icons/hr.icon]→/iconsプロジェクトのhrページのアイコン画像
- 実際のURL:
実装方針:
- パーサーでアイコン記法を検出(
.icon]で終わるパターン) /icons/で始まる場合はiconsプロジェクト、それ以外は現在のプロジェクトから取得- Scrapbox APIの
get_pageを使ってページ情報を取得し、imageフィールドからアイコン画像URLを取得 - 取得した画像URLをNotion APIで画像ブロックとして追加
参考: https://scrapbox.io/help-jp/アイコン記法
| Scrapbox記法 | 説明 | 実装状態 | 優先度 |
|---|---|---|---|
> 引用文 |
引用(quote) | ❌ | 中 |
| Scrapbox記法 | 説明 | 実装状態 | 優先度 |
|---|---|---|---|
| 空行 | パラグラフ区切り | ✅ | - |
--- |
水平線 | ❌ | 低 |
- テキスト装飾の入れ子: Scrapboxでは
[[*文字列]]のような入れ子が可能だが、Notionでも同様に対応する必要がある - 内部リンク: Scrapboxの内部リンクは移行後のNotionでは同名ページへのリンクに変換可能(データベース内検索が必要)
- リッチテキスト: Notion APIでは
rich_text配列で複数のスタイルを表現可能 - テーブル: Notion APIでは
tableブロックがあるが、複雑な構造のため対応は慎重に - 数式: Notionでも
equationブロックで対応可能
- 太字・斜体・取り消し線などのテキスト装飾: 最も頻繁に使われる
- 外部リンク(表示テキスト付き):
[Google https://google.com]形式 - 引用ブロック: 一般的な記法
- テーブル記法: データ整理に有用
- メディア埋め込み: YouTube、Vimeo、Spotify、SoundCloud、Twitter等の外部サービス埋め込みは対応しない
- これらのURLは通常のbookmarkまたはリンクとして扱う
- APIレート制限への対応(リトライロジック)
- ページ移行失敗時のログ記録
- 部分的な移行失敗時の続行可否判断
- 画像ダウンロード失敗時の代替処理
- 移行進捗状況の表示
- エラー・警告のログ記録
- 移行完了後のサマリー表示
1. 環境変数の読み込み(.env)
↓
2. Scrapbox APIから全ページリストを取得
↓
3. 各ページに対して以下を実行:
a. ページ詳細を取得
b. タグを抽出
c. 画像URLを検出・ダウンロード
d. Scrapbox記法をNotion Blocks形式に変換
e. Notionデータベースにページを作成
f. 画像をアップロード
g. ブロックをNotionページに追加
↓
4. 移行結果のサマリーを表示
# Notion移行コマンド
sb2n migrate # 基本的な実行(.envファイル使用)
sb2n migrate --env-file /path/to/.env # .envファイルを指定
sb2n migrate -P project -S sid -N token -D db # コマンドラインで認証情報を指定
sb2n migrate --dry-run # ドライラン(実際には移行しない)
sb2n migrate --pages "ページ1,ページ2" # 特定のページのみ移行
sb2n migrate --skip # 既存ページをスキップ
sb2n migrate --icon # アイコン画像も移行
# 内部リンク復元コマンド
sb2n restore-link # 移行済みページの内部リンクを復元
sb2n restore-link --dry-run # リンク復元のドライラン
sb2n restore-link --pages "ページ1" # 特定ページのみ処理
sb2n restore-link -N token -D db # コマンドラインで認証情報を指定
# Markdownエクスポートコマンド
sb2n export # デフォルト(./out)にエクスポート
sb2n export -d /path/to/output # 出力先ディレクトリを指定
sb2n export --limit 10 # エクスポートするページ数を制限
sb2n export -P project -S sid # コマンドラインで認証情報を指定ScrapboxページをNotionデータベースに移行します。
-P, --project TEXT: Scrapboxプロジェクト名(.envのSCRAPBOX_PROJECTを上書き)-S, --sid TEXT: Scrapbox connect.sid cookie(.envのSCRAPBOX_COOKIE_CONNECT_SIDを上書き)-N, --ntn TEXT: Notion統合トークン(.envのNOTION_API_KEYを上書き)-D, --db TEXT: NotionデータベースID(.envのNOTION_DATABASE_IDを上書き)--env-file PATH: 環境変数ファイルのパス(デフォルト:.env)-v, --verbose: 詳細ログを出力
--dry-run: 実際には移行せず、動作を確認--limit N: 移行するページ数の上限-s,--skip: Notionに既存のページをスキップ--icon: Scrapboxのアイコン記法([icon.icon])の画像も移行
ScrapboxページをMarkdown形式でエクスポートします。画像ファイルは assets/ ディレクトリに保存され、Markdownファイルから相対パスで参照されます。
# デフォルトディレクトリ(./out)にエクスポート
sb2n export
# 出力先を指定
sb2n export -d ./my-export
# 件数制限付きでエクスポート
sb2n export --limit 10output-dir/
├── assets/ # 画像ファイル
│ ├── abc123def456.png
│ ├── 789ghijk012.jpg
│ └── ...
├── page1.md # Markdownファイル
├── page2.md
└── ...
| Scrapbox記法 | Markdown出力 |
|---|---|
[* 見出し] |
## 見出し |
[** 見出し] |
### 見出し |
[*** 見出し] |
#### 見出し |
[[太字]] |
**太字** |
[/ 斜体] |
*斜体* |
[- 取り消し線] |
~~取り消し線~~ |
[_ 下線] |
<u>下線</u> |
`コード` |
`コード` |
[! 赤背景] |
<span style="background-color: #ffebee">赤背景</span> |
[# 緑背景] |
<span style="background-color: #e8f5e9">緑背景</span> |
[% 青背景] |
<span style="background-color: #e3f2fd">青背景</span> |
[画像URL] |
 |
[リンクテキスト URL] |
[リンクテキスト](URL) |
[/project/page] |
[https://scrapbox.io/project/page](https://scrapbox.io/project/page) |
リスト項目 |
- リスト項目 |
> 引用 |
> 引用 |
code:python |
```python |
-P, --project TEXT: Scrapboxプロジェクト名(.envのSCRAPBOX_PROJECTを上書き)-S, --sid TEXT: Scrapbox connect.sid cookie(.envのSCRAPBOX_COOKIE_CONNECT_SIDを上書き)--env-file PATH: 環境変数ファイルのパス(デフォルト:.env)-v, --verbose: 詳細ログを出力
-d, --output-dir DIR: 出力先ディレクトリ(デフォルト:./out)--limit N: エクスポートするページ数の上限--pages TEXT: カンマ区切りで特定のページのみエクスポート-s, --skip: 既存ファイルをスキップ
- 画像のダウンロード: Scrapbox内の画像および外部画像URLはすべてダウンロードされ、
assets/ディレクトリに保存されます - ファイル名: ページタイトルがそのままファイル名になります。特殊文字は
_に置換されます - 相対リンク: Markdown内の画像参照は相対パス(
assets/xxx.png)で記述されます - Notion移行不要: このコマンドはScrapbox APIのみを使用し、Notion APIは不要です
移行済みのNotionページ内にあるScrapbox内部リンク([ページ名] 形式)を、Notion上の実際のページリンクに変換します。
Scrapboxでは [ページ名] という記法で同じプロジェクト内の他のページへのリンクを作成できます。sb2n migrate による初回移行時は、これらは通常のテキストとして扱われます。restore-link コマンドは、移行後にこれらの内部リンクを復元し、Notion上でも適切にリンクとして機能させます。
-
既存ページの取得
- Notionデータベース内の全ページを取得
- 各ページのタイトルとページIDをマップとして保持
-
ブロックの走査
- 各ページのブロックを再帰的に取得(子ブロックも含む)
- テキストを含むブロック(paragraph, heading, list, quote等)を対象
-
内部リンクパターンの検出
[ページ名]パターンを検出- ただし、以下は除外:
- 既にリンクとして設定されているもの(
link_urlが存在) - 外部URL形式(
http://やhttps://を含む) - 画像URL(画像拡張子で終わる)
- Scrapbox特殊記法(
[* text],[- text],[/ text],[_ text],[[text]],`code`)
- 既にリンクとして設定されているもの(
-
リンクの置換
- 検出された
[ページ名]の「ページ名」が、同じデータベース内に存在するか確認 - 存在する場合、そのテキスト部分をNotionのページリンク(mention)に置換
- rich_text配列を更新し、ブロックを更新
- 検出された
-
進捗とエラー処理
- 処理済みページ数と更新されたリンク数を表示
- エラーが発生してもスキップして継続
- 最終的なサマリーを表示
# 基本的な実行
sb2n restore-link
# ドライラン(実際には更新しない)
sb2n restore-link --dry-run
# 特定のページのみ処理
sb2n restore-link --pages "ページ1,ページ2"
# 詳細ログを表示
sb2n restore-link --verboseBefore (Scrapbox風のテキスト):
This is a reference to [HomePage] and [Another Page].
After (Notionリンク):
This is a reference to @HomePage and @Another Page.
(実際のNotion APIでは、mention タイプのrich_textとしてページリンクが設定されます)
- 曖昧さの解決: 同名のページが複数存在する場合は、最初に見つかったページにリンクされます
- 大文字小文字: ページ名の大文字小文字は区別されます(完全一致のみ)
- 部分一致:
[ページ名の一部]のような部分一致はサポートしません - 更新頻度: このコマンドは移行後に1回実行することを想定しています。頻繁な実行はAPI制限に注意が必要です
- rich_text構造の維持: リンク置換時に既存の装飾(bold, italic等)を保持
- ブロック更新API: Notion APIの
blocks.updateを使用 - ページメンション形式:
{"type": "mention", "mention": {"type": "page", "page": {"id": "page_id"}}} - バッチ処理: 大量のページを処理する際のAPI制限対策
- Scrapboxの全ての記法がNotionで完全に再現できるわけではない
- Scrapboxの内部リンク構造はNotionでは単純なテキストとして扱う
- 大量のページを移行する場合、API制限により時間がかかる可能性がある
- Gyazo以外の外部画像サービスについては対応が限定的な場合がある
- 双方向同期機能
- 段階的な移行(バッチ処理)
- カスタムマッピング設定(プロパティのカスタマイズ)
- Scrapboxのバックリンク情報の保持