Qiita Team(キータチーム) からNotePMへデータ移行する

Qiita Team NotePM

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

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

 

Qiita Teamからのデータエクスポート

Qiita Teamの設定にチーム設定があります。

このチーム設定の下の方にデータのエクスポートがあります。

このエクスポートを実行すると、エクスポートの準備が開始します。しばらくすると、準備ができた旨メールが送られてきます。

チームデータはZipファイルでダウンロードされます。解凍(展開)すると、次のような内容となっています。

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

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

  • articles
    記事データです。記事1件ずつ、1つのJSONファイルになっています。
  • groups
    グループデータです。1つのグループずつ、1つのJSONファイルになっています。
  • projects
    プロジェクトデータです。1つのグループずつ、1つのJSONファイルになっています。

エクスポートデータに画像や添付ファイルのデータは含まれませんので注意してください。

データのインポート

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

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

Node.jsのインストール

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

Google Chromeのインストール

Google ChromeはQiita Teamから画像をダウンロードするのに利用しています。あらかじめインストールしておいてください。Edgeなどでも動くかと思いますが、動作確認はしていません。

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

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

npm install notepm_importer -g

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

アクセストークンの取得

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

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

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

設定ファイルの作成

Qiita Teamのエクスポートデータにはユーザ名などの情報がありません。ユーザID(英数字)のみしかありません。そこで、Qiita Teamのユーザ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 の後にQiita TeamのユーザIDを記入してください。たとえば次のような内容にします。

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

これで準備完了です。

インポートを実行する

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

notepm-qiita \
-d QIITA_DOMAIN \
-p PATH_TO_EXPORT_DIR \
-a ACCESS_TOKEN \
-t TEAM_DOMAIN \
-u PATH_TO_SETTING_YAML

内容は次の通りです。

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

Webブラウザが開く

実行するとWebブラウザが開きます。Qiita Teamのログイン画面が開くので、認証を行ってください。ID、パスワードを盗み見るようなことはありません。

認証が完了すると、画像をまとめてダウンロードします。この画像はQiita Teamからエクスポートしたデータを解凍(展開)したディレクトリの中に attachments というフォルダを作成して、その中に保存します。URLをハッシュ化して保存します。

画像をダウンロードし終わるとWebブラウザは自動的に終了します。

プロジェクトデータについて

Qiita Teamのプロジェクトデータはプロジェクトというノート作成し、その中に保存されます。各プロジェクトはページとして、次のように保存されます。

Qiita Teamの項目 NotePMへの適用
name ページタイトルに利用します
body ページ本文に利用します
user IDが一致するユーザが見つかった場合は、そのユーザを作成者にします。いない場合は NotePM-bot になります。
created_at ページ作成日時に利用します
rendered_body 利用しません
archived 利用しません
id 利用しません
reactions_count 利用しません
updated_at 利用しません

グループデータについて

Qiita Teamのグループデータはノートとして保存します。

Qiita Teamの項目 NotePMへの適用
name ノートタイトルに利用します
users ユーザが配列になっています。各ユーザについて、IDが一致するユーザが見つかった場合は、そのユーザのノート参加者にします。
url_name 利用しません

その他、デフォルト値は下記になります。

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

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

記事データについて

Qiita Teamの記事データはページとして保存します。グループがない場合は「Qiita::Teamからのインポート用」というノートを作成し、その中に保存します。

Qiita Teamの項目 NotePMへの適用
title ページタイトルに利用します
body ページ本文に利用します
tags name で指定されているタグ名を作成します
user IDが一致するユーザが見つかった場合は、そのユーザを作成者にします。いない場合は NotePM-bot になります。
group 指定されている場合は、先に作成したノートに紐付けます。ない場合は「Qiita::Teamからのインポート用」というノートに紐付けます。
created_at ページ作成日時に利用します
rendered_body 利用しません
coediting 利用しません
comments_count 利用しません
id 利用しません
likes_count 利用しません
private 利用しません
reactions_count 利用しません
updated_at 利用しません
url 利用しません
page_views_count 利用しません
comments 後述します

さらにコメントはページへ紐付けて保存します。

Qiita Teamの項目 NotePMへの適用
body コメント本文に利用します
created_at コメントの作成日時として利用します
id IDが一致するユーザが見つかった場合は、そのユーザをコメント作成者にします。いない場合は NotePM-bot になります。
rendered_body 利用しません
updated_at 利用しません

注意点

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

  • ユーザが存在しない場合はNotePM-botになります
  • 添付ファイルは移行しません
  • ページ内リンクは移行しません
  • メンションは移行しません

コード

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

 

おすすめの情報共有ツール

  • NotePM :テレワーク時代のクラウド型ナレッジ共有ツール