皆さんは利用されているAIとのやり取りについて、バックアップは取っているだろうか?
私は、Claudeデスクトップアプリを使っていて、バックアップは標準のエクスポート機能を使っている。しかし先日、意外な問題に遭遇した。
「設定→プライバシー→データのエクスポート」から実行できるこの機能は、Claudeとのやり取りをMarkdown形式で保存してくれる。はずだった。
「はずだった」と言うのは、先日エクスポートしたファイルをCursorで開いてみたところ、**日本語が正しく復号できない**ことが分かったからだ。
問題の詳細:Unicode エスケープシーケンス
Claudeでエクスポートしたファイルは「Unicodeエスケープシーケンス」というJSON の表現で保存されている。これを日本語で読める状態にするためには、エディタやツールで復号する必要がある。
下記のようなスクリプトで復号してみたのだが、「JSONファイルが破損している可能性がある」というエラーになってしまった。
javascript // Cursor用 Unicode変換スクリプト // conversation.jsonを日本語に変換する const fs = require('fs'); const path = require('path'); /** * Unicodeエスケープシーケンスを日本語に変換 * @param {string} text - 変換対象のテキスト * @returns {string} - 変換後のテキスト */ function decodeUnicodeEscapes(text) { return text.replace(/\\u([0-9a-fA-F]{4})/g, (match, code) => { return String.fromCharCode(parseInt(code, 16)); }); } /** * JSONファイルを読み込んで変換 * @param {string} inputFile - 入力ファイルパス * @param {string} outputFile - 出力ファイルパス */ function convertJsonFile(inputFile, outputFile) { try { console.log(`📖 ファイル読み込み中: ${inputFile}`); // ファイルを文字列として読み込み const rawData = fs.readFileSync(inputFile, 'utf8'); console.log(`📝 ファイルサイズ: ${(rawData.length / 1024 / 1024).toFixed(2)} MB`); // Unicodeエスケープを変換 console.log('🔄 Unicode変換中...'); const decodedData = decodeUnicodeEscapes(rawData); // JSONとして解析して整形 console.log('🔧 JSON整形中...'); const jsonData = JSON.parse(decodedData); const formattedJson = JSON.stringify(jsonData, null, 2); // ファイルに保存 fs.writeFileSync(outputFile, formattedJson, 'utf8'); console.log(`✅ 変換完了: ${outputFile}`); console.log(`📊 出力ファイルサイズ: ${(formattedJson.length / 1024 / 1024).toFixed(2)} MB`); // サンプル表示 const sample = formattedJson.substring(0, 500); console.log('\n📋 変換結果のサンプル:'); console.log(sample + '...'); } catch (error) { console.error('❌ エラー:', error.message); if (error.message.includes('JSON')) { console.log('💡 ヒント: JSONファイルが破損している可能性があります'); } if (error.message.includes('ENOENT')) { console.log('💡 ヒント: ファイルパスを確認してください'); } } } // 以下、バッチ処理やメイン処理のコード...
Claudeに相談してみた結果
ClaudeのことはClaudeに訊くのが早いと思って訊いてみると、Claudeのエクスポート機能自体に問題があるようです。日本語の文字が不正にエスケープされて、JSONとして無効な形式になっています。 これはClaudeのエクスポート機能のバグと思われます。
マジか……。サポートに問い合わせようかと思ったが、仮に復号に成功したとしてもファイルサイズも大きく、なかなか再利用は難しいように思った。
代替案への方針転換
そこで、方針を変えて、Claudeとの会話セッションが終わるたびに、そのやり取りをObsidian保管庫にログとして全てコピーしてもらうことにした。
下記のプロンプトをClaudeの設定の「プロファイル」にある「クロードの応対において、どのような個人設定を考慮すべきですか?」という欄に追記した。
「セッションを終わります。」と書いたら、テンプレートフォルダの「Claude対話ログテンプレート.md」を使用して、今回の相談内容を記録してください。以下の点を特に詳しく: - 今回のテーマ:「XXXについて」 - 作成したツール:XXX - 重要な決定:XXX - 次回への課題:XXX 創作活動における技術支援セッションとして記録お願いします。
これによって、セッションのたびに「セッションを終わります」とさえ書けば、一応会話のログは残ることになる。
Chrome拡張機能という選択肢もあるが…
実は、「Claude Conversation Exporter」などのChrome拡張機能を使えば、公式エクスポートの文字化け問題を回避できることも分かった。しかし、**私はClaudeデスクトップアプリを使用しているため、Chrome拡張機能は使用できない**。
Chrome拡張機能は、Claude.aiのウェブ版でのみ動作し、デスクトップアプリでは互換性がない。重要な会話をエクスポートしたい時だけウェブ版に切り替えることも考えられるが、普段の作業の流れを考えると現実的ではない。
結論:現実的なアプローチ
このような事情を踏まえると、セッション終了時にObsidianへログを保存する方式が、Claudeアプリユーザーにとって最も現実的な解決策だと思う。
この方法なら:
– 文字化けの心配がない
– あとでClaude で分析したり活用しやすい
– 普段の作業フローを変える必要がない
– セッション単位での管理ができる
AnthropicのエコシステムではUnicode処理に関する問題が複数報告されており、今回体験した問題も同様の系統の課題のようだ。将来的にはDXT拡張機能(Claudeデスクトップ拡張)でObsidianとの直接連携が可能になるかもしれないが、現時点ではセッションログ方式が最も実用的だろう。
参考:Claude対話ログテンプレート
尚、「Claude対話ログテンプレート.md」は下記の通りである。
markdown # Claude対話ログ - {{date:YYYY-MM-DD_HH-mm}}_{{title}} ## 📋 セッション情報 - **開始日時**: {{date:YYYY年MM月DD日 HH:mm}} - **終了日時**: {{date:YYYY年MM月DD日 HH:mm}} - **セッション時間**: 約XX分 - **主要テーマ**: - **相談カテゴリ**: #創作 #編集 #技術支援 #問題解決 #その他 - **参加者**: 物書き(名前)、Claude(編集アシスタント) ## 🎯 セッション概要 ### 相談内容の要約 ### 重要度・緊急度 - [ ] 高優先度(すぐに対応必要) - [ ] 中優先度(今週中に対応) - [ ] 低優先度(時間があるときに) - [ ] 参考情報(記録として保存) ## 🔍 主要な議題・トピック 1. 2. 3. ## 💡 提供した解決策・アドバイス ### 即座に実行可能な解決策 - [ ] 解決策1 - [ ] 解決策2 - [ ] 解決策3 ### 長期的な改善案 - [ ] 改善案1 - [ ] 改善案2 ### 推奨リソース・参考資料 - - - ## 🛠 作成したツール・スクリプト・アーティファクト ### 今回作成したもの - [ ] **ツール名**: `ファイル名` - 機能説明 - [ ] **ツール名**: `ファイル名` - 機能説明 ### 使用方法・設置場所 ### 関連ファイル - [[リンク先ノート名]] - `ファイルパス/ファイル名` ## ✅ 重要な決定事項・結論 ### 決定したこと 1. 2. 3. ### 却下したアイデア(理由付き) - ~~アイデア名~~ - 却下理由 ## 🚧 未解決の課題・制約事項 ### 技術的課題 - [ ] 課題1 - 原因と影響範囲 - [ ] 課題2 - 原因と影響範囲 ### 調査が必要な事項 - [ ] 調査項目1 - [ ] 調査項目2 ### 外部依存・制約 - - ## 📋 次回セッションへの引き継ぎ事項 ### アクションアイテム - [ ] **期限**: YYYY/MM/DD - タスク詳細 - 担当:物書き/Claude - [ ] **期限**: YYYY/MM/DD - タスク詳細 - 担当:物書き/Claude ### 次回の検討事項 1. 2. 3. ### フォローアップが必要な項目 - [ ] 項目1 - 確認タイミング - [ ] 項目2 - 確認タイミング ## 🏷 タグ・分類 ### プロジェクトタグ #プロジェクト名 #小説 #エッセイ #ブログ ### 技術タグ #Obsidian #Cursor #JavaScript #Python #WordPress #note投稿 ### 内容タグ #創作技法 #編集技術 #文章推敲 #アイデア発想 #問題解決 ### 緊急度タグ #緊急 #重要 #通常 #参考 ## 🔗 関連ノート・参考資料 ### Obsidianボルト内の関連ノート - [[関連ノート1]] - [[関連ノート2]] - [[関連ノート3]] ### 外部リンク・参考サイト - [リンクタイトル](URL) - [リンクタイトル](URL) ### 過去の関連セッション - [[YYYY-MM-DD_関連セッション名]] - [[YYYY-MM-DD_関連セッション名]] ## 📈 創作活動への影響・学習ポイント ### 創作スキル向上への寄与 - 学習したこと: - 応用できること: - 今後の創作に活かせるポイント: ### 執筆効率化への貢献 - 時間短縮効果: - 品質向上効果: - ワークフロー改善: ## 💭 振り返り・感想 ### セッションの満足度 - [ ] 非常に満足(期待以上の成果) - [ ] 満足(期待通りの成果) - [ ] 普通(一定の成果あり) - [ ] やや不満(期待を下回る) - [ ] 不満(期待を大きく下回る) ### 改善点・次回への要望 - - - --- ## 📝 完全な会話ログ ### ユーザー(開始) ### Claude ### ユーザー ### Claude --- ## 📊 メタデータ - **作成日**: {{date:YYYY-MM-DD HH:mm:ss}} - **最終更新**: {{date:YYYY-MM-DD HH:mm:ss}} - **文字数**: 約XXX文字 - **対話回数**: XX回 - **セッション通し番号**: #XXX - **関連プロジェクト**: - **保存場所**: Claude対話ログ/{{date:YYYY}}/{{date:MM}}月/ --- *次回セッション参考:このログから得られた知見や未完了タスクを確認してからセッション開始*
この方が、あとあとClaudeで分析したり活用する上では便利なのではないかと思う。