ブログを開設してから年月が経ち、気がつけば書き溜めてきた記事の総数は2,000本を突破。暇人か(笑)
これまでは「書いて公開する」ことで満足していた日々の気づきや臨床現場での試行錯誤ですが、これだけの量になると、「あの時書いたあの内容、どこだっけ?」と過去ログを探すのにも一苦労するようになっていました。既に記憶の彼方。
そんな折、X(旧Twitter)で親しくさせていただいている臨床工学技士(CE)仲間の方から「Obsidian」を教えていただいたのが、すべての始まりでした。
「せっかくなら、眠っている過去の全記事約2,000本を一気にObsidianへ流し込んで、自分専用の巨大なナレッジベース(第2の脳)を作ってみよう!」と思い立ち、Bloggerからのデータ移行に挑むことにしました。
しかし、いざ始めてみるとエラーの連続。何度も立ち止まりながら乗り越えた、リアルな奮闘の記録をAI要約でさくっとお届けします。
1. なぜ「Obsidian」だったのか?
CE仲間から勧められて調べてみると、ObsidianにはWeb上のブログサービスにはない魅力がたくさんありました。
- 完全ローカル管理: すべてがプレーンなMarkdown(.md)ファイル。ネット環境に依存せず、サービス終了のリスクもゼロで手元に一生残る。
- 強力な全文検索: 2,000本を超える過去記事から、医療機器の型番や症例のキーワードが一瞬でヒットする。
- グラフビュー(Graph View)の存在: ノートやタグ同士がクモの巣や星空のように線で結ばれ、自分の思考の広がりを視覚的に俯瞰できる。
「これは過去の蓄積を活かせるかも!?」とおもい、早速着手しました。
2. ぶつかった壁:Bloggerの巨大バックアップデータ(Atom形式)
Bloggerの管理画面からエクスポートしたバックアップデータは、feed.atom という約9MBのXMLファイルでした。
約9MBなんてフロッピーディスク6枚分。私の10年以上のブログ記事はフロッピー6枚分かぁ。ここから記事だけを綺麗に抜き出し、Obsidianで扱えるMarkdownファイルに小分け変換するため、Pythonスクリプトを組んで処理を進めることにしました。しかし、慣れないPowerShellの操作も重なり、ここからトラブルが連発します。
トラブル①:コード枠の見出し(Plaintext)まで貼り付けてしまう
PowerShell上でスクリプトを実行しようとした際、画面に表示されていたコード種別ラベル(Plaintext など)までコマンドと一緒に貼り付けてしまい、画面が「用語が認識されません」と真っ赤に。
「どこからどこまでが実際のコマンドなのか」を慎重に見極める大切さを知りました。pythonやらないから、理解するまでに時間が・・・。
トラブル②:スクリプト先頭に余計な「Python」の1行が混入
「よし、実行だ」と意気込んで python convert.py を打つと、今度は NameError: name 'Python' is not defined というエラー。
メモ帳にスクリプトを貼り付けた際、一番上の行に「Python」という文字が紛れ込んでいたのが原因でした。メモ帳で開き、不要な文字を消して保存し直します。pythonやらないから、理解するまでに時間が・・・。
トラブル③:出力フォルダが「0件」で空っぽ
エラーなくスクリプトが最後まで走ったものの、画面には無情にも「合計 0 件の記事を出力しました」の文字。
Googleのバックアップデータは仕様上、XMLタグの名前空間や構造が特殊で、標準的な判定ルールでは記事としてうまく引っかかってくれませんでした。私の約2000記事が、0件って何を言っている!!
トラブル④:記事ではなく「コメント」だけが抽出されてしまう
抽出条件を緩めてみたところ、今度は過去にいただいた読者の方からの「コメント」ばかりがMarkdown化されてしまい、肝心の記事本文が入ってこない事態に。コメントだけのObsidianで私の第2の脳は何を導く!?
3. 解決策:実際のXML構造を直に分析してスクリプトを最適化
そこで、feed.atom の一部テキストを直接抜き出して構造を徹底解剖しました。
- 本文記事には
<blogger:type>POST</blogger:type>が付いている - コメントには
<blogger:type>COMMENT</blogger:type>が付いている - 本文は
<content type='html'>にHTMLで格納されている - カテゴリは
<category term='医療:呼吸器関連'/>のように格納されている
この仕様に合わせ、Pythonスクリプト(BeautifulSoup + markdownify)を書き直しました。
- POST のエントリーのみを厳密に抽出(コメントは完全に除外)
- HTMLの改行や書式をきれいなMarkdown記法へ自動変換
- カテゴリ名を抽出し、Obsidian用のタグ(tags:)としてFrontmatterに自動埋め込み
- 日付(YYYY-MM-DD)+タイトルで安全なファイル名を生成
4. 実行結果:2,132件の記事が一瞬でMarkdown化!
修正したスクリプトを実行したところ、画面が進み――
見つかったエントリー総数: 3354
変換が完了しました! 合計 2132 件の記事(POST)を 'blogger_markdowns' に出力しました。
長年書き続けてきた全2,132本の記事が、日付・タイトル・タグ付きの個別Markdownファイルとして、一気にローカルフォルダへ生成されました!
出力されたフォルダをObsidianの保管庫(Vault)へそのままコピーし、取り込みは無事完了しました。
5. グラフビューを開いて息を呑んだ瞬間
取り込み後、Obsidianの「グラフビュー」を開き、設定の「タグ(Tags)」をONにしてみました。
それまで画面上で孤立してバラバラに散らばっていた無数の光の点(2,132本の記事たち)が、物理演算の力でフワッと動き出し、#医療:呼吸器関連 や日常の記録などのタグを中心に、美しい星雲(クラスタ)を形作ったのです。
「自分はこれまでの歳月、これだけの情熱を注ぎ、このテーマについて言葉を紡いできたんだ」という思考の軌跡が、目の前に立体的な形で立ち現れた瞬間でした。
まとめ:過去の記録が「生きた知のネットワーク」に変わる
デジタル上の過去ログは、放っておくとそのまま埋もれてしまいがちです。
しかし、こうしてオープンなMarkdown形式に変換し、Obsidianのようなリンク型ノートツールに流し込むことで、過去の臨床メモや考察が、これから書くコラムや学会発表のアイデアと有機的に結びつく「生きた資産」に生まれ変わりました。
素晴らしいツールを教えてくださったXのCE仲間に心から感謝です。
エラーに頭を抱えた時間も含めて、非常に実りある移行作業となりました。
今後は、業務マニュアルや過去の発表スライド、日々の気づきなどもこの中に集約し、自分だけの「第2の脳」を大切に育てていこうと思います。どんな風に育つのか(笑)
このグラフビューだけを見ると、読者にはなんだか分からないと思いますが。記事1つ1つがこの点であることから、筆者の私は感慨深いです。
