アルパカログ

📅  2021-01-04

はてなブログからNotion Blogへのデータ移行ツールを作りました


はてなブログからNotion Blogへ移行する際に、過去の記事をどうしても持ってきたかったので、はてなブログのエクスポートデータ(Movable Type形式)からNotion用のインポートデータ(HTML)を作成するツールを作りました。

このエントリでは hatena2notion を使ってはてなブログの過去記事をNotionに移行する方法を説明します。

1. Notion Blogのテーブルにカラムを追加する

まず最初にNotion Blogの記事テーブル(以下、記事データベースと呼ぶ)に必要なカラムを追加します。

Notion Blogを開設していればBlog Indexの直下に記事データベースがあるはずです。もしまだNotion Blogを開設していない方は下記の記事を参考にしてください。

記事データベースに Tags (Text) と Excerpt (Text) のカラムを追加します。

Tags はあとで Multi-select に変更しますが今は Text で良いです。Excerpt は抜粋で、はてなブログの「記事の概要」にあたります。

2. はてなブログから記事データをエクスポートする

次にはてなブログの記事データをエクスポートしていきます。

はてなブログのエクスポート対象には下書き状態の記事も含まれてしまうので、先に不要な下書きは削除して整理しておきましょう。

整理が終わったらエクスポート機能を使って記事データをダウンロードします。エクスポートメニューは設定→詳細設定にあります。

3. hatena2notion を使ってNotion用のインポートデータを作成する

hatena2notion を使ってダウンロードしたはてなブログのエクスポートデータを元に、Notion用のインポートデータを作成します。

ブログデータの移行で一番面倒なのが画像などのメディアファイルです。画像をはてなに置いたままで気にならないという人は良いのですが、どうせなら丸ごとNotionに移行した方がすっきりです。

hatena2notion は記事中の画像(img タグの src 属性 ) をダウンロードしてNotionにアップロードします。ただし Notion にはまだ公式APIがなく、hatena2notionは非公式APIを使っています。使用はくれぐれも自己責任でお願いします。

hatena2notion の使い方はREADMEを読んでください。日本語です。

4. 記事データのメタデータをNotionにインポートする

hatena2notion を使うと生成物の1つとして hatena2notion/csv/ 以下に meta.csv というCSVファイルが生成されます。このCSVファイルには記事ごとのタイトル、公開日時、URLパスといったメタ情報が載っています。

この meta.csv をNotionにインポートし、あとで記事データベースにマージしていきます。

  1. 「New page」から Database > Table を選択し、メタデータをインポートするための空のテーブルページを作成する
  2. Name 以外の列を削除する
  3. 行をすべて削除する
  4. ページ右上(テーブル右上ではなく)の…メニューから「Merge with CSV」を選び hatena2notion/csv/meta.csv をインポートする

これで記事データベースのフォーマットによく似たメタデータのテーブルができました。

5. 記事データをNotionにインポートする

メタデータに続き、次は記事データをNotionにインポートします。記事データは hatena2notion/html/ 以下にHTMLファイルとして生成されています。

  • メニュー下方の「Import」からHTMLを選び hatena2notion/html/ 以下のHTMLファイルをすべて選択してインポートする
    • 「Import Dec 16, 2020」のようなページの子ページとして一括でページが入る
  • Amazon商品へのリンクがあるページ(hatena2notion の抽出時に表示されたファイル)を確認する
  • 「Import Dec 16, 2020」左の▶︎からページ一覧を表示する
  • ページを「Import Dec 16, 2020」の下から記事データベースにドラッグ&ドロップしてデータベースにページを追加する
    • 複数選択できないので1ページずつ移動する(大変だけど頑張って!)
    • 移動するたびに記事データベースにページが追加されていく
  • ページタイトルのうち /: に置き換わっているので適宜修正する
    • データベースメニューの「Search」から検索すると楽
    • Macではファイル名に / が使えないため(見た目は / だが実体は :

これで記事データのインポートができました。最後にメタデータをマージしたら完了です。

6. メタデータを記事データベースにマージする

記事データベースは Page 列にタイトルが入っているだけで、他の列は空になっています。ここに先ほど作成したメタデータテーブルをマージして記事データベースを完成させます。

  • メタデータと記事データベースの行の順番を揃えるためデータベースメニュー > Sort > Add a sort からタイトル名でソートする
  • 列の順番も揃えメタデータから記事データベースに Slug, Date, Tags, Excerpt をコピーする
  • Tags 列を Text > Multi-select に変更する
    • タグっぽい表示に変わる
  • 修正したい Slug があれば直す
  • Date などでソートする場合はソースコードを修正する

おつかれさまでした。これでデータ移行は完了です。

hatena2notion は完全なツールではないので、公開前にご自身で記事のチェックや手直しはしておいた方が良いでしょう。

以上です。このエントリでは hatena2notion を使ってはてなブログの過去記事をNotionに移行する方法を説明しました。