A tartalom scheduler — hogyan működik
A Nortinia Sales AI tartalom-scheduler modulja egyszerre két szerepet játszik: marketing automation a sales pipeline-hoz (cikkek, hírlevelek, sales-driven content), és infrastruktúra a Nortinia saját family-site cikkeinek publikálásához. Ezt a cikket, amit most olvasol, ugyanaz a pipeline tette ki — egy targetből, egy generálással, egy eval-átmeneten és egy publish HTTP POST-tal.
A target koncepció
Egy target egy konkrét célt definiál:
- URL — hová publikálunk (storefront
/api/blog/publishendpoint) - Auth — bearer token a fogadó panelnek
- Topics — milyen témákban generálunk (pl.
salesai,assistant,content) - Cadence — milyen gyakran (heti N cikk, vagy esemény-trigger)
- Locale — milyen nyelven (jelenleg HU/EN, jövő negyedévben DE/SK)
- Approval mode — auto-publish vagy manuális szerkesztői queue
- Brand voice — tone, tiltott kifejezések, kötelező CTA-k, persona
A target Postgres FORCE RLS alatt él, és minden generálás onnan indul. Egy tenantnek lehet több targetje (pl. nortinia.com + finance.netorigo.com + külön ügyfél site).
A pipeline szakaszai
- Trigger — időzítő (BullMQ cron) vagy esemény (új produkt-launch, új lead-segment, blog-cadence). A trigger kiválaszt egy target-et és egy topic-ot.
- Plan — az engine kap egy strukturált prompt-ot a target persona-jával és tone-jával, és visszaad egy cikk-vázlatot: cím, struktúra, kulcs-állítások, várt hossz.
- Generate — a vázlat alapján a teljes cikk megíródik. Egy hívás, egy modell. Nincs retry middle-of-generation: ha hibázik, eldobjuk és új job-ot indítunk.
- Eval — szigorú kapu (lásd külön Content Studio cikk). Hat dimenzió mentén pontoz. Ha nem megy át, vissza a generátorba — max 3 iteráció.
- Approval — auto módban azonnal megy; manuális módban a queue-ba kerül, és egy szerkesztő engedi vagy javítja.
- Publish — HTTP POST a fogadó panel
/api/blog/publishendpointjára, articleId alapján idempotens.
Idempotency keys
A scheduler központi szabálya: ugyanaz az articleId nem mehet ki kétszer. Ha a HTTP POST 2xx-szel jött vissza, lokálisan rögzítjük; ha a fogadó oldalon már létezik az articleId, 200-ral válaszol és nem duplikál.
Miért fontos: a retry policy 3 attempttel próbálkozik exponential backoff-fal (5s, 30s, 300s). Ha az első attempt sikerült de a hálózat megszakadt a response előtt, a 2. attempt nem akarja még egyszer publikálni. Az articleId a védőkorlát.
Retry policy és failure modes
Négy failure category:
- TRANSIENT (5xx, network timeout): retry up to 3x
- AUTH (401, 403): dead-letter queue, ops alarm — bearer token expired vagy revoked
- VALIDATION (400, schema mismatch): dead-letter queue, content team alarm — Zod validation failure a fogadó oldalon
- DUPLICATE (200 with
existed: true): logged, no action
A dead-letter queue heti review-n megy. A 2026 első félévében 23 dead-letter elem érkezett: 18 AUTH (egy ügyfél elfelejtette megújítani a tokenjét), 4 VALIDATION (új schema-mező, amit nem generáltunk), 1 ismeretlen (Cloudflare 522, eventually resolved).
Per-target konfiguráció — egy konkrét példa
Ez a cikk a következő target-tel készült:
{
"id": "01HX-NRT-SEED-TARGET-NORTINIA-SALESAI",
"url": "https://nortinia.com/api/blog/publish",
"topics": ["salesai"],
"cadence": "weekly-2",
"locale": "hu+en",
"approvalMode": "manual",
"brandVoice": "nortinia-technical-honest"
}
A nortinia-technical-honest brand voice rövid leírása: konkrét számokkal érvelünk, nem mondunk "forradalmi" vagy "diszruptív" jelzőket, jelezzük amit nem tudunk vagy nem építettünk meg, és minden cikkben legalább egy hibát beismerünk amit elkövettünk.
Mit nem csinál a scheduler
- Nem küld emailt közvetlenül — az külön newsletter pipeline
- Nem ad ki social poszt-t — a content-scheduler csak blog-cikket publikál; a social poszt-rendszer (LinkedIn, X) egy másik modul, és a generált cikkből származtatott rövid változatot küld
- Nem optimalizál SEO-t auto-mode-ban — SEO-kulcsszó-targeting külön feature, csak ha a target explicit kéri
Számok hat hónap után
- 2 847 cikk publikálva 14 design partner tenant alatt
- 67% first-iteration eval pass rate
- 12 perc átlagos teljes pipeline-idő (target read → publish HTTP 200)
- 0,31 USD átlagos modell-költség cikkenként
- 23 dead-letter elem, mindegyik retroaktívan feldolgozva
Mit építünk most
- Article versioning — minden iteráció trace-elhető legyen, hogy a tenant lássa miért bukott meg az eval első körben
- In-line szerkesztés a manuális queue-ban — most kódból vagy külön UI-ban editálunk, ezt 2 hetes UX-fókusz lesz
- Cross-target tanulás — két hasonló iparágú target közös tanulás-bankba meríthet, de a privacy oldal nem trivális (egy tenant tartalom-mintáját nem akarjuk másnak átadni). Halasztva.
A scheduler önmagát is dokumentálja: ez a cikk létezik, te olvasod, tehát működik.