Contents
はじめに
Pocket を長らく情報収集ツールとして活用している方は、別サービスへ移行したい場面が出てくることがあります。この記事では、Pocket からデータを安全にエクスポートし、Instapaper にインポートするまでの具体的手順とポイント を体系的に解説します。作業時間を最小限に抑え、移行後もスムーズに読書環境を継続できるようサポートします。
Pocket のデータエクスポート方法
Pocket に保存した記事・タグ・メモは、公式機能で CSV または JSON 形式のファイルとしてダウンロードできます。ここでは、エクスポート画面へのアクセス手順と、取得できる項目を簡潔にまとめます。
CSV エクスポートの流れ
CSV は表計算ソフトでそのまま閲覧・編集できるため、手作業でデータを確認したい方に最適です。
- Pocket にログインし、右上メニューから 「設定」 を選択します。
- 設定ページ下部の 「エクスポート」 セクションまでスクロールし、「データを CSV 形式でダウンロード」 ボタンをクリックします。
- ダウンロードが完了したら
pocket_export.csvを安全な場所に保存してください。
取得項目:URL、タイトル、タグ(カンマ区切り)、保存日時、メモの 5 列が UTF‑8 エンコードで出力されます。
JSON エクスポートの流れ
JSON は階層構造を保持できるため、スクリプトによる自動処理やカスタムマッピングに向いています。
- 同様に 「設定」→「エクスポート」 へ移動します。
- 「データを JSON 形式でダウンロード」 ボタンをクリックし、
pocket_export.jsonを取得します。
主なフィールド:
item_id、given_url、resolved_title、tags、time_added、excerptが含まれます。タグはオブジェクト形式(例:"tags": {"tech": {}, "news": {}})で格納されます。
エクスポートデータを Instapaper 用 CSV に整形する
Instapaper のインポートは 「URL, タグ」 だけのシンプルな CSV が推奨されています。以下では、CSV と JSON の両方から必要情報を抽出し、インポート用ファイルを作成する手順を解説します。
CSV → Instapaper 用 CSV の変換(Excel/Google スプレッドシート編)
まずは Pocket から取得した pocket_export.csv を開きます。
- URL 列 と タグ列 がそれぞれ A 列、B 列にあることを確認します。(ヘッダー行がある場合は 2 行目以降が対象)
-
新規列 C に「Instapaper 用」ラベルを付け、次の式で URL とタグを結合します。
-
Excel:
=A2 & "," & B2 -
Google スプレッドシート:
=CONCATENATE(A2, ",", B2) -
式を列全体にコピーし、完成した C 列の内容を 「名前を付けて保存」 → 「CSV UTF-8(コンマ区切り)」 でエクスポートします。ファイル名は
instapaper_import.csvとしておきます。
ポイント:タグが複数ある場合はカンマで結合された文字列になるので、Instapaper 側でもそのまま認識されます。
JSON → Instapaper 用 CSV の変換(Python スクリプト編)
JSON データから直接 CSV を生成したい場合は、以下のシンプルなスクリプトを活用してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json, csv with open('pocket_export.json', encoding='utf-8') as f: data = json.load(f) with open('instapaper_import.csv', 'w', newline='', encoding='utf-8') as out: writer = csv.writer(out) # ヘッダーは不要ですが、必要なら次行をコメントアウト # writer.writerow(['url', 'tags']) for item in data.get('list', {}).values(): url = item.get('given_url') tags_obj = item.get('tags') or {} tags = ','.join(tags_obj.keys()) writer.writerow([url, tags]) |
実行手順:
1. 上記コードをexport_to_instapaper.pyとして保存。
2. ターミナルでpython export_to_instapaper.pyを実行すると、同ディレクトリにinstapaper_import.csvが生成されます。
データクレンジングと重複除去のベストプラクティス
インポートエラーの多くは「URL の重複」や「文字化け」に起因します。以下のチェックリストで事前に問題を排除しましょう。
| チェック項目 | 方法・ツール |
|---|---|
| UTF‑8 エンコード | Excel なら「CSV UTF-8(コンマ区切り)」、Google スプレッドシートは自動的に UTF‑8 保存 |
| URL の重複除去 | =UNIQUE(A:A)(Excel)または「条件付き書式」でハイライトし手動削除 |
| 空白・不正 URL の除外 | =IF(LEFT(A2,4)<>"http","",A2) で先頭が http/https 以外の行を空欄に |
| タグ文字列の整形 | タグ列の余分なスペースは TRIM() 関数で除去 |
注意点:Instapaper の無料プランでは月間インポート上限が 500 件です。大量データの場合はファイルを分割し、複数回に分けてアップロードしてください。
Instapaper へのインポート手順
Web UI を使った一括インポート
最も手軽な方法は公式の Web インターフェースです。以下の流れで完了します。
- Instapaper にログインし、右上メニューから 「設定」 → 「データのインポート」 を選択。
- 「CSV ファイルをアップロード」 ボタンをクリックし、先ほど作成した
instapaper_import.csvを指定。 - 画面指示に従い インポート開始 を実行。完了するとインポート結果の一覧が表示されます。
API とスクリプトで自動化する方法(Node.js 例)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
const fs = require('fs'); const csv = require('csv-parser'); const fetch = require('node-fetch'); const USERNAME = process.env.INSTAPAPER_USER; // 環境変数から取得 const PASSWORD = process.env.INSTAPAPER_PASS; // 環境変数から取得 fs.createReadStream('instapaper_import.csv') .pipe(csv(['url', 'tags'])) .on('data', async (row) => { const params = new URLSearchParams({ username: USERNAME, password: PASSWORD, url: row.url }); if (row.tags) params.append('tags', row.tags); try { const res = await fetch('https://www.instapaper.com/api/1.1/add', { method: 'POST', body: params }); if (!res.ok) console.error(`Failed ${row.url}:`, await res.text()); } catch (e) { console.error('Network error:', e); } }) .on('end', () => console.log('インポート処理が完了しました')); |
実装のポイント
- 認証情報は必ず環境変数で管理し、コードにハードコーディングしない。
- エラーレスポンスをログに残すことで、失敗行だけを再試行できる。
- 大量データの場合は一定間隔で
await new Promise(r => setTimeout(r, 200));のようにスロットリングすると API 制限に引っかかりにくい。
移行後の Instapaper 設定と活用ヒント
インポートが完了したら、Instapaper の機能をフル活用して情報検索性や閲覧体験を向上させましょう。
タグ・フォルダの整理術
- タグ統一:インポート時にカンマ区切りで付与されたタグは、Instapaper の管理画面から同一表記に揃えると検索がしやすくなります(例:
tech→Tech)。 - フォルダ分け:仕事・学習・趣味などテーマ別にフォルダを作成し、ドラッグ&ドロップで記事を振り分けます。
ハイライトとメモの活用
- 記事閲覧中にテキストを選択して Ctrl+H(Mac: ⌘+H) でハイライトすると、クラウド上に保存され検索対象になります。
- メモは記事詳細画面から追加でき、後からタグと合わせて整理可能です。
オフライン閲覧の設定
- Instapaper アプリの 「設定」 → 「自動ダウンロード」 を有効化すると、Wi‑Fi 接続時に新規保存記事が自動で端末にダウンロードされます。
- ブラウザ拡張機能(Chrome/Edge)をインストールすれば、閲覧中のページをワンクリックで Instapaper に送信できます。
要点:タグ・フォルダ整理とハイライト活用で情報検索性が向上し、オフライン保存や拡張機能により「いつでもどこでも」読書環境を維持できます。
よくある失敗ケースと対策チェックリスト
| 失敗シナリオ | 原因 | 推奨対策 |
|---|---|---|
| 文字化け | CSV が UTF‑8 以外で保存される | エクスポート後は必ず「CSV UTF-8(コンマ区切り)」で再保存 |
| タグが抜け落ち | JSON の tags オブジェクトを文字列化せずに出力 |
スクリプト内で Object.keys(item.tags).join(',') を使用 |
| インポート上限エラー | 無料プランの月間 500 件制限超過 | データを 200〜250 件単位に分割し、数日間にわたってアップロード |
| 重複 URL が残る | 重複除去処理を実施しない | UNIQUE 関数やスプレッドシートの「条件付き書式」で事前に削除 |
移行完了までのチェックリスト
- Pocket から CSV/JSON を取得(保存場所のバックアップも忘れず)
- 必要項目だけを抽出し、Instapaper 用 CSV に整形
- UTF‑8 エンコード・重複除去・無効 URL の修正を実施
- Web UI または API で Instapaper にインポートし、エラーログを保存
- インポート後にフォルダ/タグを整理し、ハイライトやメモを設定
- ブラウザ拡張・オフライン保存機能を有効化して日常の保存フローを完了
これらのステップを順に実行すれば、Pocket から Instapaper への移行作業はスムーズかつ安全に完了します。
おわりに
情報収集ツールの乗り換えはデータ損失リスクが伴うため、計画的なエクスポートとクレンジングが重要です。本記事で紹介した手順とポイントを参考にすれば、作業時間を短縮しつつ確実に移行できるはずです。質問や不明点があれば、コメント欄でお気軽にご相談ください。