Hubungkan ke Hermes Agent
Kanzen Ads nyambung ke NousResearch hermes-agent sebagai sumber belajar dan produksi konten lewat MCP (Model Context Protocol). Agent yang jalanin panggilan Meta Marketing API-nya sendiri — Kanzen Ads gak pernah nyentuh Meta atas nama agent.
Kanzen Ads itu apa buat si agent
Kanzen Ads bukan driver Meta buat agent. Ini permukaan produksi konten:
- Permukaan produksi konten. Agent bikin produk di Kanzen Ads, generate gambar/video buat produk itu, poll sampai medianya siap, terus ambil URL file hasilnya dan upload sendiri ke Meta pakai tools dan kredensial Meta miliknya sendiri.
Pembagian tanggung jawab
Install / hubungkan
Unduh file client-nya, arahin ke deployment Kanzen Ads lo, terus daftarin lewat CLI agent.
Unduh file client MCP
Kanzen Ads jalan sebagai satu server Python FastMCP (transport stdio) yang isinya semua tools produksi-konten, knowledge, dan CEP. Unduh dari domain Kanzen Ads lo:
curl -O https://kanzenads.com/api/mcp/hsl_mcp.py
Set kredensial
Script-nya baca dua environment variable: API key dan base URL deployment Kanzen Ads lo.
export HERMES_API_KEY="hsk_your_key" export AIBUDDY_GEN_URL="https://kanzenads.com"
Bikin key berprefix hsk_ dari Hermes Settings (/hermes-settings) → “Generate Token Hermes” (liat Authentication).
Daftarin ke agent
Daftarin tool-nya ke CLI agent Hermes:
hermes mcp add hsl --command "python hsl_mcp.py"
Setelah connect, tools-nya muncul ke agent di bawah namespace mcp_hsl_*.
Tools MCP-nya
Empat keluarga: system, produksi-konten, knowledge, dan CEP.
mcp_hsl_ping dulu kalau ragu Kanzen API-nya hidup — ini cek ringan, read-only (nebeng endpoint credits), sebelum submit job generate yang mahal.| Tool | Keluarga | Fungsi |
|---|---|---|
mcp_hsl_ping | Sistem | Cek Kanzen API hidup dan responsif sebelum submit generate_image()/generate_video() atau tool lain. Ringan — cuma baca credits, gak ngubah state apa pun. |
mcp_hsl_check_credits | Sistem | Cek sisa saldo kredit sebelum generate, supaya nol kehabisan di tengah pekerjaan. |
mcp_hsl_get_meta_marketing_guide | Sistem | Ambil panduan Meta Marketing API (markdown mentah) yang dibawa server MCP ini — materi referensi, bukan panggilan data Kanzen Ads. |
mcp_hsl_create_product | Konten | Daftarin produk biar media hasil generate bisa ditempelin ke situ dan dipakai ulang. |
mcp_hsl_list_products | Konten | Daftar produk milik pemakai kunci ini, beserta jumlah media dan foto referensinya. |
mcp_hsl_get_product | Konten | Rincian satu produk menurut id-nya, termasuk data yang dipakai saat menyusun materi. |
mcp_hsl_rename_product | Konten | Ganti nama produk milik sendiri. Cuma field name yang bisa diubah lewat endpoint ini. |
mcp_hsl_add_product_reference | Konten | Tambah foto referensi ke sebuah produk lewat fileUrl atau mediaAssetId, beserta label. |
mcp_hsl_list_product_photos | Konten | List foto referensi aktif sebuah produk (id, label, url, isPrimary). Lebih ringan dari get_product() kalau cuma butuh daftar fotonya. |
mcp_hsl_list_characters | Konten | List character milik lo sendiri (id + name) buat dipakai sebagai character_id di generate_image()/generate_video() biar tampilannya konsisten. |
mcp_hsl_generate_image | Konten | Submit job generate gambar (async) buat sebuah produk (dan/atau character), opsional pakai foto referensi (photo_reference_ids, character_id, mask_url) buat image-to-image. |
mcp_hsl_generate_video | Konten | Submit job generate video (async) yang gabungin character dan produk jadi satu scene. |
mcp_hsl_get_media | Konten | Poll status job generate sampai completed; balikin URL file-nya. |
mcp_hsl_list_media | Konten | List media hasil generate lo (gambar + video), yang terbaru duluan — bisa difilter per tipe. |
mcp_hsl_download_media | Konten | Ambil URL download eksplisit buat media yang udah completed. get_media() sebenernya udah balikin lewat videoUrl, jadi ini dipakai cuma kalau butuh response download yang khusus. |
mcp_hsl_attach_media | Konten | Lekatkan satu media hasil generate ke sebuah produk lewat generatedMediaId — media yang dilekatkan aman dari pembersihan retensi. |
mcp_hsl_search_knowledge | Knowledge | Cari bebas-teks di knowledge campaign yang tersimpan di Kanzen Ads. |
mcp_hsl_get_campaign_history | Knowledge | Riwayat hasil kampanye yang sudah pernah jalan — dipakai buat belajar dari yang sudah terjadi, bukan menebak. |
mcp_hsl_get_winning_patterns | Knowledge | Pola iklan yang terbukti menang, diperingkat menurut hasil kampanye nyata. |
mcp_hsl_create_cep | CEP | Submit CEP baru (Customer Entry Point / angle) buat produk atau topik yang ada di scope. |
mcp_hsl_list_ceps | CEP | List CEP aktif yang udah ada buat sebuah produk/topik, buat dicek dulu sebelum submit yang baru. |
mcp_hsl_delete_cep | CEP | Hapus CEP milik lo sendiri — owner-scoped, cuma CEP kepunyaan lo yang bisa dihapus. |
Bikin CEP di produk
CEP (Customer Entry Point) itu potongan intelijen copy/angle singkat — pain point-nya dan angle yang disaranin — yang ditempelin ke sebuah produk atau topik. Pakai ini buat nyerahin hasil riset agent sendiri balik ke Kanzen Ads sebagai input kreatif, sebelum generate gambar/video dari situ.
GET sebelum submit — ini nyegah numpuknya CEP yang hampir-duplikat buat produk/topik yang sama.| Field | Wajib | Catatan |
|---|---|---|
cepText | Ya | Isi CEP-nya sendiri. |
topicId / productId | Salah satu dari dua | Wajib tepat satu target — CEP harus di-scope ke sebuah produk atau topik. |
painPoint | Tidak | Label singkat buat pain point yang mendasarinya. |
angle | Tidak | Angle kreatif yang disaranin CEP ini. |
notes | Tidak | Catatan bebas-teks. |
curl -X POST https://<your-hsl-domain>/api/hermes/ceps \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"cepText": "Kulit kusam bikin gak pede difoto",
"productId": "<PRODUCT_ID>",
"painPoint": "kulit kusam",
"angle": "before/after glow-up"
}'{
"cep": {
"id": "<CEP_ID>",
"cepText": "Kulit kusam bikin gak pede difoto",
"painPoint": "kulit kusam",
"angle": "before/after glow-up",
"status": "active",
"productId": "<PRODUCT_ID>",
"createdAt": "2026-01-01T00:00:00.000Z"
},
"message": "CEP created and active"
}Liat apa yang udah ada buat sebuah produk pakai GET /api/hermes/ceps?productId=<id> (atau ?topicId=<id>), header Authorization yang sama.
Scope + rate limit
topicId/productId harus dimiliki (owned) oleh pemakai kunci API ini — target di luar kepemilikan lo bakal balikin 403 Forbidden. Submission dibatasi rate-nya sampai 30 request/menit (429 kalau kelewat).Batas: 30 CEP aktif per produk/topik
30 CEP aktif. Kalau udah kena batas, create bakal balikin 409 tanpa bikin apa pun, plus array existing berisi CEP existing produk/topik itu (yang paling lama duluan) — hapus salah satu pakai delete_cep(id) dari daftar itu, terus coba lagi.Generate → masuk Media Library produk
POST /api/gen/image dan POST /api/gen/video sama-sama nerima productId opsional di request body. Kalau diisi, begitu job generate-nya selesai, gambar/video hasilnya otomatis ditempelin ke media library produk itu — gak ada langkah simpan terpisah.
curl -X POST https://<your-hsl-domain>/api/gen/image \
-H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Produk skincare di atas meja kayu, natural light",
"productId": "<PRODUCT_ID>",
"size": "3:2",
"n": 1
}'Belum set productId waktu submit (atau asset-nya di-generate di tempat lain)? Tempelin belakangan aja — liat mcp_hsl_attach_media / POST /api/gen/products/<id>/attach pakai generatedMediaId yang udah completed.
Liat semua yang udah lo generate (yang nempel ke produk atau nggak) pakai GET /api/gen/media — hasilnya di-scope ke akun lo sendiri.
Scope
productId harus dimiliki (owned) oleh pemakai kunci API ini, sama kayak CEP di atas — di luar kepemilikan balikin 403 Forbidden.Loop produksi konten
Agent yang nyetir loop ini end-to-end; Kanzen Ads cuma produksi dan nyimpen kreatifnya. Agent yang ngomong ke Meta.
Bikin atau pilih produk
Panggil mcp_hsl_create_product (atau pakai ulang product id yang udah ada) biar kreatif hasil generate ada tempat nempel dan gampang ditemuin lagi nanti.
Generate kreatifnya
Panggil mcp_hsl_generate_image buat kreatif statis, atau mcp_hsl_generate_video buat gabungin character dengan produk jadi satu video (misal character lagi pegang/pakai produknya). Dua-duanya async — langsung balikin job id.
Poll sampai selesai
Panggil mcp_hsl_get_media pakai job id sampai status jadi completed (atau failed/stalled). Begitu selesai, medianya otomatis ketempel ke produk sebagai kreatif yang bisa dipakai ulang — gak ada langkah simpan terpisah.
Ambil file-nya dan upload ke Meta
Agent baca fileUrl dari job yang udah selesai dan upload ke Meta sendiri, pakai tools dan kredensial Meta Marketing API-nya sendiri — Kanzen Ads gak ada di jalur ini.
Skills tap (prosedur)
Tools MCP di atas itu kapabilitasnya. Kanzen Ads juga nyediain skills tap — sekumpulan prosedur SKILL.md yang ngajarin agent kapan dan gimana cara gabungin tools-tools itu buat sebuah task pertumbuhan, terus serahin ke Meta. Skills cuma muncul kalau toolset Kanzen Ads udah connect (dia deklarasiin requires_toolsets: [hsl]).
Skills-nya ada di repo ini di bawah hermes-skills/skills/, jadi tambahin tap-nya pakai override path:
# add the tap (skills are under hermes-skills/skills, not repo-root skills/) hermes skills tap add boysoutheast/kanzen-ads # → then set "path": "hermes-skills/skills" for this tap in ~/.hermes/.hub/taps.json hermes skills install boysoutheast/kanzen-ads/produce-product-creative hermes skills install boysoutheast/kanzen-ads/learn-before-launch hermes skills install boysoutheast/kanzen-ads/scale-a-winner hermes skills install boysoutheast/kanzen-ads/top-up-creatives hermes skills install boysoutheast/kanzen-ads/pause-underperformer
| Skill | Yang diajarin |
|---|---|
learn-before-launch | Landasin launch baru pakai knowledge Kanzen Ads + riwayat terverifikasi sebelum nyentuh Meta. |
scale-a-winner | Baca pola pemenang terverifikasi, percaya yang recent-and-verified ketimbang stale-and-claimed, baru scale sendiri di Meta. |
top-up-creatives | Produksi kreatif character+produk yang fresh di Kanzen Ads, terus upload dan bikin sendiri ad baru di Meta. |
pause-underperformer | Baca drift claimed-vs-observed yang terverifikasi, terus pause sendiri yang kalah di Meta. |
produce-product-creative | Prosedur produksi-kreatif end-to-end (gambar atau video character+produk). |
Memory provider (opsional)
Buat integrasi yang lebih dalam, Kanzen Ads jalan sebagai memory provider native hermes-agent — Kanzen Ads jadi backend memory performa-terverifikasi milik agent. Otomatis nyuntikin blok recall sebelum tiap turn dan nambahin tools hsl_recall. Plugin-nya ada di plugins/hermes-memory-hsl/ (Python stdlib doang).
# drop-in install cp -r plugins/hermes-memory-hsl ~/.hermes/plugins/hermes-memory-hsl export HSL_API_KEY="hsk_your_key" export HSL_API_BASE="https://kanzenads.com" # optional, this is the default hermes memory setup # select "hsl"
Skills tap dan memory provider itu saling melengkapi: tap ngasih agent prosedur, provider-nya ngasih recall ambient. Pakai salah satu atau dua-duanya — dua-duanya tetep nyerahin eksekusi Meta sepenuhnya ke agent.