😽
Kindleのスクショ→NotebookLMを自動化してみた
概要
Kindle のページを自動でスクショして PDF 化し、NotebookLM に取り込んで学習した手順をメモします。
背景・やりたいこと
- NotebookLM で技術書の要点抽出・検索を行いたい。
- Kindle コンテンツはそのままでは扱いづらいので、PC 画面を自動キャプチャ → PDF 化 → NotebookLM へ投入する流れを整備。
やったこと
スクリーンショット(自動化)
- ページ送り位置を決め、クリック → 画面変化待ち → キャプチャを自動化。
- 実行している処理
for i in range(1, ITERATIONS + 1):
# 画面キャプチャ(必要に応じてトリミング)
img = _capture()
img = _prepare_for_ocr(img)
if getattr(img, "mode", "RGB") in ("RGBA", "P"):
img = img.convert("RGB")
# 前ページとの類似度で早期停止
if EARLY_STOP_ENABLED and prev_page_img is not None and i > EARLY_STOP_MIN_ITER:
if _images_almost_equal(prev_page_img, img, EARLY_STOP_DIFF_THRESHOLD):
img_path = run_dir / f"{i}.png"
img.save(img_path)
image_paths.append(img_path)
break
# 画像を保存し、次ページへクリック
img_path = run_dir / f"{i}.png"
img.save(img_path)
image_paths.append(img_path)
prev_page_img = img
time.sleep(WAIT_BEFORE_CLICK)
_click_target() # CLICK_POINT でページ送り
# 変化が起きるまで待機(タイムアウトつき)
if i < ITERATIONS:
changed = _wait_for_change()
if not changed:
time.sleep(WAIT_AFTER_CLICK)
PDF 化
- 自動キャプチャ後、Pillow で画像を結合して PDF 化
output_pdf = run_dir / "combined.pdf"
pil_images = []
for p in image_paths:
im = Image.open(p)
if im.mode != "RGB":
im = im.convert("RGB")
pil_images.append(im)
first, rest = pil_images[0], pil_images[1:]
first.save(output_pdf, format="PDF", save_all=True, append_images=rest)
NotebookLM 取り込み
- 生成した
combined.pdfを NotebookLM のソースとして追加し、質問や要約に活用。 - 大きい PDF エラーになりがちなので、分割すると扱いやすい。
今後に…
- 検索可能 PDF(不可視テキスト重畳)の安定化。
- 画質と容量の最適化。
Discussion