X(旧Twitter)のブックマークを、会話の流れごとPDFで保存するChrome拡張機能
ブクマ保管庫は、利用者ご自身がX(旧Twitter)で保存したブックマークを、表示に近い体裁のPDFファイルとしてご自身のコンピュータに保存し、保存に成功したものをブックマークから解除するChrome拡張機能です。
PDFの作成は、すべて利用者のブラウザ内で行います。当方は、利用者のブックマークの内容、生成されたPDF、Xのログイン情報を受信することも保存することもありません。無料の回数と契約の状態を確かめるために当方のサーバーへ送る情報は、プライバシーポリシーに記載しています。
| 項目 | 実際の挙動 |
|---|---|
| 1回あたりの処理件数 | 最大50件です。50件を超える場合は、もう一度実行すると続きから処理します |
| 保存先フォルダの指定 | パネルの「フォルダを選ぶ」で、Chromeのダウンロード先フォルダの中から選べます。その外の場所に保存したい場合は、Chromeの「設定 > ダウンロード > 保存先」自体を変更してください(Chromeの仕様による制約です) |
| 動画付きポスト | PDFに動画は含まれません。サムネイル画像と再生マークが記録されます |
| 複数スライドのカード | すべてのスライドを2列に並べて記録します |
| 処理中のスリープ | コンピュータがスリープすると処理は中断します。復帰後、もう一度実行すると続きから処理します |
| 動作環境 | デスクトップ版のGoogle ChromeまたはMicrosoft Edge。Xにログイン済みであること。スマートフォンでは動作しません |
| 項目 | 内容 |
|---|---|
| お試し | 無料で3回(1回=1度の実行。1回あたり最大50件)。ご自身のXで動くかを確かめるための回数です |
| 有料プラン | 月額¥500 または 年額¥5,500。1つの契約で、Xのアカウント2つまで使えます |
| 解約 | パネルの「設定」からいつでも解約できます。次回の請求日までは使えます。日割りでの返金はありません |
| お支払い | Stripe社の決済画面で行います。カード番号は当方に届きません |
また、ご利用にあたりChromeの設定「ダウンロード前に各ファイルの保存場所を確認する」をオフにしていただく必要があります。オンのままではPDF1件ごとに保存ダイアログが表示されます。この設定は本ツールからは変更できないため、初回の案内画面で手順をご説明します。
本ツールが扱うデータと、その取扱いについて説明します。Chromeウェブストアのポリシーは、データが利用者の端末内でのみ処理され外部に送信されない場合であっても、その取扱いを開示することを求めています。本ポリシーはこれに従い、端末内で完結する処理についても記載しています。
| データ | 取得の目的 | 保存場所 | 当方への送信 |
|---|---|---|---|
| Xのブックマークの内容(本文・画像・投稿者名・プロフィール画像・引用・リンクカード・リプライ) | PDFを生成するため | 利用者の端末のみ(PDFとして保存先フォルダに保存) | なし |
| 生成したPDF | 利用者が保管するため | 利用者の端末のみ | なし |
| Xのログインセッション | 利用者ご本人のブックマークを取得するため。ブラウザが保持するセッションをそのまま利用します | 利用者のブラウザ(本ツールは複製・保存しません) | なし |
| 設定と記録(保存先フォルダ・表示言語・処理済みポストのID・実行ログ・回数と契約状態の控え) | 次回も同じ設定で使えるようにし、同じポストを二重に処理せず、台帳サーバーに一時的に繋がらないときも動き続けるため | 利用者の端末のみ(chrome.storage.local) |
なし |
| 診断情報(動作環境・設定・直近の実行ログ) | 不具合の原因究明のため。「問題を報告する」を押したときにのみ、テキストファイルとして書き出します | 利用者の端末のみ | なし |
無料の回数(3回)と契約の状態を確認するため、次の情報を当方の台帳サーバー(api.hokanko.app)に送ります。
台帳サーバーは、受け取ったアカウントIDを元に戻せない形(一方向のハッシュ値)に変えて記録します。IDの数字そのもの、名前、ハンドル、メールアドレスは保存しません。
台帳に記録するのは次のものだけです。
| 記録するもの | なぜ必要か |
|---|---|
| アカウントIDから作ったハッシュ値 | 利用者を区別するため(元のIDには戻せません) |
| 使った回数と、直近の実行の識別番号 | 無料の3回を数えるため |
| 契約の状態(有効・解約予約・解約)と次回の請求日 | 有料プランで使えるかを判定し、設定画面に次回の請求日を表示するため |
| Stripeが発行する契約の識別番号 | Stripeからの解約などの通知を、どの契約のものか照合するため |
| サービス | 役割と、扱う情報 |
|---|---|
| Stripe(決済) | お支払いの際、カード情報とメールアドレスはStripeが直接受け取ります。当方にカード番号は届きません。当方がStripeから受け取るのは、契約の状態と次回の請求日です |
| Cloudflare(台帳サーバーとこのサイトの置き場所、お問い合わせメールの転送) | 通信の過程で、Cloudflareが接続元のIPアドレス等を扱うことがあります。お問い合わせのメールは、Cloudflareを経由して当方の受信箱に転送されます |
| メールサービス(お問い合わせ) | メールでお問い合わせいただいた場合、その内容がメールサービス上に保存されます |
端末内のデータ(設定と記録)は、拡張機能をアンインストールすると削除されます。生成されたPDFは利用者の管理下にあり、当方は関与しません。
台帳の記録の削除を希望される場合は、お問い合わせ先までご連絡ください。削除すると、無料の回数と契約の紐づけも消えます。有料の契約がある場合は、先に解約してください。
本ツールのデータの取扱いに変更が生じる場合、当方は変更の内容を本ページに掲示するとともに、拡張機能内で利用者に通知します。
本ツールはインストール時に次の権限を要求します。Chromeが表示する警告文とあわせて、なぜ必要か、そして何をしないかを説明します。
| 権限 | Chromeが表示する警告 |
|---|---|
debugger | ページのデバッガ バックエンドへのアクセス すべてのウェブサイト上のすべてのデータの読み取りと変更 |
tabs | 閲覧履歴の読み取り |
downloads | ダウンロードの管理 |
downloads.ui | (downloads の警告に含まれます) |
storage | (警告なし) |
| ホスト権限 3件 | debugger の警告に含まれるため、追加の警告は表示されません |
debugger(デバッガ)なぜ必要か:ポストを画面表示に近い体裁でPDF化するために使用します。Chrome拡張機能のAPIでこれを実現できるのは chrome.debugger 経由の Page.printToPDF のみです。より弱い権限で実現する方法を3つ検討し、いずれも要件を満たせないことを確認して却下しました。
window.print() の使用 — 保存1件ごとにOSの保存ダイアログが開きます。1回あたり最大50件を連続処理するため、50回の手作業が発生し、一括処理が成立しません行わないこと:x.com のページや、利用者が開いているほかのタブにデバッガを取り付けること(取り付けるのは本ツール自身の描画用タブだけで、実行が終わると外します)、閲覧履歴を収集すること、取得した内容を外部に送信すること。
利用者に見える影響:PDF生成中、ブラウザ上部に「デバッグされています」という帯が表示されます。これはChromeがこの権限の使用を利用者に知らせるための仕組みであり、処理が終わると消えます。
tabs(タブ)なぜ必要か:PDFを作るための本ツール自身の描画用タブ(拡張機能のページ)を裏で開き、終わったら閉じるために必要です。あわせて、取り残された描画用タブの片付け、実行を始めたXのタブがまだ開いているかの確認、初回の案内からブラウザのダウンロード設定を開くためにも使います。
行わないこと:この権限の警告は「閲覧履歴の読み取り」と表示されますが、本ツールは利用者の閲覧履歴を読み取りません。Chromeはこの権限を要求するすべての拡張機能に同じ警告を表示します。本ツールが扱うのは、自身が開いた描画用タブと、実行を始めたXのタブだけです。
downloads(ダウンロード)なぜ必要か:生成したPDFを利用者の端末に保存するために必要です。保存先はChromeの設定で指定されたダウンロードフォルダ配下に限られます。
downloads.ui が必要な理由:保存先フォルダを選ぶとき、場所を確かめるための小さなファイルを置いてすぐに消します。その一瞬だけ、ツールバーのダウンロード表示が出ないようにするために使い、終わるとすぐに元に戻します。
行わないこと:過去のダウンロード履歴を読み取ること、本ツールが生成したもの以外のファイルを操作すること。
storage(ストレージ)なぜ必要か:設定(保存先フォルダ・表示言語)と記録(処理済みポストのID・実行ログ・回数と契約状態の控え)を、利用者の端末内に保存するために必要です。これらの値そのものは端末外に出ません(台帳サーバーに送る情報は 2-2 のとおりです)。
| ドメイン | 用途 |
|---|---|
https://x.com/* | パネルを表示し、利用者ご本人のブックマーク一覧を読み取り、保存できたポストをブックマークから外すため |
https://pbs.twimg.com/* | ポストに添付された画像を取得し、PDFに埋め込むため |
https://abs.twimg.com/* | ブックマークの解除処理に必要な設定値を読み取るため |
本ツールが画面に介入するのはこの3つのドメインだけです。いずれもX社が運用するドメインです。このほかに、当方の台帳サーバー(api.hokanko.app)と通信しますが、これにはホスト権限を使っていません(サーバー側が拡張機能からの通信を許可しているため)。また、稼働状況の確認のため hokanko.app/status.json を読み込みます。
本ツールはX社の提供する仕様に依存しており、X社側の仕様変更により、予告なく一時的に機能が停止することがあります。当方はこれを想定した上で本ツールを提供しています。
機械可読な稼働状況:https://hokanko.app/status.json
不具合のご報告、ご質問、データの取扱いに関するお問い合わせは、次のメールアドレスへお願いします。
support@hokanko.app
不具合のご報告の際は、うまくいかなかったときにパネルに出る「問題を報告する(診断情報を書き出す)」で生成されるテキストを添えていただけると、原因の特定が早くなります。この診断情報は利用者がボタンを押したときにのみ生成され、内容はご自身で確認してから送っていただけます。