広告

あなたのAIエージェントはログイン後のページを取得できない。Zigで<400kbの修正を作った。

Dev.to / 2026/3/29

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • この記事は、「playpanda」という、認証の背後にあるWebページ(例:Medium、Facebook、プライベートなSubstack)を、初回のログイン後に保存したログインCookieを再利用することで、AIコーディングエージェントが取得できるようにするツールを説明しています。
  • 取得したコンテンツをエージェントのワークフローで使いやすくするため、ナビゲーションバー、Cookieバナー、広告、不必要なアセットURLなどのサイトの煩雑さを取り除いた、クリーンなMarkdownを出力します。
  • フェッチャは、エージェントがどの手法を使ったかを意識する必要なく、単純なHTTP取得、JSレンダリング、そしてアンチ検知(対策)を備えた実ブラウザまで、複数の段階へと段階的にエスカレートします。
  • このプロジェクトは400KB未満の小さなシングルZigバイナリとして実装されており、ワンライナーのスクリプトによるインストール、npxとしての「skill」、またはZig 0.15+でのソースからのビルドといった選択肢が用意されています。
  • 本記事は、playpandaに置き換えることで、認証やアンチボットによる保護があるサイトでも信頼性を高める方法(1回の呼び出しで複数URLを取得することを含む)を提案しています。

Claude Code には WebFetch があります。あらゆる AI コーディングエージェントには、どこかしらでウェブページを取得する手段があります。

彼らは皆、同じ壁にぶつかります。認証です。

Medium の記事を取得してみてください。Facebook の投稿。非公開の Substack。Cloudflare の背後にある何か。するとエージェントはログインページや CAPTCHA に遭遇するか、あるいは何も返ってこず、それでも残りをでっちあげてしまいます。

What playpanda does

playpanda https://medium.com/@someone/private-post

一度ログインすれば十分です。Cookie が保存されます。その後は、エージェントからでも、スクリプトからでも、ターミナルからでも、取得がそのまま機能します。

出力は、ゴミが取り除かれた markdown です。ナビゲーションバーも、Cookie バナーも、広告も、画像 CDN の URL もありません。内容だけです。

How agents can use it

シェルアウトできるものなら何でも使えます:

# Replace WebFetch in Claude Code
playpanda https://docs.example.com/private-api

# Fetch multiple pages at once
playpanda https://url1.com,https://url2.com,https://url3.com

How fetching works

最も速い方法をまず試し、何かに引っかかったら段階的にエスカレートします:

方法 速度 作動するタイミング
HTTP fetch ~200ms デフォルト。ほとんどのページで動作
JS レンダリング ~1.5s ページの読み込みに JavaScript が必要
実ブラウザ + 追跡回避(anti-detection) ~6s サイトがボットを積極的にブロック

どの階層が実行されたかをエージェントは知る必要はありません。markdown が返ってくるだけです。

Size

単一の Zig バイナリ。400kb 未満。

Install

ワンライナー:

curl -fsSL https://raw.githubusercontent.com/ancs21/playpanda/main/scripts/install.sh | sh

エージェントスキルとして:

npx skills add ancs21/playpanda

ソースから(Zig 0.15+ が必要):

git clone https://github.com/ancs21/playpanda.git
cd playpanda
zig build -Doptimize=.ReleaseFast
cp zig-out/bin/playpanda ~/.local/bin/

GitHub: https://github.com/ancs21/playpanda(Apache 2.0 ライセンス)

広告