KindleのハイライトとメモをOPMLでコピーするBookmarklet

2026-04-01
javascript

Kindleでハイライトやメモを残してもそれを自分の思考ツール(私の場合はWorkflowy)に組み込むのは面倒。余計な情報あるし、何度もコピペすんのもだるい。

ということで、1ボタンでちょうどよく整形してくれるブックマークレットを(Geminiが)作った。

▼ コード

javascript:(function(){const e=(e)=>e.replace(/[<>&"']/g,(e)=>{switch(e){case"<":return"<";case">":return">";case"&":return"&amp;";case'"':return""";case"'":return"&apos;";default:return e}});const t=document.querySelector("h3.kp-notebook-metadata"),n=t?t.innerText.trim():%22Untitled%22,r=t?t.nextElementSibling:null,o=r&&%22P%22===r.tagName?r.innerText.trim():%22%22,a=document.querySelector(%22a.kp-notebook-printable%22);let%20c=a?a.href:%22%22;c&&(c=c.replace(%22amazon.com%22,%22amazon.co.jp%22));let%20i=c?`%E3%80%8E[${n}](${c})%E3%80%8F`:`%E3%80%8E${n}%E3%80%8F`;o&&(i+=`%20${o}`);const%20l=document.querySelectorAll(%22#kp-notebook-annotations%20%3E%20div[id]%22);let%20d=%22%22;l.forEach((t)=%3E{const%20n=t.querySelector(%22#highlight%22)?.innerText||%22%22,r=t.querySelector(%22#note%22)?.innerText||%22%22,o=t.querySelector(%22#kp-annotation-location%22)?.value||%22%22;if(n){const%20a=%60Location:%20${o}%60;d+=%60%3Coutline%20text=%22${e(n)}%22%20_note=%22${e(a)}%22%3E%60,r&&r.trim()&&(d+=%60%3Coutline%20text=%22${e(%22Note:%20%22+r)}%22%20/%3E%60),d+=%22%3C/outline%3E%22}});const%20s=%60%3C?xml%20version=%221.0%22%20encoding=%22UTF-8%22?%3E%3Copml%20version=%222.0%22%3E%3Chead%3E%3Ctitle%3E${e(n)}%3C/title%3E%3C/head%3E%3Cbody%3E%3Coutline%20text=%22${e(i)}%22%3E${d}%3C/outline%3E%3C/body%3E%3C/opml%3E%60;navigator.clipboard.writeText(s).then(()=%3E{alert(%22OPML%E3%82%92%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%22)}).catch((e)=%3E{const%20t=document.createElement(%22textarea%22);t.value=s,t.style=%22position:fixed;top:10%;left:10%;width:80%;height:80%;z-index:9999;padding:20px;border:2px%20solid%20#333;box-shadow:0%200%2020px%20rgba(0,0,0,0.5);%22,t.title=%22%E3%83%80%E3%83%96%E3%83%AB%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%A7%E9%96%89%E3%81%98%E3%81%BE%E3%81%99%22,document.body.appendChild(t),t.select(),t.addEventListener(%22dblclick%22,()=%3Et.remove()),document.addEventListener(%22keydown%22,(e)=%3E{%22Escape%22===e.key&&t.remove()},{once:!0}),alert(%22%E3%82%B3%E3%83%94%E3%83%BC%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%83%91%E3%83%8D%E3%83%AB%E3%81%8B%E3%82%89%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%EF%BC%88%E3%83%80%E3%83%96%E3%83%AB%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%A7%E9%96%89%E3%81%98%E3%81%BE%E3%81%99%EF%BC%89%22)})})();

できること

Kindleのハイライトページ で左側のリストからコピーしたい書籍を選択して、ブックマークレットを実行すると、

  • 『書籍タイトル(Amazon.co.jpへのリンク)』 著者名
    • ハイライト本文(ノート欄にLocation情報を格納)
      • Note: 自分のメモ

という形式でOPMLがコピーされるので、それを各種アウトライナーに貼り付けられる。

*もしブラウザのセキュリティ設定等でコピーに失敗した場合は、画面にテキストエリアが表示されるのでその中身をコピーすればOK。使い終わったらパネルはダブルクリック(またはEscキー)で閉じる。