Notariumドキュメント
ドキュメントのバージョン: latest

インポート

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

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

認識できるフォーマット

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.txt1ノート。ファイルの本文がそのままノートの本文

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

インポートのしかた

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

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

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

ファイルをウィンドウにドロップする

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

「Skip existing notes」オプション

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

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

「Memory entries」オプション

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

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

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

データの配置

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

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のエクスポートでもサーバーは落ちません。
  • 永続ジョブ。 ホストにメタデータデータベースがあれば(セルフホストでは通常こちら)、インポートはデフォルトで永続ジョブになります。アップロードはステージングに保存され、バックグラウンドワーカーがリクエストの外でノートを書き込みます。タブを閉じても、接続が切れても、サーバーが再起動しても、進捗は失われません。
  • 協調動作。 大量インポートがサーバーを独占することはありません。書き込みはインタラクティブなリクエストに道を譲り、バックグラウンドのインデックス化はストリームの間だけ止まって後から追いつきます。何千本ものノートを書き込んでいる最中でも、検索とナビゲーションは軽快なままです。
flowchart LR
  src([アーカイブ / ファイル]) -->|アップロード| stage[ディスク上のステージング]
  stage -->|インポートジョブ| worker[バックグラウンドワーカー]
  worker -->|書き込みパス| notes[(Markdownノート)]
  worker -.->|進捗| ui([Importタブ])
メタデータデータベースがない場合のインポート

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

境界

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

次へ

  • エクスポート — スペースやフォルダをMarkdownのアーカイブとして取り出す。
  • エージェントとMCP — エージェントが recall を通じてインポート済みのメモリをどう扱うか。