tameshita新しいツールを実際に動かした記録

anakin — サイトを本文だけのMarkdownに変える自己ホストAPI(英語)動いた

任意のURLをPOSTすると、ナビゲーションやスクリプトを除いた本文だけのMarkdown(またはHTML)にして返す、自己ホスト型のスクレイピングAPI。提供元のホスト版は anakin.io で、似た名前だが無関係な生成AIアプリ紹介サービス anakin.ai とは別物。

配布元: https://github.com/Anakin-Inc/anakin  / 2026-09-11 時点で確認

この日に実際に動かした結果です。内容の誤りに気づかれた場合はお問い合わせください。確認のうえ訂正します。

anakin を使う前に分かること

必要なもの追加で用意するものは無し(無料の範囲で動いた)
動かした環境Go 1.24.7 のマシンに直接(Docker daemon はこの環境で動くが、Docker Hub からのイメージ取得が通信制限で失敗したため、README の「Docker…
日本語画面・文書は英語
確認日2026-09-11(この日に実際に動かした)

anakin の使い方

やること:自分のマシンでAnakinScraperのAPIサーバーを起動し、任意のWebページを本文だけのMarkdownに変換して取り出す。

  1. リポジトリをcloneし、server/ ディレクトリでデータベース無しのメモリモードのままサーバーを起動する。go.mod は Go 1.25 を要求するが、go コマンドが自動でそのバージョンを取得してビルドしてくれる。

    git clone https://github.com/Anakin-Inc/anakin.git anakinscraper-oss
    TELEMETRY=off go run cmd/server/main.go

    go: downloading go1.25.0 のあとビルドが進み、http://localhost:8080 で待受を始める。ログに gemini API key not configured / telemetry disabled / API_KEY is not set の3行が出る。

  2. URLを1つ渡してMarkdown変換を試す。

    curl -s -X POST http://localhost:8080/v1/scrape -H 'Content-Type: application/json' -d '{"url": "https://github.com/Anakin-Inc/anakin"}' | jq '.status, .durationMs, .markdown'

    status が completed になり、GitHubのリポジトリページからナビゲーションやボタンのラベルを除いた本文相当のMarkdownが1秒未満で返る。

  3. 複数URLをまとめて投げ、ジョブIDで結果を後から取りに行く。

    curl -s -X POST http://localhost:8080/v1/url-scraper/batch -H 'Content-Type: application/json' -d '{"urls": ["https://github.com/Anakin-Inc/anakin", "https://pypi.org/project/requests/"]}' | jq .
    curl -s http://localhost:8080/v1/url-scraper/batch/da1bf82d-ef55-403f-a68f-0165dab64aec | jq '.status, .results[].status'

    最初の呼び出しは status: pending のジョブIDだけを返す。数秒後にIDを叩くと status: completed とURLごとの結果(completed/failed)が並ぶ。

  4. README の比較表で一番の売りにされている「アンチ検知ブラウザ(Camoufox)」を useBrowser:true で使ってみる。

    curl -s -X POST http://localhost:8080/v1/scrape -H 'Content-Type: application/json' -d '{"url": "https://github.com/Anakin-Inc/anakin", "useBrowser": true, "timeout": 60}'

    all handlers failed: no available handlers for request で失敗する。サーバーのログには handler unhealthy, skipping が2回出る。ブラウザ機能は docker-compose の browser-service コンテナ(別ポート9222でCamoufoxを動かす)が別途起動していないと使えない。

  5. もう一つの目玉であるドメインごとの失敗検知(domain-configs)を確認する。

    curl -s http://localhost:8080/v1/domain-configs

    no_database、Domain configs require DATABASE_URL to be set が返り、HTTPステータスは503。この機能はPostgreSQLを立てるフルの docker-compose 構成でないと使えない。

最後まで通した時に出たもの(実際の出力)

"### Uh oh!\n\nThere was an error while loading. [Please reload this page]().\n\n[Anakin-Inc](https://github.com/Anakin-Inc) / [**anakin**](https://github.com/Anakin-Inc/anakin) Public

anakin の良かった点

  • git clone して go run するだけで、Dockerもデータベースも無しにAPIサーバーが立つ。APIキーも登録も不要で、この状態のまますぐ試せる
  • 取得したHTMLから本文だけを抜き出す精度が高い。GitHubのリポジトリページのような複雑なDOMでも、ナビゲーションやボタンの文言を含まない本文相当のMarkdownになって返ってきた
  • 同期(即返す)・非同期(ジョブID)・バッチ(複数URL)の3系統のAPIが揃っていて、用途に応じて使い分けられる

anakin の不便だった点

  • README の比較表で名指しされている2つの差別化ポイント(アンチ検知ブラウザ/失敗検知のdomain-configs)は、README のQuick Startどおり(go runのみ)では両方とも動かない。ブラウザは別コンテナ、失敗検知はPostgreSQLが要るとエラーメッセージで初めて分かる作りで、Quick Startの案内にはその制約が書かれていない
  • generateJson: true をGEMINI_API_KEY無しで送ってもエラーにならず、status: completed のまま generatedJson だけが null で返ってくる。機能が有効になっていないことに気づきにくい
  • 稼働統計を1時間ごとに anakin.io へ送るテレメトリがデフォルトで有効。止めるにはREADME本体ではなくTELEMETRY.mdに書かれた環境変数 TELEMETRY=off が要る

詰まった点と、効いた対処

実行したコマンド
curl -s -X POST http://localhost:8080/v1/scrape -H 'Content-Type: application/json' -d '{"url": "https://github.com/Anakin-Inc/anakin", "useBrowser": true, "timeout": 60}'
出たエラー
all handlers failed: no available handlers for request | Tip: try anakin.io for managed scraping with zero infrastructure
対処

docker-compose.yml の browser-service(Camoufoxを動かす別コンテナ、ポート9222)を別途起動し、サーバー起動時に BROWSER_WS_URL を渡す必要がある。go run だけの最小構成では直らない

実行したコマンド
curl -s http://localhost:8080/v1/domain-configs
出たエラー
{"error":"no_database","message":"Domain configs require DATABASE_URL to be set"}
対処

PostgreSQLを立てて DATABASE_URL を設定する(docker-compose のフル構成、または自前のPostgres)

ここは実際に払っていません。画面と料金ページに書かれていた内容と、無料のまま触って当たった制限を突き合わせたものです。

OSS本体(HTTP取得・Markdown変換・同期/非同期/バッチAPI)はここで検証した範囲すべて無料。有料になり得るのは、素通りできなかった一部のページ用に自分で契約する第三者スクレイピングAPIの鍵と、generateJson で使う自分のGEMINI_API_KEYの2箇所だけで、どちらも設定しなければ課金は発生しない。

確認した条件

確認日2026-09-11
試した版a842fc2f1fe5c22b80cd81e3f0760335ee21ed29
実行環境Go 1.24.7 のマシンに直接(Docker daemon はこの環境で動くが、Docker Hub からのイメージ取得が通信制限で失敗したため、README の「Docker無し」クイックスタートで検証した)