Kanalas Custom neskelbia jokiame socialiniame tinkle. Jis kiekvieną suplanuotą įrašą JSON formatu išsiunčia į jūsų valdomą URL, o tolesnis veiksmas priklauso nuo jūsų kodo.
Naudokite jį CMS, prie kurios Ocoya neprisijungia, statinių svetainių generatoriui, vidinei peržiūros eilei ar bet kam, ką verčiau susikursite patys, nei lauksite.
Galinio taško prijungimas

Prijungimo forma. Skydelis šalia laukų yra atsakymo sutartis: 2xx ir adresas, į kurį reikia nurodyti nuorodą.
Atidarykite Channels
Kairiojoje šoninėje juostoje pasirinkite Channels, tada Connect channel.
Pasirinkite Custom
Skydelyje Add a connection pasirinkite Custom.
Pavadinkite
Suteikite pavadinimą, kurį atpažinsite kanalų sąraše, pavyzdžiui, My blog. Tai tik etiketė.
Įveskite publikavimo URL
Visas URL kartu su schema: https://example.com/hooks/content. Jis turi būti pasiekiamas iš Ocoya serverių, todėl adresas jūsų kompiuteryje ar privačiame tinkle neveiks.
Jei jūsų svetainė nukreipia, pavyzdžiui, example.com į www.example.com arba http į https, tinka bet kuri forma. Ocoya seka nukreipimą, naująjį adresą patikrinusi taip pat, kaip ir pirmąjį.
Pasirinktinai pridėkite ištrynimo URL
Skiltyje Advanced options. Tai antras adresas, naudojamas, kai įrašas ištrinamas Ocoya: https://example.com/hooks/content/delete. Palikus tuščią, ištrynus įrašą Ocoya jis lieka ten, kur buvo paskelbtas.
Jis turi skirtis nuo aukščiau nurodyto URL. Jūsų publikavimo galinis taškas per POST ką nors sukuria; jei ištrynimas eitų į tą pačią vietą, bet kuris gavėjas, netikrinantis įvykio pavadinimo, sukurtų antrą kopiją.
Pasirinktinai pridėkite antraštes
Taip pat skiltyje Advanced options. Dauguma galinių taškų prieš priimdami užklausą nori žinoti, kad ji jūsų: pridėkite Authorization su reikšme Bearer your-token arba bet kokią antraštę, kurią tikrina jūsų gavėjas. Kiekviena antraštė siunčiama su kiekviena užklausa, į abu URL.
Be įgaliojimo antraštės vienintelis kredencialas yra pats URL: bet kas, sužinojęs jį, gali siųsti įrašus į jūsų galinį tašką. Pridėkite antraštę arba bent jau naudokite ilgą, sunkiai atspėjamą kelią.
Antraščių reikšmės saugomos taip, kaip saugomi kredencialai, ir niekada nesiunčiamos atgal į naršyklę, todėl prijungimo formoje skiltis Headers visada rodoma tuščia, net jei paskirtis jų turi. Pakartotinai prijungus tą patį URL, visas rinkinys pakeičiamas, todėl iš naujo įveskite kiekvieną antraštę, kurią norite išlaikyti.
Ką gauna jūsų galinis taškas
POST užklausą su Content-Type: application/json. Joje yra tai, ko reikia tinklaraščiui, ir nieko daugiau:
{
"event": "post.published",
"publishedAt": "2026-09-17T09:00:00.000Z",
"post": {
"id": "clx…",
"title": "Three labels, one warmer palette",
"caption": "Testing a softer set of creams…",
"image": "https://…/image.jpg"
}
}| Laukas | Kas tai |
|---|---|
post.id | Ocoya šio įrašo id. Jis nesikeičia, jei pristatymas kartojamas, todėl pagal jį atnaujinkite, o ne skelbkite antrą kopiją |
post.title | Pavadinimas arba null, jei nenustatytas |
post.caption | Tekstas tiksliai toks, kaip parašytas. Markdown, jei rašėte Markdown |
post.image | Pirmasis įrašo vaizdas kaip URL, kurį reikia atsisiųsti: atsisiųskite, o ne įterpkite tiesioginę nuorodą. null, jei vaizdo nėra. Vaizdo įrašai nesiunčiami |
post.options | Straipsnio laukai, jei įrašas jų turi. Išvardyti žemiau |
Kas yra post.options viduje
Šių laukų turi tik straipsnis, parašytas tinklaraščio kampanijos. Ranka paskelbtas įrašas jų neturi, o options visai nesiunčiamas. Kiekvieną lauką laikykite neprivalomu.
| Laukas | Tipas | Kas tai |
|---|---|---|
markdownMode | boolean | true, kai post.caption yra Markdown. Atitinkamai jį atvaizduokite |
slug | string | Iš pavadinimo gautas URL tinkamas slug, pavyzdžiui, why-your-content-is-not-converting. Naudokite arba ignoruokite |
excerpt | string | Vieno ar dviejų sakinių santrauka kortelei ar srautui |
seoTitle | string | Iki 70 simbolių, skirta <title> |
seoDescription | string | Iki 200 simbolių, skirta <meta name="description"> |
tags | string[] | Straipsnio žymos. Paprastai viena |
readingMinutes | number | Apskaičiuojama pagal galutinį tekstą |
Straipsnis atkeliauja taip:
{
"event": "post.published",
"publishedAt": "2026-09-22T09:00:00.000Z",
"post": {
"id": "clx…",
"title": "Why your content is not converting",
"caption": "You're posting every day and still refreshing an empty inbox.\n\n## The three pillars\n\n- A clear offer, repeated\n- One place to send people\n",
"image": "https://…/cover.png",
"options": {
"markdownMode": true,
"slug": "why-your-content-is-not-converting",
"excerpt": "Volume is rarely the problem. Nothing you publish asks anybody to do anything.",
"seoTitle": "Why your content is not converting",
"seoDescription": "Volume is rarely the problem. Here is the system that fixes it.",
"tags": ["content-marketing"],
"readingMinutes": 7
}
}
}Kai markdownMode yra true, post.caption yra Markdown. Jį paskelbus neatvaizdavus, jūsų svetainėje atsiras ## The three pillars tiksliai taip, kaip įvesta, ir būtent taip tai atrodys.
Reikia kažko, ko čia nėra? Parašykite mums. Laukai pridedami, kai jų prireikia gavėjui, o ne siunčiami tiesiog visa ko atvejui.
Įrašo ištrynimas
Ištrynus įrašą Ocoya, jis ištrinamas socialiniuose tinkluose, į kuriuos buvo paskelbtas. Custom paskirtis yra jūsų sistema, todėl Ocoya gali tik pranešti jai: tai daroma siunčiant POST į delete URL, jei jį nurodėte.
Turinys yra vėl tas pats paskelbtas įrašas su trimis papildymais: įvykio pavadinimu, laiko žymomis ir vieninteliu jums reikalingu lauku: id, kurį jūsų galinis taškas grąžino skelbdamas.
{
"event": "post.deleted",
"id": "9f2c1a",
"publishedAt": "2026-09-22T09:00:00.000Z",
"deletedAt": "2026-09-28T14:12:00.000Z",
"post": {
"id": "clx…",
"title": "Why your content is not converting",
"caption": "…",
"image": null,
"options": { "slug": "why-your-content-is-not-converting" }
}
}Trinkite pagal id: identifikatorių, kurį jūsų galinis taškas grąžino skelbdamas. Jis grąžinamas tiesiai viršutiniame lygyje, todėl nieko nereikia išskirti iš adreso. Jūsų grąžintas url nesiunčiamas: galinis taškas, trinantis pagal savo id, nenaudoja adreso, kurį ir taip žino.
Jei delete URL nesukonfigūruotas, nieko nesiunčiama. Įrašas ištrinamas Ocoya, o kanalas praneša, kad jo kopija vis dar paskelbta, užuot tyliai nieko nedaręs.
Atsakykite bet kuriuo 2xx, kaip ir skelbiant. Jei įrašo jūsų pusėje jau nebėra, atsakykite 404 arba 410, ir Ocoya užregistruos jį kaip jau ištrintą, o ne kaip nesėkmę. Bet koks kitas atsakas pažymimas prie įrašo, o įrašas Ocoya vis tiek ištrinamas: paskirtis, kuri atsisako, niekada nėra priežastis palikti įrašą, kurį paprašėte ištrinti.
Ko Ocoya tikisi atgal
Atsakykite bet kuria 2xx būsena. Bet kas kita užregistruojama kaip nepavykęs publikavimas, o būsena ir atsakymo turinys rodomi prie įrašo, kad matytumėte, ką pasakė jūsų galinis taškas.
Grąžinkite id ir url
Jūsų galinis taškas turi atsakyti abiem, JSON formatu:
{
"id": "9f2c1a",
"url": "https://yourblog.com/post"
}| Laukas | Kas tai | Ką su juo daro Ocoya |
|---|---|---|
id | Jūsų pačių identifikatorius to, ką ką tik sukūrėte: eilutės id, dokumento id | Siunčia jį atgal į jūsų delete URL kaip id. Pagal jį trinate. |
url | Adresas, į kurį paskelbėte | Tampa įrašo nuoroda View post |
Reikalingi abu. 2xx be jų užregistruojamas kaip nepavykęs publikavimas, o pranešime prie įrašo tai pasakoma, įskaitant tai, kad turinys jūsų paskirtyje gali jau egzistuoti, todėl skelbiant iš naujo aklai būtų sukurta antra kopija.
Adresui skaitomas tik raktas url: ankstesnėse versijose permalink buvo priimamas kaip sinonimas, o dabar nebe.
Grąžinkite abu tame pačiame atsakyme. Ocoya juos perskaito vieną kartą, kai jūsų galinis taškas atsako; vėliau jų atsiųsti nėra kaip, todėl galinis taškas, kuris darbą deda į eilę, savo id ir galutinį adresą turi žinoti prieš atsakydamas, o ne po to.
Jūsų galinis taškas turi 30 sekundžių atsakyti. Lėtą darbą atlikite po atsakymo, o ne prieš: patvirtinkite užklausą, tada ją apdorokite.
Nukreipimas yra sekamas, o ne laikomas nesėkme, jei adresas, į kurį jis veda, pereina tą pačią patikrą kaip ir originalas: yra viešai pasiekiamas ir susietas su tuo, į ką išsprendžiamas. Metodas išsaugomas, todėl jūsų galinis taškas vis tiek gauna POST su turiniu. Ribojama trimis šuoliais.
Limitai
| Pavadinimas | 300 simbolių |
| Tekstas | 200 000 simbolių |
| Medija | 20 elementų |
| Skirtasis laikas | 30 sekundžių |
| Antraštės | Iki 10, reikšmės iki 2 000 simbolių |
Už webhook nestovi joks tiekėjas, todėl nėra su kuo realiai patikrinti: gaunančioji pusė jūsų, ir jūs sprendžiate, ką ji priima. Tai apsauginės ribos, o ne griežti apribojimai: pakankamai plačios ilgam straipsniui su medija, bet pakankamai siauros, kad pasiklydusi generacija būtų sustabdyta kūrimo lange, o ne jūsų galiniame taške.
Dažnos problemos
„A destination URL must start with http:// or https://.“ URL neturi schemos. Įrašykite ją.
„”Content-Type” is set by Ocoya and cannot be overridden.“ Kai kurios antraštės apibūdina pačią užklausą, o ne autentifikuoja: turinio antraštės, Host, Connection, Transfer-Encoding. Jas nustato Ocoya, todėl jūsų antraštės jų pakeisti negali.
„”…” is not a valid header name.“ Antraštės pavadinimą sudaro raidės, skaitmenys ir brūkšneliai. Tarpas ar dvitaškis pavadinimo lauke dažniausiai reiškia, kad į jį įklijuota visa eilutė Name: value: pavadinimas rašomas kairiajame lauke, reikšmė dešiniajame.
„That is not a valid URL.“ Adreso nepavyko perskaityti. Patikrinkite, ar nėra rašybos klaidų ir pašalinių tarpų.
„Your endpoint could not be reached. Check the URL is correct and publicly accessible.“ DNS neišsprendė arba ryšys buvo atmestas. Galinis taškas localhost ar privačiame tinkle iš Ocoya nepasiekiamas.
„Your endpoint answered 200 but did not return id or url.“ Užklausa pasiekė jūsų galinį tašką ir jis ją priėmė, bet atsakyme trūko vieno ar abiejų privalomų laukų. Ocoya tai užregistruoja kaip nepavykusį publikavimą, nes be id vėliau nebus pagal ką trinti.
Atkreipkite dėmesį, kad turinys jūsų paskirtyje gali jau egzistuoti: galinis taškas atsakė sėkmingai. Prieš skelbdami iš naujo patikrinkite, kitaip turėsite dvi kopijas.
„This destination has no delete endpoint.“ Įrašas buvo ištrintas Ocoya, o šiam kanalui nėra delete URL, todėl nieko nesiųsta ir kopija jūsų paskirtyje vis dar yra. Norėdami tai pakeisti, iš naujo prijunkite paskirtį su delete URL.
„Your endpoint did not respond in time.“ Atsakymas užtruko ilgiau nei 30 sekundžių. Pirmiausia patvirtinkite, apdorokite vėliau.
„Your endpoint redirected to https://…“ Nukreipimas išėjo už jūsų nurodyto adreso: į kitą hostą arba kitą schemą, kurios Ocoya negalėjo pakartotinai patikrinti, arba į adresą, išsprendžiamą privačiai. Naudokite adresą, kuris atsako tiesiogiai. Nukreipimas, likęs viešai pasiekiamame adrese, sekamas už jus iki trijų šuolių.
„Your endpoint returned 500: …“ Jūsų kodas sukėlė klaidą. Informacija po būsenos yra tai, ką atsiuntė jūsų galinis taškas, sutrumpinta.