今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

getmaxun/maxun

ウェブサイトをコード不要で構造化APIに変換するオープンソースデータ抽出プラットフォームです。

不動産サイトの物件情報やニュース記事を、コードを書かずにブラウザ上でクリックするだけで収集ロボットに変換できます。ログインが必要な会員制サービスでも、Playwrightが実際のブラウザ操作を再現し、ページ構成が変わっても自動で復旧しながらデータを取り続けます。レコーダーモードで手軽に始め、慣れたら自然言語で指示するAIモードに切り替えられるので、リード生成や市場調査の定期収集を今日から自分の手元で試したくなります。

01 / 概要
何をするものか一文で言うと
ひとことでウェブサイトをコード不要で構造化APIに変換するオープンソースデータ抽出プラットフォームです。

Maxunは、ブラウザ操作を記録するだけでウェブサイトからデータを抽出するAPIを作れる、オープンソースのノーコードスクレイピングプラットフォームです。GUIでの記録に加え、自然言語で抽出内容を指定するAIモードも用意されています。抽出結果はAPI、Webhook、Google Sheets、Airtableなどに連携できます。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

フロントエンド(src/)でユーザーがブラウザ操作を記録すると、socket-connection経由でbrowser-managementのRemoteBrowser/BrowserPoolが制御する実ブラウザに操作が反映されます。実ブラウザは別コンテナのbrowser/server.tsが担い、playwright-extraとstealthプラグインでChromiumをWebSocketサーバーとして起動し、検知回避を図っています。記録した操作は「ロボット」としてPostgresに保存され、実行時はmaxun-core/src/interpret.tsとserver/src/workflow-management/classes/Interpreter.tsがワークフローを解釈し、browserSide/scraper.jsをページに注入してデータを収集します。AIモードではsdk/browserAgent.tsとanthropicTools.tsがLLMにページ構造(pageAnalyzer.js)を渡し、セレクタ候補を生成・検証(selectorValidator.ts)します。実行結果はMinIO/DB(storage/mino.ts, db.ts)に保存され、schedule-worker.tsとgraphileWorker.tsが定期実行を担当、最終的にwebhookやgsheet/airtable連携、公開APIで配信されます。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    docker-compose.ymlとENVEXAMPLEを基に.envを用意し、docker compose upでpostgres・minio・backend・frontend・browserの5コンテナが立ち上がる様子を確認します。

  2. STEP 02

    ブラウザでFRONTEND_PORT(既定5173)にアクセスし、対象URLを入力してレコーダー画面を開き、クリックや選択操作を記録してみます。

  3. STEP 03

    記録した操作を「ロボット」として保存し、実行ボタンを押すとbrowserコンテナ上のヘッドレスChromiumが操作を再現し、抽出結果がテーブル表示される流れを体験します。

  4. STEP 04

    AIモードを選んだ場合は抽出したい内容を自然言語で記述し、ANTHROPIC関連のAPIキーまたはOLLAMA_BASE_URLの設定が求められる場面に遭遇します。

  5. STEP 05

    取得したデータをCSV/JSON形式のAPIとして呼び出したり、Webhook URLやGoogle Sheets/Airtable連携を設定して自動送信される挙動を確認します。

  6. STEP 06

    スケジュール機能で定期実行を設定し、schedule-worker経由で裏側のジョブが動いているかログで追ってみます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

記録したブラウザ操作が再現可能な「ロボット」として保存され、実行するたびに構造化データ(表形式の抽出結果)が得られます。これはAPIエンドポイント、Webhook通知、Google SheetsやAirtableへの書き込みとして外部に取り出せる状態になります。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

docker-compose.ymlは既定でgetmaxun/maxun-backendなどの事前ビルド済みイメージを使う設定になっており、Dockerfile.backend等からのビルドはコメントアウトされているため、ソース変更を反映するには設定変更が必要です。

02

ChromiumをSYS_ADMIN権限やseccomp=unconfined、shm_size 2gb以上で動かす前提のため、セキュリティ制約の強い環境ではそのままでは動かしにくい可能性があります。

03

AIモードはANTHROPICのAPIキーやOLLAMA_BASE_URLなど外部LLM設定に依存しており、未設定だと動作しない機能だと考えられます。

04

legacyディレクトリに旧アーキテクチャのコンポーネント(pgboss-worker.tsなど)が残っており、現行のgraphileWorker系と役割が重複しているように見える点は、READMEだけでは判別できません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

ノーコードでスクレイピングロボットを作りたい人や、既存サイトを社内API化したいチームには向いている構成です。フロントエンド・バックエンド・専用ブラウザサービス・ワーカーという役割分担がdocker-compose.ymlとソース構造から一貫して確認でき、記録→保存→実行→配信という流れがコード上で裏付けられているため、実機を動かさなくても大枠の挙動判断は信頼できます。ただしAIモードや本番運用時のリソース要件・権限設定は実際の環境依存度が高く、その部分は自分の環境で検証する必要があります。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する