moliとは?使い方・できることを実際に使って検証した動いた
この日に実際に動かした結果です。内容の誤りに気づかれた場合はお問い合わせください。確認のうえ訂正します。
使う前に分かること
| 必要なもの | Claude Code などのコーディングエージェント |
|---|---|
| 動かした環境 | Linux(x86_64)、Claude Code。 |
| 日本語 | 画面・文書は英語 |
| 確認日 | 2026-10-22(この日に実際に動かした) |
コーディングエージェントに「このページの中身を教えて」と頼んでも、うまく読めずに困ることがあります。最近のWebページの多くは、最初に届く中身がほとんど空で、JavaScriptが動いたあとに本文が出てくる作りになっているからです。今回試したmoliは、そういうページでもエージェントが中身をちゃんと読み取れるようにするための、ヘッドレスブラウザです。ターミナルから自分でコマンドを打って中身の取り出し・見た目のスクリーンショットを試したあと、最後にエージェントへ日本語で頼んで、実際にページの内容を教えてもらうところまでやりました。
追記(2026-10-22): 公開からスターは2,219から一時2万を超え、本記事執筆時点では19,976。本体のバージョンも公開時の1.1.9から1.1.19まで5回上がりましたが、そのたびにインストールとmoli fetchの取り出し(markdown・screenshot・pdf)をもう一度試し、インストールの手順・コマンドの使い方・取れる中身が前回と変わらないことを確認してきました。唯一の変化は1.1.17で、ここで取り出し方の1つpdf(PDFとして保存)を新たに試せたので、下の「ページをPDFとして保存する」に追記しています。1.1.19では配布元のコードを見る限りmoli serve(Skillのうち今回は使っていないmoli-cdp-server向け)にデバッガ用の引数が増えただけで、今回試した範囲への影響はありませんでした。
moli本体とSkillを入れる
moliは、Chromeなどの既存のブラウザを内部で呼び出すのではなく、Rustでゼロから書かれた独立したブラウザです。実行ファイルを1つ置くだけで動き、別の言語の実行環境を用意する必要はありませんでした。
ターミナルを開いて、配布元が用意しているインストール用のスクリプトを取ってきて、そのまま走らせます。
curl --proto "=https" --tlsv1.2 -fsSL \
https://github.com/lexmount/moli/releases/latest/download/moli-installer.sh | sh
Downloading moli-x86_64-unknown-linux-gnu.tar.gz...
Installed moli to /root/.local/bin/moli
バージョンを確認しておきます。
moli --version
moli 1.1.19
moliは自分でコマンドを打って使うこともできますが、用意されているのはコーディングエージェント(Claude CodeやCodexなど)向けのSkillです。配布元のファイル一式を取ってきて、Skillを置く場所にコピーします。
git clone https://github.com/lexmount/moli.git
Cloning into 'moli'...
Skillは決まったフォルダに置きます。Skillを一度も入れたことがなければそのフォルダ自体がまだ無いので、 作ってからコピーしました(既にあればそのまま使われます)。
mkdir -p ~/.claude/skills
cp -R moli/skills/. ~/.claude/skills/
ls ~/.claude/skills/
moli-cdp-server
moli-webfetch
moli-websearch
3つ入りました。今回使うのは、URLを渡して中身を取ってこさせるmoli-webfetchです。moli-websearchはキーワードや画像でWebを検索する用、moli-cdp-serverはページのクリックやフォーム入力まで自動化する用で、今回はどちらも使っていません。
8種類の取り出し方から3つを試す
moliはページの中身を、そのまま欲しい形で取り出せます。今回試したのは「読みやすい文章として」「見た目の画像として」「PDFとして」の3つです。
| 取り出し方 | 中身 | 今回 |
|---|---|---|
| markdown | ページを読みやすいMarkdownに変換したもの | ✓ |
| html | レンダリングしたあとのHTML | |
| json | ステータスコードやヘッダーなどをまとめた情報 | |
| screenshot | 画面に見えている範囲のPNG画像 | ✓ |
| screenshot_full | ページ全体を1枚に収めたPNG画像 | |
| ページをPDFとして保存したもの | ✓ | |
| semantic_tree | 見出しやリンクの役割が分かる構造化データ | |
| semantic_tree_text | 同じ内容をテキストとして読める形にしたもの |
エージェントに頼む
ここからは、Skillを入れたエージェントに実際にお願いしてみます。エージェントのチャット欄に、そのままこう頼みました。
https://pypi.org/project/requests/ の内容を取ってきて、何のパッケージか3行くらいで教えて
すると、こう返ってきました。
requests(バージョン2.34.2)は、Python用のシンプルでエレガントなHTTPライブラリ("Python HTTP for Humans")です。GET/POSTなどのHTTPリクエストを直感的なAPIで送受信でき、認証・セッション管理・JSON処理などを簡単に扱えるようにする、Pythonエコシステムで最も広く使われている定番パッケージの一つです。`pip install requests` でインストールでき、公式ドキュメントは https://requests.readthedocs.io にあります。
ページの中身をそのまま貼るように頼んだわけではないのに、実際のバージョン番号やインストール方法まで正しく拾えていました。裏では、Skillの手順どおりにmoli fetch --dump markdownが実行され、そこで取れたMarkdownを読んでからこの返事を作っています。
自分の手でも試す
moliのSkillはmoli fetchコマンドを呼んでいるだけなので、自分の手で同じコマンドを打つこともできます。JavaScriptで後から中身を書き足すタイプのページとして、パッケージ検索サイトJSRのページを渡してみました。
moli fetch --dump markdown --wait-until networkidle https://jsr.io/@std/path
[Skip to main content](#main-content)
[Home](/)
[JSR](/)
Search for packages
[PackagesBrowse packages](/packages)|[Docs](/docs)||[Sign in](/login?redirect=%2F%40std%2Fpath)
Search for packages
# [@std](/@std)/[path](/@std/path)@1.1.6 Built and signed on GitHub Actions Built and signed on GitHub Actions
latest
[denoland/std](https://github.com/denoland/std)
メニューの文字やパッケージ名・バージョンなど、JavaScriptが後から書き足す部分まで、ちゃんと文章として取れています。
同じページの見た目も確認しました。--layoutを付けると画面のレイアウトが計算されるようになり、スクリーンショットが撮れます。
moli fetch --layout --dump screenshot https://jsr.io/@std/path > shot.png
> shot.pngの部分で、今いるフォルダにそのファイル名で保存されます。画像としてちゃんと保存できたかを確認するため、ファイルの種類を見るコマンドにかけてみます。
file shot.png
shot.png: PNG image data, 1920 x 1080, 8-bit/color RGBA, non-interlaced
1920×1080のPNG画像として保存できていました。開いてみると、こうなっていました。

検索ボックスやタブ、右側の「Use with」の選択メニューまで、実際にブラウザで開いた時と同じ見た目で撮れていました。
ページをPDFとして保存する(2026-10-15追記)
1.1.17に上がったタイミングで、まだ試していなかったpdfという取り出し方も試してみました。画面のレイアウトを計算する--layoutを付けて、--dump pdfを指定します。
moli fetch --layout --dump pdf https://jsr.io/@std/path > jsr.pdf
このコマンドだけだと画面にPDFのデータがそのまま出てしまうので、>で保存先のファイル名を指定しています。ちゃんとPDFファイルとして保存できたか、中身を見るコマンドにかけて確認します。
pdfinfo jsr.pdf
Pages: 2
Page size: 612 x 792 pts (letter)
PDF version: 1.7
開いてみると、こうなっていました。

コードブロックの薄い灰色の背景や、黄色い「latest」のバッジ、プログラムコードの色分けまで、画面の見た目がそのままPDFに残っていました。これは1.1.17で入った変更で、配布元のコードを見ると、このバージョンからPDFに書き出すときに背景色を保持するようになっていました(それより前のバージョンでどうだったかは試していません)。
お金はかかるか
今回使ったmoli本体は、ここまで全部無料でした。ソースコードも公開されていて、追加の登録やAPIキーも必要ありません。
同じ開発元は、ブラウザを自分の手元やサーバーに用意しなくても使えるクラウド版(Lexmount Browser)も別に提供しています。今回はそちらには触れておらず、自分の環境に入れたmoli本体だけで完結する範囲を試しました。
まとめ
moliは、エージェントがJavaScriptで書かれた最近のWebページの中身までちゃんと読み取れるようにしてくれる、軽いブラウザでした。インストールは実行ファイルを1つ置くだけで、Skillさえ入れておけば、日本語で「このページの内容を教えて」と頼むだけで、実際のバージョン番号やインストール方法まで正確に拾ってきてくれました。自分のエージェントにWebページを読ませたい場面があるので、今後もこれを使っていくと思います。クリックやフォーム入力までブラウザの操作そのものを自動化したい場合は、最初に入れたmoli-cdp-serverのSkillがmoli serveで操作用のサーバーを立ち上げ、そこにPlaywrightのような自動操作のツールを繋ぐ形になります。今回はそこまでは試していません。
確認した環境
最初の検証(2026-09-22)、2026-10-08の再検証(1.1.9→1.1.15)、2026-10-12の再検証(1.1.15→1.1.16)、2026-10-15の再検証(1.1.16→1.1.17)、2026-10-19の再検証(1.1.17→1.1.18)、2026-10-22の再検証(1.1.18→1.1.19)は、いずれもLinux(x86_64)のクラウド環境で、Claude Codeを使いました。インストールとmoli fetchでの取り出しは6回とも同じ結果でした。インストール用のスクリプトはMacにも対応しています(配布元が同じcurlの手順をMac向けにも用意しており、Windows向けにはPowerShellの手順が別に用意されています)が、そちらは今回試していません。