KibelaからNotePMへ移行する

KibelaからNotePMへデータ移行するための方法と、プログラムの使い方を紹介します。

URL:他サービスからNotePMへ移行するスクリプト

  • データ移行スクリプト対応サービス
    • Qiita Team
    • esa
    • Docbase
    • Kibela
    • Confluence (準備中)
    • Kintone (準備中)
    • ファイルサーバー (準備中)

Kibelaからのデータエクスポート

Kibelaの設定にエクスポートがあります。その中にエクスポートボタンがあります。

エクスポートボタンを押すと、エクスポートがリクエストされます。そして、ダウンロード準備ができるとメールが届きます。

メールにあるZipファイルのリンクを押すとデータがZipファイルでダウンロードできます。

エクスポートデータについて

エクスポートされたデータの形式は次のようになっています。

  • attachments
    ノートやコメントに付けた画像や添付ファイルが入っています
  • notes
    ノートがフォルダ構成を維持した形でMarkdownファイルとして入っています

データのインポート

ではここからエクスポートしたデータをNotePMへ取り込む手順を紹介します。まず、プログラムをインストールします。必要なものは次の通りです。

  • Node.js
  • プログラムのインストール
  • アクセストークンの取得
  • 設定ファイルの作成

Node.jsのインストール

Node.jsはここからダウンロードできます。ダウンロード後、インストールを実行してください。

プログラムのインストール

プログラムはNode.jsをインストールした環境であれば、次のコマンドでインストールできます。

$ npm install notepm_importer -g

プログラムはMIT Licenseで公開しています。コードはNotePMMania/notepm_importer: 各種ドキュメント共有サービスからNotePMへ移行するスクリプトですにて公開しています。

アクセストークンの取得

NotePMのアクセストークンは個人設定のAPIアクセストークンから取得できます。

そしてアクセストークンを新規作成してください。スコープとして、読み込みと書き込みの両方にチェックを付けてください。

生成されたアクセストークンは、再確認する方法はありません。必ずコピーしたり控えておいてください。

設定ファイルの作成

Kibelaのエクスポートデータにはユーザ名などの情報がありません。ユーザID(英数字)のみしかありません。そこで、KibelaのユーザIDとNotePMの紐付けを行います。ベースになる設定ファイルは次のように出力できます。

$ notepm users -a ACCESS_TOKEN -t TEAM_DOMAIN
  • ACCESS_TOKEN
    先ほど作成したNotePMのアクセストークンです
  • TEAM_DOMAIN
    NotePMのチームドメインです(例:notepm)

実行すると、次のようにYAMLファイルの内容が出力されます。

users:
-
id:
name:
user_code: "0000000001"
-
id:
name:
user_code: "0000000002"

この内容をたとえば users.yaml として保存します。その後 id の後にKibelaのユーザIDを記入してください。たとえば次のような内容にします。頭に@が必要です。

users:
-
id: "@taro"
name:
user_code: "0000000001"
-
id: "@hanako"
name:
user_code: "0000000002"

これで準備完了です。

インポートを実行する

ではインポートを実行します。コマンドは次のようになります。

$ notepm kibela \
-p PATH_TO_EXPORT_DIR \
-a ACCESS_TOKEN \
-t TEAM_DOMAIN \
-u PATH_TO_SETTING_YAML

内容は次の通りです。

  • PATH_TO_EXPORT_DIR
    KibelaからエクスポートしたZipファイルを解凍(展開)したディレクトリのパスです
  • ACCESS_TOKEN
    先ほど作成したNotePMのアクセストークンです
  • TEAM_DOMAIN
    NotePMのチームドメインです(例:notepm)
  • PATH_TO_SETTING_YAML
    先ほど作成した設定ファイル(YAML)のパスです

ノートについて

KibelaのグループがNotePMのノートとして作成されます。複数グループに所属している記事は複数のノートにインポートされます。

フォルダについて

ルートディレクトリ直下にあるフォルダはノートとして保存されます。サブフォルダは各ノートの中に保存されます。ノートのデフォルト値は下記になります。

項目
ノートの説明 固定「Kibelaからインポートしたノートです」
スコープ 固定「プライベート」
グループ 設定しません
アイコン 設定しません

すべてのノートはプライベートで取り込みます。調整後、公開してください。

記事について

Markdownはメタデータが追加されたものになります。各記事は次のように保存されます。

Kibelaの項目 NotePMへの適用
author ページの作成者として利用します
folder フォルダを作成します
groups ノートの名前として利用します
published_at ページの作成日時として利用します
id 利用しません
path 利用しません
contributors 利用しません
coediting 利用しません
updated_at 利用しません
archived_at 利用しません
comments コメントとして利用します(後述)

コメントはさらに次のように展開されます。

Kibelaの項目 NotePMへの適用
id 利用しません
path 利用しません
author 利用しません
published_at 利用しません
updated_at 利用しません
content コメント本文として利用します

Markdownコンテンツはページ本文として利用します。また、最初の一行目はページタイトルとして利用します。

注意点

データのインポート時の注意点は次の通りです。

  • ユーザ情報がない(または特定できない)ページは NotePM-bot として処理されます。
  • コメント投稿者情報は移行しません。
  • 添付ファイルも画像リンクとして処理されます。取り込み直後はリンク切れに見えますが ![]()[]() の形式に変更してください。
  • ページ内リンクは移行しません
  • グループの参加者情報は移行しません

コード

URL:他サービスからNotePMへ移行するスクリプト