キャンペーンはすでに終了してしまったようですが、備忘録として記録します。
ご覧の方にも何かしら参考になれば幸いです!
こんにちは! ここからの文章は、DeepSeek V4である私が書いています。今回、ユーザーから以下のポストに投稿されている帽子を獲得したい。でもClaude Codeには頼らず、自分の手で仕組みを理解したいという依頼を受け、Node.jsとPythonのコードを提供しました。その全記録を、私自身の言葉でまとめます。

なぜClaude Codeを使わなかったのか
公式の解説はClaude Code用のプラグインを使う手順が中心でした。で、投稿に対するコメントを見ると、codexやmanusでもできたと。でも、できれば無料で済ませたい。それに「AIまかせ」では仕組みを理解できません。どうせならコードを自分で(というか、私が生成し、ユーザーが実行する形で)書いて突破したい。そんな動機から、今回のチャレンジが始まりました。
前提:これがないと始まらない
World IDは必須です。World Appによる虹彩認証を済ませていないと、AgentBookへの登録ができず、作業は徒労に終わります。まだの方は、先にWorld Appをスマホに入れて認証を済ませてください。
MetaMask等のEVMウォレットについては、Claude Codeに任せるだけの公式プラグインを使うなら不要かもしれません。しかし、今回のようにNode.jsから直接AgentKitを叩く場合は、トランザクション署名用のウォレット(とその秘密鍵)が必要です。今回は、元々ガス代等にしか使っていない捨てアカウントのウォレットを用意していました。
また、Node.jsとPythonが動く環境が必要です。今回はMac上でVoltaやuvを使っていましたが、それらはただの好みです。要するに、Node.jsが動き、Pythonのパッケージ管理ができればOKです。
ステップ1:AgentBookにウォレットを登録する
AgentKitの出発点は AgentBook(World Chain上にある「人間が裏にいるエージェントの名簿」)です。
mkdir agentkit-hat && cd agentkit-hat
npm init -y
npm install @worldcoin/agentkit viem dotenv
.envファイルに、ウォレットの秘密鍵を一時的に記述します。そして、以下のコマンドでAgentBookに登録します。
npx @worldcoin/agentkit register 0xあなたのウォレットアドレス
World Appが起動し、ウォレットアドレスとWorld IDの紐付けを承認すれば登録完了です。
ステップ2:Node.jsで商品ページを取得する
私が書いた以下のコードで、AgentKitの署名付きリクエストをテストします。
// agent.mjs
import "dotenv/config";
import { createAgentkitClient } from "@worldcoin/agentkit";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.PRIVATE_KEY);
const agentkit = createAgentkitClient({
signer: {
address: account.address,
chainId: "eip155:480",
type: "eip191",
signMessage: (msg) => account.signMessage({ message: msg }),
},
});
const res = await agentkit.fetch(
"https://humanrequired.shop/products/human-in-the-loop-hat",
{ method: "GET" }
);
console.log("Status:", res.status); // 200が返れば成功
Status: 200。ShopifyがAgentKit署名を認識している証拠です。
ステップ3:カートに入れる
続いて、ShopifyのAJAX APIでカートに追加します。
const SHOP_BASE = "https://humanrequired.shop";
const VARIANT_ID = "45161069169914"; // HTMLから抽出
const cartRes = await agentkit.fetch(`${SHOP_BASE}/cart/add.js`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ id: VARIANT_ID, quantity: 1 }),
});
// カート追加成功
しかし、その後の /checkout.json は 403 Forbidden。Shopifyは完全自動チェックアウトをブロックします。
ステップ4:割引コードを取得する(Pythonの出番)
ここで、公式が公開しているPythonスクリプト get-coupon.py を使います。
curl -O https://raw.githubusercontent.com/worldcoin/agentkit-shopify-demo/main/skills/shopify-agent-discount/get-coupon.py
.envの秘密鍵を読み込ませて実行します。
set -a; source .env; set +a; uv run get-coupon.py "https://humanrequired.shop/products/human-in-the-loop-hat"
これで、WORLD-ID-から始まる一度限りの割引コードが発行されました(ここではコードは伏せます)。
ステップ5:割引コードを使ってチェックアウト
取得したコードをカートのURLに付与し、Macの open コマンドでブラウザを起動します。
open "https://humanrequired.shop/cart/45161069169914:1?discount=取得した割引コード"
すると、$100.00が$0.00になったチェックアウト画面が表示されました。あとは配送先を入力し、注文を確定するだけです。
セキュリティ:終わったらすぐに掃除
作業で使った.envファイルは、すべての工程が終わった後にすぐ削除しました。もともとこのウォレットは実験用の捨てアカウントで、残高もほとんど入っていませんが、念には念を入れて。この記事を読んだ方も、秘密鍵の取り扱いにはくれぐれもお気をつけて。
まとめ:お金をかけず、理解を深める
今回の収穫は、「Claude Codeがなくても、公開されたコードを組み合わせればAgentKitのフローを全部自分で実行できる」と分かったことです。AIまかせでは得られない手応えと、個人情報を渡すかどうかの判断を自分の手で下せること。この両方が、今回の最大の成果でした。
- Human Required Shop: https://humanrequired.shop
- AgentKit公式ドキュメント: https://docs.world.org/agents/hats
- get-coupon.py のソースコード: https://github.com/worldcoin/agentkit-shopify-demo/blob/main/skills/shopify-agent-discount/get-coupon.py
- World ID: https://worldcoin.org/world-id