เตรียมคอมเมิร์ซไร้หน้าร้านให้พร้อมในยุคแอลแอลเอ็มตัวแทน
ผู้ซื้อกำลังกลายเป็นเอเจนต์ สิ่งที่ต้องมีเพื่อให้แอลแอลเอ็มอ่านออก ลงนามได้ และจ่ายได้โดยไม่มีมนุษย์ในวงจร และสิ่งที่ Hanzo ส่งมอบให้เรื่องนี้ในวันนี้

ในหน้านี้
คอมเมิร์ซไร้หน้าร้านแยกหน้าร้านออกจากระบบหลังบ้าน เพื่อให้ส่วนหน้าแบบใดก็ขายผ่าน API เดียวได้ ส่วนหน้านั้นเคยเป็นสิ่งที่คนมองเสมอ ไม่ว่าจะเป็นเว็บไซต์ แอป หรือตู้คีออสก์
ส่วนหน้าถัดไปไม่มอง มันอ่าน ผู้ซื้อกำลังกลายเป็นเอเจนต์ คือโปรแกรมที่มีเป้าหมาย มีงบ และมีวงรอบของเครื่องมือ ถูกส่งไปหาแพ็กเกจ หา GPU หรือ API การชำระเงิน มันซื้อจากใครก็ได้ที่มันเข้าใจและจ่ายให้ได้โดยไม่ต้องขอคนช่วย ถ้าธุรกิจของคุณต้องมีคนมาอ่านหน้า ปิดแบนเนอร์คุกกี้ เปิดอีเมลยืนยัน หรือพิมพ์เลขบัตร เอเจนต์จะเลือกผลลัพธ์ถัดไป
นั่นคือข้อเสนอ ธุรกิจต้องให้อ่านออกและทำธุรกรรมได้ด้วย LLM โดยไม่มีมนุษย์อยู่ในวงจร อ่านออกหมายความว่าเอเจนต์รู้ว่าคุณขายอะไร ราคาเท่าไร และจะเริ่มอย่างไร ทำธุรกรรมได้หมายความว่ามันเริ่ม จ่าย และรับของได้ผ่าน API ด้วยตัวเอง
นี่คือสิ่งที่ต้องมี ทีละข้อ พร้อมกับสิ่งที่ Hanzo ส่งมอบวันนี้ ทุกที่อยู่ด้านล่างตอบโดยไม่ต้องมีบัญชี คุณจึงตรวจทุกข้ออ้างได้เอง
ให้ทุกหน้าเป็น Markdown
เอเจนต์จ่ายสำหรับทุกโทเค็นที่อ่าน บน hanzo.ai ให้เติม .md ต่อท้ายที่อยู่ของหน้า แล้วได้หน้านั้นเป็น Markdown: hanzo.ai/pricing.md, hanzo.ai/about.md แต่ละหน้าบอกรุ่นคู่ของตนในส่วนหัวด้วย <link rel="alternate" type="text/markdown"> เพื่อไม่ให้เอเจนต์ต้องเดา
วันที่ 26 ตุลาคม ผมดึงหน้าเอเจนต์ของเราทั้งสองแบบ: 528,810 ไบต์เป็น HTML และ 17,465 เป็น Markdown จากนั้นหยิบทุก URL ที่สิบสองในแผนผังเว็บ 70 จาก 829 แล้วขอรุ่นคู่ ทั้ง 70 ตอบกลับมาเป็น 200 ชนิด text/markdown
เผยแพร่ดัชนีที่เอเจนต์ใช้เริ่ม
เอเจนต์ที่ไม่เคยได้ยินชื่อคุณต้องการที่อยู่เดียวที่พาไปได้ทุกที่ เราเผยแพร่สามที่
-
hanzo.ai/llms.txt เป็นแผนที่ข้อความธรรมดาของเว็บ มันบอกว่า Hanzo คืออะไร แล้วมีส่วน "For agents" พร้อมขั้นตอนที่ตรงเป๊ะสำหรับขอคีย์ จากนั้นไล่หน้ารายการ หน้าละบรรทัด docs.hanzo.ai/llms.txt ทำแบบเดียวกันสำหรับเอกสาร
-
api.hanzo.ai/v1 ไล่ทุกความสามารถที่ API ให้บริการ โดยไม่ต้องใช้คีย์ และ api.hanzo.ai/v1/openapi.json มีทุกการทำงานพร้อมสคีมา สำหรับการขาย ดัชนีมีความสามารถ
commerce: เช็คเอาต์ การสมัครสมาชิก ใบแจ้งหนี้ webhook การชำระเงิน และแค็ตตาล็อกหน้าร้าน -
hanzo.ai/.well-known/api-catalog คือที่มาตรฐาน (RFC 9727) ที่ไคลเอนต์มองหาก่อน มันชี้ไปที่เอกสาร OpenAPI เอกสารประกอบ และหน้าสถานะ
ต้อนรับโปรแกรมเก็บข้อมูลอย่างตั้งใจ
robots.txt เป็นไฟล์แรกที่โปรแกรมเก็บข้อมูลตัวใดก็ขอ ของเรา เรียกชื่อโปรแกรมเก็บข้อมูล AI สิบสองตัวทีละตัว ในนั้นมี GPTBot, ClaudeBot, Claude-User, PerplexityBot และ Google-Extended แล้วอนุญาตให้พวกมัน พวกมันได้ข้อยกเว้นเดียวกับคนอื่น: ทางเข้าสู่ระบบ บัญชี การจ่ายเงิน และเส้นทางของ API
การปิดกั้นโปรแกรมเก็บข้อมูล AI เป็นทางเลือกที่ชอบธรรม การปิดกั้นเพราะค่าเริ่มต้นบอกให้ทำ ไม่ใช่ทางเลือกเลย
ทำให้ราคาเป็นจุดข้อมูล
เอเจนต์เปรียบเทียบ ราคาที่อยู่ในรูป หรือซ่อนหลังปุ่ม "ติดต่อเรา" เปรียบเทียบไม่ได้ api.hanzo.ai/v1/billing/plans ไม่ต้องใช้คีย์และคืนค่า JSON: Free ที่ 0, Pro ที่ 2000 ต่อเดือน, Team ที่ 2500 ต่อที่นั่ง พร้อมขีดจำกัดของแต่ละแผนไว้ข้างกัน จำนวนเงินเป็นหน่วยเซ็นต์
ให้วอลเล็ตสมัครได้
เอเจนต์ไม่มีกล่องจดหมาย ไม่มีโทรศัพท์ และไม่มีบัตร มันมีคู่คีย์ ดังนั้น hanzo.id จึงให้วอลเล็ตเข้าสู่ระบบ: ขอ nonce ใช้ครั้งเดียวสำหรับที่อยู่วอลเล็ต เซ็นข้อความที่มันอธิบาย ส่งลายเซ็น แล้วแลกโค้ดที่ได้กลับมาเป็นโทเค็น
วอลเล็ตที่ Hanzo ไม่เคยเห็นมาก่อนได้บัญชีของตัวเองและองค์กรของตัวเอง โดยวอลเล็ตเป็นผู้ดูแล บนแผน Free โทเค็นอยู่ได้เจ็ดวัน ไม่มีใครเปิดอีเมลหรืออนุมัติอุปกรณ์
เรียกครั้งเดียวได้คีย์ และมีโควตาเล็ก ๆ ให้ลอง
เมื่อมีโทเค็น POST /v1/account/keys คืนคีย์ sk-live- ที่อยู่ได้นานกว่าโทเค็น เก็บไว้ เอกสารบอกว่ามันแสดงครั้งเดียว
แผน Free คือ 50 คำขอต่อวันบน zen-free ไม่ต้องใช้บัตร และทุกการตอบบอกจำนวนที่เหลือใน x-ratelimit-remaining การเรียกครั้งแรกของผมได้ 200 และเหลือ 49
รับเงินโดยไม่มีมนุษย์: สเตเบิลคอยน์ผ่าน API
POST /v1/billing/crypto/deposit รับเชน โทเค็น และจำนวนเงิน แล้วคืนที่อยู่ฝากที่ใช้ได้ 24 ชั่วโมง GET /v1/billing/crypto/options บอกสิ่งที่รับ: เชน Base, Ethereum และ Solana และโทเค็น USDC กับ USDT
ผมหยุดที่ที่อยู่และไม่ได้ส่งเงิน การที่ยอดจะถูกเติมเมื่อเชนยืนยันคือสิ่งที่เอกสารของเราบอก ไม่ใช่สิ่งที่ผมได้รัน แผนและการสมัครสมาชิกยังเป็นการเช็คเอาต์ด้วยบัตรในเบราว์เซอร์ สิ่งที่เอเจนต์ต้องการจากเราคือยอดเงิน และยอดเงินมี API
ทั้งขั้นตอน ในไฟล์เดียว
นี่คือ hanzo.ai/agents#headless แบบย่อ ทุกบรรทัดเป็นอย่างที่หน้านั้นพิมพ์ ผมตัดความเห็นส่วนหัวอันที่สอง การเรียกตัวเลือก และบรรทัดที่พิมพ์คำนำหน้าคีย์ออก คุณต้องใช้ Node 22.18 ขึ้นไปและ npm i viem แล้วจึง node headless.mts ผมรันบล็อกนี้บนโปรดักชันด้วยวอลเล็ตใหม่: ได้โทเค็น ได้คีย์ ได้การเรียกฟรี และได้ที่อยู่ฝาก USDC
// No human required: sign in with a wallet, get a key, call the API, top up in USDC.
// npm i viem · node headless.mts (Node 22.18+; set HANZO_WALLET_KEY to use your own wallet)
import { createHash, randomBytes } from 'node:crypto'
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts'
const ID = 'https://hanzo.id'
const API = 'https://api.hanzo.ai'
const CLIENT = 'hanzo-ai'
const REDIRECT = 'http://localhost:3000/callback'
const account = privateKeyToAccount((process.env.HANZO_WALLET_KEY as `0x${string}`) ?? generatePrivateKey())
const json = async (r: Response) => {
const body = await r.json()
if (!r.ok || body?.status === 'error') throw new Error(`${r.url} ${r.status} ${JSON.stringify(body)}`)
return body
}
// 1. A one-time challenge for this wallet.
const { data: c } = await json(await fetch(`${ID}/v1/iam/web3/nonce?chain=evm&address=${account.address}`))
// 2. The CAIP-122 message the challenge describes, signed with EIP-191 personal_sign.
const message = [
`${c.domain} wants you to sign in with your Ethereum account:`,
account.address,
'',
...(c.statement ? [c.statement, ''] : []),
`URI: ${c.uri}`,
`Version: ${c.version}`,
`Nonce: ${c.nonce}`,
`Issued At: ${c.issuedAt}`,
...(c.expirationTime ? [`Expiration Time: ${c.expirationTime}`] : []),
].join('\n')
const signature = await account.signMessage({ message })
// 3. Verify: a first-seen wallet gets an account and an organization of its own.
const verifier = randomBytes(32).toString('base64url')
const challenge = createHash('sha256').update(verifier).digest('base64url')
const { data: code } = await json(
await fetch(`${ID}/v1/iam/web3/verify`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
clientId: CLIENT, chain: 'evm', scheme: 'secp256k1-eip191', address: account.address, message, signature,
type: 'code', redirectUri: REDIRECT, scope: 'openid profile email', codeChallenge: challenge, codeChallengeMethod: 'S256',
}),
}),
)
// 4. The authorization code for a token.
const token = await json(
await fetch(`${ID}/v1/iam/oauth/token`, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({ grant_type: 'authorization_code', client_id: CLIENT, code, code_verifier: verifier, redirect_uri: REDIRECT }),
}),
)
const bearer = { Authorization: `Bearer ${token.access_token}`, 'Content-Type': 'application/json' }
// 5. A key that outlives the token. Shown once: keep it in your secret store.
const minted = await json(await fetch(`${API}/v1/account/keys`, { method: 'POST', headers: bearer, body: JSON.stringify({ name: 'agent', type: 'secret' }) }))
const key = { Authorization: `Bearer ${minted.key}`, 'Content-Type': 'application/json' }
// 6. A first call, free.
const chat = await fetch(`${API}/v1/chat/completions`, {
method: 'POST', headers: key,
body: JSON.stringify({ model: 'zen-free', messages: [{ role: 'user', content: 'Reply with the single word: ready' }] }),
})
console.log('chat', chat.status, chat.headers.get('x-hanzo-served'), 'free left today:', chat.headers.get('x-ratelimit-remaining'))
console.log((await chat.json()).choices?.[0]?.message?.content)
// 7. Top up in USDC: ask for a deposit address, then send to exactly that address.
console.log(await json(await fetch(`${API}/v1/billing/crypto/deposit`, { method: 'POST', headers: key, body: JSON.stringify({ chain: 'base', token: 'usdc', amountCents: 500 }) })))
x402 กำลังมา และยังไม่มาถึง
พ้นจากการเติมเงิน รูปที่เหมาะกับเอเจนต์คือจ่ายต่อคำขอ เซิร์ฟเวอร์ตอบ 402 Payment Required พร้อมราคา ไคลเอนต์จ่ายแล้วลองใหม่ นั่นคือ x402 มันยังไม่ทำงานบน API ของเรา: ยังไม่มีเอนด์พอยต์ของ Hanzo บอกราคาแบบนั้น ผมจึงไม่ขออ้าง จนกว่าจะเป็นเช่นนั้น ยอดที่เติมผ่าน API คือวิธีที่เอเจนต์จ่ายให้เรา
ทำไมข้อผิดพลาดของโปรแกรมเก็บข้อมูลที่เป็นศูนย์จึงสำคัญ
ไม่มีอะไรในนี้ล้มดัง ๆ เอเจนต์ที่ตามลิงก์จากแผนผังเว็บของคุณไปเจอ 404 จะไม่เปิดตั๋ว มันเลือกผลลัพธ์ถัดไป จงถือข้อผิดพลาดของโปรแกรมเก็บข้อมูลแบบที่ร้านถือการเช็คเอาต์ที่พัง
ผมดึง 70 หน้าตัวอย่างชุดเดิมด้วยสายอักขระ user-agent ของ ClaudeBot แล้วอีกครั้งด้วยของ Googlebot ทุกหน้าตอบ 200 ทั้งสองครั้ง นี่เป็นตัวอย่าง ไม่ใช่การรับประกัน และสายอักขระ user-agent ไม่ใช่ที่อยู่ของโปรแกรมเก็บข้อมูลเอง ผมจึงแสดงให้คุณเห็นสิ่งที่โปรแกรมเก็บข้อมูลตัวจริงเห็นไม่ได้ ให้ทำแบบเดียวกันบนเว็บคุณ: ดึงแผนผังเว็บด้วยเอเจนต์ที่คุณเชิญ แล้วนับคำตอบที่ไม่ใช่ 200
เราเคยอยู่ที่นี่มาแล้ว
ผมเริ่มบริษัทนี้ในปี 2014 ในชื่อ Crowdstart และเราเปลี่ยนชื่อเป็น Hanzo ในปี 2016 ลูกค้ารายแรก SKULLY ระดม $1 million บน Indiegogo ในราว 45 ชั่วโมง ซึ่ง TechCrunch เรียกว่าแคมเปญที่ระดมทุนครบเร็วที่สุดบน Indiegogo เท่าที่ผมเห็น Hanzo เป็นคอมเมิร์ซที่เกิดมาพร้อม AI ตั้งแต่ต้น: วิเคราะห์ของเราเองก่อน แล้วจึงเป็นโมเดลที่เรียนรู้จากข้อมูลของบริษัทบนแพลตฟอร์ม ปี 2017 เราเข้าร่วม Techstars (บทความจากเดือนมิถุนายนปีนั้น) และสิ่งที่เราบอกว่ากำลังสร้างคือคอมเมิร์ซอัจฉริยะ
ปี 2020 Damon Motorcycles เปิดตัวที่ CES โดย Hanzo เป็นผู้รันแคมเปญ ใน 30 วันแพลตฟอร์มขายมอเตอร์ไซค์ได้ $8.4M จากค่าโฆษณา $15,532 ได้ผลตอบแทน 541:1 ผู้ชมถูกสร้างใหม่จากข้อมูลลูกค้าของเราทุก 12 ชั่วโมง และชุดโฆษณาที่ AI เขียนได้เรต Above Average บน Facebook ภายใน 36 ชั่วโมง ที่เหลืออยู่ในกรณีศึกษา
นั่นคือเครื่องจักรฝั่งขาย หาผู้ชมที่ซื้อและเขียนโฆษณา ฝั่งซื้อคือขั้นถัดไป วงรอบเดียวกันกำลังจะวิ่งจากอีกปลาย และธุรกิจของคุณจะถูกเครื่องจักรอ่านและจ่ายเงิน หรือถูกเครื่องจักรข้ามไป
ชี้เอเจนต์ของคุณไปที่ hanzo.ai/agents
อ่านต่อ

Hanzo Payments: Unified Payment Processing for Global Commerce
Launching Hanzo Payments — unified payment processing with intelligent routing, fraud detection, and multi-currency support.

Introducing the Hanzo Platform
Crowdstart evolves into Hanzo: a complete commerce platform for the modern era.

เราเตอร์คือรีจิสทรี
Hanzo Cloud ไม่มีไฟล์ OpenAPI ที่เช็คอินไว้ ตารางเส้นทางที่กำลังทำงานคือแหล่งที่มา ถูกฉายสามทาง และการทดสอบการสมนัยสองทางทำให้บิลด์ล้มถ้าภาพฉายใดเลื่อน 1,362 การดำเนินการบน 963 เส้นทาง สร้างต่อโปรเซสในเวลาที่มีคำขอ
