---
title: "インポート"
description: "ClaudeとChatGPTの会話、MCPメモリ、Claudeのプロジェクト、通常のMarkdownをインポート——フォーマットは内容から判定します。"
---

# インポート

インポートは、既存のナレッジベースを一度のアップロードでまるごとスペースに取り込みます。claude.aiやChatGPTのエクスポート、MCP memory-server、Claudeのプロジェクトとメモリ、そして通常のMarkdown・テキストファイルまで。フォーマットはファイル名ではなく**内容から**判定するので、事前に手作業で整える必要はありません。エンジンが自力でアーカイブを解析し、フォルダへ振り分けます。

インポートは[エクスポート](/docs/import-export/export/)の鏡像です。エクスポートがディスク上のファイル——信頼できる唯一の情報源——をそのまま読み出すのに対し、インポートはソースを解析し、通常の書き込みパスを通してノートを書き込みます。だからこそ各ノートは、バージョン管理も来歴もインデックス化も込みで、人がエディタで作成したのとまったく同じ形でスペースに収まります。

## 認識できるフォーマット

ClaudeやChatGPTのアーカイブは、たいてい1つの中に複数種類のデータが同居しています。インポートは、扱えるものをすべて検出して取り込みます。

| ソース | エクスポート内のファイル | ノートになるもの |
|---|---|---|
| Claudeの会話 | `conversations.json` | 会話1件につき1ノート。メッセージは `### Human/Assistant` |
| ChatGPTの会話 | `conversations.json`(シャード化された `conversations-000.json…` を含む) | 会話1件につき1ノート。トランスクリプトは時系列順 |
| MCPメモリ | `memory.json`(JSONL) | エンティティ1件につき1ノート。リレーションは `[[wikilinks]]` に |
| Claudeのプロジェクト | `projects.json` または `projects/<uuid>.json` | プロジェクトのフォルダ: ドキュメント + インストラクション |
| Claudeのメモリ | `memories.json` | アカウントのメモリブロック1件につき1ノート |
| Claudeのデザインチャット | `design_chats/<uuid>.json` | チャット1件につき1ノート |
| Markdown / テキスト | `.md`、`.txt` | 1ノート。ファイルの本文がそのままノートの本文 |

フォーマットは内容の分析で決まります(どのサービスも `conversations.json` という名前のファイルを吐くため、名前はあてになりません)。空のメッセージや、意味のある断片が1つもない会話が「孤児」ノートを生むことはありません——スキップした件数はインポートのサマリーに出ます。アーカイブに認識できないJSONが混じっていた場合も、`unsupported` としてサマリーに載ります。データの取りこぼしは黙って起きるのではなく、必ずサマリーで見えるようになっています。

## インポートのしかた

インポートはスペース設定の**Import**タブ(`/s/<space>/management/import`)にあります。オプションはそれぞれ独立したセクションです。

- **File** — エクスポートしたファイルを選びます(`conversations.json`、ZIPエクスポート丸ごと、または `memory.json`)。単体の `.md`/`.txt` ファイルは、このダイアログではなくドラッグ&ドロップでインポートします(後述)。
- **Skip existing notes** — 再インポート時の挙動(後述)。
- **Memory entries** — メモリのエンティティの置き場所(後述)。

長いインポートは**永続ジョブ**として走ります。書き込み済みノート数のライブカウンター付きプログレスバー、現在のフェーズ、そして**Cancel**ボタン。タブを離れて戻ってきても大丈夫です——インポートはバックグラウンドで動き続け、戻ってくれば進捗、あるいは最終サマリーがまた見えます。

> [!tip] ファイルをウィンドウにドロップする
> アップロードダイアログを使うかどうかは自由です。`.md` や `.txt` ファイルをアプリのウィンドウへ直接ドロップすれば、それがそのままノートになります。ツリーのフォルダにドロップすればそのフォルダへ、コンテンツ領域にドロップすれば開いているノートのフォルダか、なければルートへ入ります。中身は同じインポートのパイプラインで、入口が2つあるだけです。

### 「Skip existing notes」オプション

ノートのファイル名は決定論的で、ソース側の同一性に紐づいています。おかげで、同じエクスポートを再インポートしても重複が増えるのではなく、**同じファイルが上書き**されます——「Untitled」の会話が50本あっても、互いに衝突しません。

- **オフ(再アップロード時のデフォルト — upsert)** — 既存のノートをパス単位で冪等に上書きします。
- **オン** — すでにパスが存在するノートは**スキップ**します。「更新した履歴を流し直したが、手で直した分は潰さないでほしい」というケース向けです。

### 「Memory entries」オプション

`memory.json` のエンティティは、次の3か所のいずれかに振り分けられます。

- **folder** — インポート先ルートフォルダの下に、ユーザーから見える通常のノートとして置く。
- **space** — スペースの隠しエージェントメモリマウント(`.notarium/memory`)へ。ここに入ったエントリはツリーにもフィードにも検索にも現れませんが、エージェントは `recall` で辿り着けます。
- **skip** — メモリをまったくインポートしない。

> [!note] グローバルドメインではなく、スペースのメモリ
> **space**を選ぶと、エントリはそのスペース固有のエージェントメモリに入ります。このメモリを閲覧する専用UIはスペース内にはありません——エージェントが `recall` を通して見るだけです。これはあくまで特定のスペースのメモリであって、グローバルな個人メモリドメイン(エクスプローラーツリーの **Memory** レンズで開くもの)ではありません。このインポートはそちらには書き込みません。

## データの配置

インポートは、選んだルートの下に予測可能なフォルダツリーを作ります。

```md
conversations/claude/     — Claudeの会話
conversations/chatgpt/    — ChatGPTの会話
projects/<project>/       — Claudeのプロジェクト (+ docs/, prompt-template.md)
memory/claude/            — Claudeアカウントのメモリ
memory/<entity-type>/     — memory.json のエンティティ
design-chats/<project>/   — Claudeのデザインチャット
```

## 日付はデータとして受け継がれる

素朴なインポートなら履歴を丸ごと「今日」の日付にしてしまい、フィードは何百もの会話を一つの山に積み上げるでしょう。Notariumはそうせず、**作成日をデータとして引き継ぎます**。どのノートにも、その会話が実際に行われた時刻がフロントマターの `created:` として書き込まれます。フィードはインポートした履歴を本来の日付に沿って並べ、「エクスポート → インポート」の往復も日付を保ちます——移し替えで失われるものはありません。

「Created」フィールドは、エディタから手で編集することもできます(ノートのメタデータ)。たとえば移行のときや、ノートの日付を直したいときに使えます。最終更新時刻(`modified`)のほうは常にファイルが実際に編集された時刻を指し、変更できません。

## 内部の仕組み

インポートは、ギガバイト級のアーカイブにも、回線の切断にも耐えるように作られています。

- **ストリーミング処理。** アップロードはディスクへ流し込み、ZIPは1メンバーずつ展開し、会話のJSON配列は要素ごとに——1会話ずつ——解析します。ピーク時のメモリ使用量はアーカイブのサイズに左右されないので、600MBのエクスポートでもサーバーは落ちません。
- **永続ジョブ。** ホストにメタデータデータベースがあれば(セルフホストでは通常こちら)、インポートはデフォルトで永続ジョブになります。アップロードはステージングに保存され、バックグラウンドワーカーがリクエストの外でノートを書き込みます。タブを閉じても、接続が切れても、サーバーが再起動しても、進捗は失われません。
- **協調動作。** 大量インポートがサーバーを独占することはありません。書き込みはインタラクティブなリクエストに道を譲り、バックグラウンドのインデックス化はストリームの間だけ止まって後から追いつきます。何千本ものノートを書き込んでいる最中でも、検索とナビゲーションは軽快なままです。

```mermaid
flowchart LR
  src([アーカイブ / ファイル]) -->|アップロード| stage[ディスク上のステージング]
  stage -->|インポートジョブ| worker[バックグラウンドワーカー]
  worker -->|書き込みパス| notes[(Markdownノート)]
  worker -.->|進捗| ui([Importタブ])
```

> [!note] メタデータデータベースがない場合のインポート
> メタデータデータベースを持たないホスト(それが無いのは `AUTH_MODE=none` のときだけです)には、ジョブ層がありません。インポートは1つのリクエストの中で同期のストリーミング経路を走り、コアもライブカウンターも同じです。進捗もサマリーも見た目は変わりません。違うのは、サーバーの再起動を越えられないという一点だけです。

## 境界

- **キャンセルはできるが、一時停止はできない。** ジョブは(協調的に)キャンセルできますが、一時停止して再開することはできません。
- **インジケーターは不定表示。** アーカイブに入っているノート数は事前にわからないため、進捗はパーセンテージやETAではなく、フェーズと書き込み済みノート数のライブカウンターで示されます。
- **途切れたアップロードは最初からやり直し。** 永続性が効き始めるのは、バイトが届いてからです。大きなアーカイブのアップロードが途中で切れた場合は、やり直しになります。
- **バイナリの添付ファイルはインポートされない。** 添付から取り出したテキストはノート本文に埋め込まれますが、バイナリファイルそのものは入りません(エクスポートと同じです)。
- **インポート先はスペースのルート。** インポートダイアログでは対象フォルダを選べません——ノートはルートへ入ります。ドラッグ&ドロップの場合は、ドロップした場所がルートになります。

## 次へ

- [エクスポート](/docs/import-export/export/) — スペースやフォルダをMarkdownのアーカイブとして取り出す。
- [エージェントとMCP](/docs/agents/) — エージェントが `recall` を通じてインポート済みのメモリをどう扱うか。
