5.15.2025

NODE.js を使って、複数のNoteの記事をまとめてPDF化して読み物風に保存する。JavaScriptでできた。

note.comの記事を、リーダーモードみたいにしてPDF化する作業をとりあえず自動化できたのでメモ。

まず、「特定のブログサイトの記事をスクレイピングして、Chromeのリーダーモードみたいな見た目でPDF化するプログラムってGASで書ける?」とChatGPTに聞く。

すると、Puppeteer(Node.js)というのを使って、リーダーモードっぽい見た目を再現することを勧められたのでそれをすることに。

一度でいいはずの作業

1. NODE.js のインストール。
2. コマンドプロンプト(CMD)でプロジェクトフォルダを作成。
mkdir my-puppeteer-project
cd my-puppeteer-project
3. puppeteerもインストールする。
npm init -y
npm install puppeteer

いろいろ見慣れないメッセージが出てくるかもしれないけれど、物は試し、これまでのRの経験とかを活かしながら対応する。

注:初回インストール時、Puppeteerが自動でChromiumをダウンロードしてくれるから、それなりに容量食う(100〜200MBくらい)らしい。

PDF化したいウェブサイトのリンク一覧を作成

1. urls.txt というテキストファイルを、my-puppeteer-project内に作成。
2. urls.txtの中に、リンクを一行に一個の形で保存。(いかにも、Loopの参照先っぽい!)

リンクを順にたどってPDF化するスクリプトを作成

1. index.js というテキストファイルを、my-puppeteer-project内に作成。.js はJavaScriptなので、NotePad++などで編集する。(.js さえついていればファイル名は何でもいい)
2. index.jsの中に、urls.txt中のリンクを一つ一つたどり、PDF化、それを一冊のPDFにするという操作をするスクリプトをコピペして保存。
完成形は、index_adj_margins2_loop.js というスクリプト。

実際にindex.jsを動かす!

1. CMDで、index_adj_margins2_loop.js と打ってエンターで実行!
2. エラーメッセージをコピーしたいときは、一旦テキストファイルに保存する。
index_adj_margins2_loop.js 2> error.txt 
として実行すると、エラーメッセージが、CMD上に表示される代わりにerror.txt 内に保存される。それをコピペしてChatGPTに聞けばいい。

文字の大きさや余白の大きさなども指定できる。


それなりに背景知識は必要なものの、JavaScriptを触ったこともない非エンジニアが、エンジニアっぽいことができるのが驚愕…。

note.comではない媒体だったらちょっと変える必要があるかも?

これからもいろいろと試してみましょう!



No comments:

Post a Comment