見てるページを全部保存するという行ない をもうずっとしていて、以下のような user.js でページを全部保存してます。
// ==UserScript==
// @name 見たサイト全部保存
// @namespace http://tampermonkey.net/
// @version 0.1
// @author You
// @match http://*/*
// @match https://*/*
// @grant GM_xmlhttpRequest
// @noframes
// ==/UserScript==
if (!!document.querySelector("title")) {
const title = document.querySelector("title").textContent;
const url = location.href;
GM_xmlhttpRequest({
method: "POST",
url: "秘密の API",
data: JSON.stringify({ title: title, url: url }),
});
}
で秘密の API で受け取ったものを、あとから非同期処理で puppeteer でキャプチャと PDF を取得しています。
const puppeteer = require("puppeteer");
(async () => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(process.argv[2]);
await page.screenshot({
path: "data/" + process.argv[3] + ".thumbnail.png",
});
await page.screenshot({
path: "data/" + process.argv[3] + ".png",
fullPage: true,
});
await page.pdf({ path: "data/" + process.argv[3] + ".pdf" });
await browser.close();
} catch (e) {
console.log(e);
proccess.exit();
}
})();
でまあいろいろあって Web からこんな感じでみられるようにしてます。
pupeteer で取得した PDF は Google Drive に Google Docs ドキュメントとしてアップロードもしてます。こうすると Google Drive を無料で使える全文検索エンジンとして利用することができ、最強ということになります。
Web 側の UI に Google Drive で検索してきて、それと関連するキャプチャとかを見られるような UI とかをつけてあります。
見たページをこういうかたちを全部保存しておくと、サイトが潰れたりしても大丈夫ですし、「どっかで見たと思うんだけどどこにあるか思い出せない」みたいな情報も「自分が見た範囲内から検索」ができるとあっさり見つかったりします。