Kanzen Ads Docs
IntroductionQuickstartAuthentication
Connect to Hermes Agent
Payments / Top-up
Overview & CreditsGenerate ImageGenerate VideoRetrieve Media
Top Up Campaign AdsCharacter + Product Video
Errors & LimitsAPI ReferenceMeta Marketing API Guide

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

Kanzen Ads: produksi kreatif, inget apa yang berhasil. Agent: mutusin, upload, launch, dan kelola semuanya di Meta. Kanzen Ads gak pernah manggil Meta Marketing API atas nama user.

Install / hubungkan

Unduh file client-nya, arahin ke deployment Kanzen Ads lo, terus daftarin lewat CLI agent.

1

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:

download
curl -O https://kanzenads.com/api/mcp/hsl_mcp.py
2

Set kredensial

Script-nya baca dua environment variable: API key dan base URL deployment Kanzen Ads lo.

env vars
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).

3

Daftarin ke agent

Daftarin tool-nya ke CLI agent Hermes:

hermes mcp add
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.

ℹ️
Panggil mcp_hsl_ping dulu kalau ragu Kanzen API-nya hidup — ini cek ringan, read-only (nebeng endpoint credits), sebelum submit job generate yang mahal.
ToolKeluargaFungsi
mcp_hsl_pingSistemCek 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_creditsSistemCek sisa saldo kredit sebelum generate, supaya nol kehabisan di tengah pekerjaan.
mcp_hsl_get_meta_marketing_guideSistemAmbil panduan Meta Marketing API (markdown mentah) yang dibawa server MCP ini — materi referensi, bukan panggilan data Kanzen Ads.
mcp_hsl_create_productKontenDaftarin produk biar media hasil generate bisa ditempelin ke situ dan dipakai ulang.
mcp_hsl_list_productsKontenDaftar produk milik pemakai kunci ini, beserta jumlah media dan foto referensinya.
mcp_hsl_get_productKontenRincian satu produk menurut id-nya, termasuk data yang dipakai saat menyusun materi.
mcp_hsl_rename_productKontenGanti nama produk milik sendiri. Cuma field name yang bisa diubah lewat endpoint ini.
mcp_hsl_add_product_referenceKontenTambah foto referensi ke sebuah produk lewat fileUrl atau mediaAssetId, beserta label.
mcp_hsl_list_product_photosKontenList foto referensi aktif sebuah produk (id, label, url, isPrimary). Lebih ringan dari get_product() kalau cuma butuh daftar fotonya.
mcp_hsl_list_charactersKontenList character milik lo sendiri (id + name) buat dipakai sebagai character_id di generate_image()/generate_video() biar tampilannya konsisten.
mcp_hsl_generate_imageKontenSubmit 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_videoKontenSubmit job generate video (async) yang gabungin character dan produk jadi satu scene.
mcp_hsl_get_mediaKontenPoll status job generate sampai completed; balikin URL file-nya.
mcp_hsl_list_mediaKontenList media hasil generate lo (gambar + video), yang terbaru duluan — bisa difilter per tipe.
mcp_hsl_download_mediaKontenAmbil 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_mediaKontenLekatkan satu media hasil generate ke sebuah produk lewat generatedMediaId — media yang dilekatkan aman dari pembersihan retensi.
mcp_hsl_search_knowledgeKnowledgeCari bebas-teks di knowledge campaign yang tersimpan di Kanzen Ads.
mcp_hsl_get_campaign_historyKnowledgeRiwayat hasil kampanye yang sudah pernah jalan — dipakai buat belajar dari yang sudah terjadi, bukan menebak.
mcp_hsl_get_winning_patternsKnowledgePola iklan yang terbukti menang, diperingkat menurut hasil kampanye nyata.
mcp_hsl_create_cepCEPSubmit CEP baru (Customer Entry Point / angle) buat produk atau topik yang ada di scope.
mcp_hsl_list_cepsCEPList CEP aktif yang udah ada buat sebuah produk/topik, buat dicek dulu sebelum submit yang baru.
mcp_hsl_delete_cepCEPHapus 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.

ℹ️
Cek dulu pakai panggilan list GET sebelum submit — ini nyegah numpuknya CEP yang hampir-duplikat buat produk/topik yang sama.
FieldWajibCatatan
cepTextYaIsi CEP-nya sendiri.
topicId / productIdSalah satu dari duaWajib tepat satu target — CEP harus di-scope ke sebuah produk atau topik.
painPointTidakLabel singkat buat pain point yang mendasarinya.
angleTidakAngle kreatif yang disaranin CEP ini.
notesTidakCatatan bebas-teks.
POST /api/hermes/ceps
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"
  }'
201 response
{
  "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

Tiap produk/topik maksimal nampung 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.

POST /api/gen/image with productId
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.

1

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.

2

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.

3

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.

4

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:

hermes skills
# 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
SkillYang diajarin
learn-before-launchLandasin launch baru pakai knowledge Kanzen Ads + riwayat terverifikasi sebelum nyentuh Meta.
scale-a-winnerBaca pola pemenang terverifikasi, percaya yang recent-and-verified ketimbang stale-and-claimed, baru scale sendiri di Meta.
top-up-creativesProduksi kreatif character+produk yang fresh di Kanzen Ads, terus upload dan bikin sendiri ad baru di Meta.
pause-underperformerBaca drift claimed-vs-observed yang terverifikasi, terus pause sendiri yang kalah di Meta.
produce-product-creativeProsedur 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).

install
# 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.

← AuthenticationPayments / Top-up →