Mitkä Twig-muuttujat ovat käytettävissä Nonlissa?

Smart Message -mallipohjat kirjoitetaan Twig 3:lla. Tällä sivulla luetellaan jokainen muuttuja, funktio ja suodatin, jonka Nonli tukee tässä kontekstissa, sekä niiden tyyppi, milloin ne voivat puuttua ja testattu esimerkki. Jos haluat luoda mallipohjan vaihe vaiheelta, aloita oppaasta Näin luot Smart Message -viestin.

1. Missä tämä konteksti on käytössä#

Sama konteksti on käytettävissä kahdessa paikassa:

  • Smart Message -mallipohjat, joita käyttävät botit, julkaisueditorin hehkulamppu-toiminto ja ensimmäisen kommentin painike. Niillä voi täyttää viestin, otsikon, kuvauksen, kommentin, videon otsikon, vaihtoehtoisen tekstin ja TikTokin ankkuriotsikon.
  • Smart Image -työkalun dynaamiset arvot, kun Smart Image -työkalun teksti tai väri käyttää lähteenään Smart Message -mallipohjaa. Silloin muuttuja context on 'smart_image'. Katso Näin käytät dynaamisia värejä Smart Image -työkalussa.

Dynaamiset URL-parametrit ja dynaaminen maksumuuri käyttävät myös Twigiä, mutta paljon suppeammalla kontekstilla: rajattu post (source, social_account, post_type, author, user_id, breaking_news, short_id), referer, funktio isComment() sekä laskurit ja persentiilit. organic, ylätason aliakset ja alla olevat Smart Message -funktiot eivät ole siellä käytettävissä.

2. Nimeämis- ja tyyppisäännöt#

  • Käytä mieluummin täysiä polkuja. Kirjoita organic.title tai post.social_account.type ylätason aliaksen sijaan. Aliakset ovat edelleen tuettuja olemassa olevissa mallipohjissa.
  • Nimet kirjoitetaan snake_case-muodossa ja noudattavat tallennettujen kenttien nimiä: canonical_url, published_at, open_graph.
  • Huomioi yksikkö ja monikko. Polut ovat organic.category, organic.tag ja organic.author; aliakset ovat tags ja authors. Väärä nimi, kuten categories, organic.categories, tag tai author, ei aiheuta virhettä vaan tuottaa tyhjän arvon.
  • Tyypit. Merkkijono on teksti. Lista on arvojen jono: testaa sitä in-operaattorilla, lue se |first- tai |join(', ')-suodattimella äläkä koskaan tulosta sitä suoraan. Objekti ryhmittelee muita polkuja. Sen lisäksi on lukuja, totuusarvoja ja päivämääriä. Päivämäärät ovat ISO 8601 -muotoisia UTC-merkkijonoja, kuten 2026-10-18T07:30:00.000Z; muotoile ne |date-suodattimella.
  • Puuttuminen. Arvo on olemassa vain, jos lähde tarjoaa sen. Se riippuu julkaisun alkuperästä (artikkeli, manuaalinen julkaisu, linkitön julkaisu), sosiaalisesta verkostosta, julkaisutyypistä ja metatiedoista, jotka kerääjä löysi sivulta. Puuttuva organic-polku tulostuu tyhjänä; tyhjä lista käsitellään puuttuvana.

Käytä ??-operaattoria puuttuvan tai null-arvon korvaamiseen ja ?:-operaattoria tai |default()-suodatinta, kun haluat korvata myös tyhjän merkkijonon:

LausekeArvo puuttuuArvo ''Arvo 'A'
{{ x ?? 'B' }}B(tyhjä)A
{{ x ?: 'B' }}BBA
{{ x|default('B') }}BBA

Käytä suodattimen jälkeen ?:-operaattoria tai |default()-suodatinta, älä koskaan ??-operaattoria: {{ x|upper ?? 'B' }} on syntaksivirhe, ja mallipohja hylätään tallennettaessa.

3. Ylätason muuttujat#

Nämä muuttujat on aina määritelty Smart Message -viestissä.

PolkuTyyppiSaatavuusKuvausEsimerkki
social_networkmerkkijonoAinaKohdetilin verkosto; facebook, kun se ei ole tiedossa.instagram
post_typemerkkijonoAinaJulkaisutyyppi; link, kun se ei ole tiedossa.photo
empty_messagemerkkijonoAinaTyhjä merkkijono, jolla palautetaan tarkoituksella ei mitään.''
shortlink_prefixmerkkijonoAinaBrändin teksti, joka sijoitetaan lyhytlinkin eteen.➡️
postobjektiAinaLuotava tai muokattava julkaisu (katso post.*).
organicobjektiAinaLähdeartikkeli (katso organic.*); tyhjä lista [], kun julkaisulla ei ole artikkelia.
contextmerkkijonoAinaKenttä, jota ollaan luomassa: message, title, description, comment, videoTitle, altText, tikTokAnchorTitle tai smart_image, kun Smart Image -työkalu renderöi mallipohjan.message

3.1. Vanhat aliakset#

Kun julkaisu tulee artikkelista, Nonli kopioi myös osan artikkelin kentistä ylätasolle. Nämä aliakset ovat määriteltyjä (mahdollisesti null), heti kun artikkeli on olemassa, ja määrittelemättömiä, kun julkaisulla ei ole artikkelia. Jokaisella on suositeltu täysi polku.

AliasSuositeltu täysi polkuTyyppiSisältö
titleorganic.titlemerkkijonoNonlin valitsema artikkelin otsikko
descriptionorganic.descriptionmerkkijonoNonlin valitsema artikkelin kuvaus
title1organic.html.h1merkkijonoSivun ensimmäinen H1-otsikko
title2organic.html.h2merkkijonoSivun ensimmäinen H2-otsikko
head_titleorganic.head.titlemerkkijonoHTML-tunniste title, usein pidempi SEO-otsikko
meta_descriptionorganic.meta.descriptionmerkkijonoSivun natiivi metakuvaus
og_titleorganic.meta.open_graph.titlemerkkijonoOpen Graph -otsikko
og_descriptionorganic.meta.open_graph.descriptionmerkkijonoOpen Graph -kuvaus
twitter_titleorganic.meta.twitter.titlemerkkijonoTwitter Card -otsikko
twitter_descriptionorganic.meta.twitter.descriptionmerkkijonoTwitter Card -kuvaus
meta_custom_facebook, meta_custom_twitter, meta_custom_instagram, meta_custom_linkedin, meta_custom_tiktok, meta_custom_pinterestorganic.meta.custom.facebook (ja niin edelleen)merkkijonoSivustokohtaisella säännöllä poimitut verkostokohtaiset mukautetut metatiedot
meta_custom_publisherorganic.meta.custom.publishermerkkijonoSivustokohtaisella säännöllä poimittu mukautettu julkaisijakenttä, esimerkiksi leipätekstin ensimmäinen kappale
meta_custom_rss_titleorganic.meta.custom.rss.titlemerkkijonoRSS-kohteen otsikko
meta_custom_rss_descriptionorganic.meta.custom.rss.descriptionmerkkijonoRSS-kohteen kuvaus
authorsorganic.authorlistaArtikkelin kirjoittajat
tagsorganic.taglistaArtikkelin tunnisteet

Todellisessa artikkelissa title ja title1 sisältävät usein saman otsikon, head_title sisältää pidemmän SEO-otsikon ja meta_description alkaa usein ingressillä. Mikä tahansa niistä voi olla tyhjä, joten suunnittele aina varavaihtoehto.

Editorin ja bottilähteiden ”Meta custom …” -vaihtoehdot vastaavat näitä meta_custom_*-aliaksia. Ne täytetään vain sivustoilla, joille Nonli on määrittänyt oman poimintasäännön. Yrityksesi ulkopuolisen sivuston artikkeli paljastaa vain julkiset kenttänsä, joten organic.counter.view puuttuu siltä.

4. [object Object],: lähdeartikkeli#

organic on olemassa, kun julkaisu tulee artikkelista (botti, editoriin liitetty URL, SDK, RSS). Manuaalisella julkaisulla tai linkittömällä julkaisulla ei ole artikkelia: silloin organic on tyhjä lista ja jokainen organic.*-polku on tyhjä.

PolkuTyyppiSaatavuusKuvausEsimerkki
organic.urlmerkkijonoJokaisessa artikkelissaArtikkelin URLhttps://www.example.com/politics/budget
organic.canonical_urlmerkkijonoKun määriteltyKanoninen URLhttps://www.example.com/politics/budget
organic.typemerkkijonoJokaisessa artikkelissaTunnistettu sisältötyyppiarticle
organic.languagemerkkijonoKun tunnistettuKielikoodifr
organic.titlemerkkijonoUseimmissa artikkeleissaNonlin valitsema otsikkoBudget 2027: what changes
organic.descriptionmerkkijonoKun löytyyNonlin valitsema kuvausThe government presents its budget.
organic.html.h1 / organic.html.h2merkkijonoKun onEnsimmäinen H1- / H2-otsikkoKey measures
organic.head.titlemerkkijonoKun onHTML-tunniste titleBudget 2027 - Example News
organic.meta.descriptionmerkkijonoKun onNatiivi metakuvausThe government presents its budget.
organic.meta.open_graph.title / .descriptionmerkkijonoKun onOpen Graph -otsikko / -kuvausBudget 2027
organic.meta.open_graph.article.sectionmerkkijonoKun onOpen Graph -kenttä article:sectionPolitics
organic.meta.twitter.title / .descriptionmerkkijonoKun onTwitter Card -otsikko / -kuvausBudget 2027
organic.meta.custom.*merkkijonoSivustokohtainen sääntöAliastaulukossa luetellut mukautetut kentät
organic.categorylistaKun löytyyNormalisoidut kategoriat, mukaan lukien JSON-LD-kenttä articleSection['politics', 'economy']
organic.taglistaKun löytyyArtikkelin tunnisteet['budget', 'taxes']
organic.authorlistaKun löytyyArtikkelin kirjoittajat['Camille Martin']
organic.imagelistaKun löytyySivulta löydettyjen kuvien URL-osoitteet['https://…/budget.jpg']
organic.image_altmerkkijonoKun löytyyPääkuvan vaihtoehtoinen tekstiThe National Assembly chamber
organic.published_atpäivämääräKun löytyyJulkaisupäivä (UTC)2026-10-18T07:30:00.000Z
organic.modified_atpäivämääräKun löytyyViimeisin muokkauspäivä (UTC)2026-10-18T09:00:00.000Z
organic.counter.viewlukuKatso laskuritNonlin mittaamat artikkelin katselukerrat1520

4.1. Kategoriat ja ,[object Object]#

Nonli tallentaa JSON-LD-arvon articleSection ja sivun muut kategoriasignaalit kenttään organic.category. Se on lista, ei teksti, eikä muuttujaa categories ole. Arvot normalisoidaan: pienet kirjaimet, aksentit poistetaan ja välimerkit muutetaan välilyönneiksi. Esimerkiksi Politique & Société, Économie ja Sports > Rugby muuttuvat muotoon politique societe, economie ja sports rugby. Vertaa aina omissa artikkeleissasi todella nähtyihin arvoihin.

twig
1{%- set categories = organic.category ?? [] -%}
2{%- if 'politique' in categories -%}
3Politics
4{%- endif -%}

Ensimmäinen kategoria tai ei mitään: {{ organic.category|default([])|first|default('') }}

Kaikki kategoriat: {{ organic.category|default([])|join(', ') }}

Raaka Open Graph -osio, jota ei ole normalisoitu, on edelleen käytettävissä muodossa {{ organic.meta.open_graph.article.section ?? '' }}.

5. [object Object],: julkaisu#

post kuvaa luotavaa tai muokattavaa julkaisua. Kentät täytetään vähitellen: kenttä, jota ollaan luomassa, on edelleen tyhjä sen oman mallipohjan renderöinnin aikana.

PolkuTyyppiSaatavuusKuvausEsimerkki
post.post_typemerkkijonoAinaJulkaisutyyppilink
post.messagemerkkijonoKun kirjoitettuNykyinen viestiThree ways to save energy.
post.titlemerkkijonoKun kirjoitettuNykyinen otsikkoBudget 2027
post.descriptionmerkkijonoKun kirjoitettuNykyinen kuvausWhat changes for households.
post.authormerkkijonoKun tiedossaJulkaisun sisällön tekijä (yksi teksti, ei lista)Camille Martin
post.taglistaKun tiedossaJulkaisun tunnisteet['budget']
post.languagemerkkijonoKun tiedossaKielikoodifr
post.target_urlmerkkijonoLinkkijulkaisutKohde-URLhttps://www.example.com/politics/budget
post.short_idmerkkijonoLyhentämisen jälkeenLyhytlinkin tunnisteaB3xY
post.social_account.typemerkkijonoAinaKohdeverkostolinkedin
post.social_account.namemerkkijonoAinaTilin nimiExample News
post.social_account.slugmerkkijonoAinaTilin slugexample-news
post.social_account.external_idmerkkijonoAinaTilin tunniste verkostossa1000000001
post.source.typemerkkijonoKun tiedossaJulkaisun alkuperä (botti, manuaalinen ja niin edelleen)bot
post.source.bot_titlemerkkijonoBottijulkaisutJulkaisun luoneen botin nimiPolitics bot
post.source.organic_urlmerkkijonoArtikkelijulkaisutLähdeartikkelin URLhttps://www.example.com/politics/budget
post.breaking_news.activetotuusarvoAinaUutiskatkos-tilafalse
post.schedule.start_datepäivämääräAjastetut julkaisutSuunniteltu julkaisupäivä (UTC)2026-10-19T06:00:00.000Z
post.published_atpäivämääräJulkaisun jälkeenJulkaisupäivä (UTC)2026-10-19T06:00:04.000Z
post.comment.messagemerkkijonoKun kirjoitettuEnsimmäisen kommentin tekstiRead more: [SHORTLINK]
post.counter.*lukuKatso laskuritJulkaisun suorituskyky42

Sisäiset tunnisteet ja tekniset kentät (käyttäjän, yrityksen ja brändin tunnukset, tilin sähköpostiosoite, webhook-URL, tilat, virhejäljet, raakalaskurit) on tarkoituksella jätetty pois: ne eivät ole vakaa julkinen rajapinta, eivätkä ne saa näkyä julkaistussa tekstissä. post.user_id on dokumentoitu vain URL-parametreja varten.

6. Laskurit ja persentiilit#

Laskuri ladataan vain, kun mallipohja nimeää sen nimenomaisesti, esimerkiksi post.counter.click. Se puuttuu, kun mittaria ei vielä ole, mikä on aina tilanne julkaisemattomalla julkaisulla. Kirjoita aina varavaihtoehto: {{ post.counter.click ?? 0 }}.

PolkuTyyppiKuvaus
post.counter.clicklukuKlikkaukset
post.counter.engagementlukuSitoutuminen
post.counter.reachlukuTavoittavuus
post.counter.videoViewslukuVideon katselukerrat
post.counter.ctrlukuKlikkausprosentti
post.counter.overperforminglukuYlisuoriutumispisteet
post.counter.monetizationlukuSisällön monetisoinnista saadut tulot
organic.counter.viewlukuArtikkelin katselukerrat (vain, kun julkaisulla on artikkeli)

Persentiilimuuttuja vertaa julkaisua saman tilin jakson aikana julkaisemiin julkaisuihin, uutiskatkokset pois lukien. Sen nimi on percentile + persentiili (1 tai 2 numeroa) + mittari + kesto (1 tai 2 numeroa) + yksikkö:

  • mittarit: Click, Engagement, Reach, VideoViews, Ctr, Overperforming, Monetization;
  • yksiköt: h tunti, d päivä, w viikko, m kuukausi, y vuosi.

percentile50Click1d on klikkausten mediaani 1 päivän ajalta; percentile90Engagement7d on sitoutumisen 90. persentiili 7 päivän ajalta. Arvo on null, jos dataa ei ole, ja se on välimuistissa 30 minuuttia.

twig
1{%- if (post.counter.engagement ?? 0) > (percentile50Engagement7d ?? 0) -%}TOP{%- else -%}NORMAL{%- endif -%}

7. Funktiot#

FunktioPalauttaaKuvaus
hasLink()totuusarvotrue, kun julkaisussa on linkki. Tarkista se, ennen kuin kirjoitat [SHORTLINK].
hasFirstCommentShortlink()totuusarvotrue, kun ensimmäinen kommentti sisältää jo [SHORTLINK]-merkinnän.
canPublishPostWithoutSpam()totuusarvotrue, kun tilin roskapostin esto -säännöt sallivat nyt uuden linkkijulkaisun.
canPublishCommentWithoutSpam()totuusarvoSama tarkistus linkin sisältävälle kommentille.
shouldAddComment(metric)totuusarvoSoveltaa määritettyä kommenttien otantasääntöä; valinnainen mittari nimeää käytettävän laskurin. Tulos voi vaihdella.
aiGenerated(source, min, target, max, ending, justCrop)merkkijonoTiivistää source-arvon tai typistää sen sanarajalta, kun justCrop on true.
gpt(prompt, model), claude(…), gemini(…), mistral(…)merkkijonoLuovat tekstiä brändin palveluntarjoajan tunnistetiedoilla. Katso tekoälyviestien luonti.
airtable(…)merkkijonoLukee arvon yhdistetystä Airtable-tietokannasta. Se palauttaa vain tekstiä.

aiGenerated() ratkaisee vain tekstinä annetut ylätason nimet. Anna 'description' tai itse arvo (organic.title), älä koskaan tekstiä 'organic.title', joka palautetaan sellaisenaan. Myös olematon nimi palautetaan sellaisenaan: artikkelittomassa julkaisussa aiGenerated('description', …) palauttaa sanan description. Suojaa se ehdolla:

twig
1{%- if organic -%}
2{{- aiGenerated('description', null, null, 40, '…', true) -}}
3{%- endif -%}

8. Suodattimet#

Twigin vakiosuodattimet ja -operaattorit (default, first, join, length, trim, replace, date, map, in, ??, ?:, ~) on dokumentoitu Twigin dokumentaatiossa. Nonli lisää tai korvaa seuraavat suodattimet. Kaikki alla olevat tulokset tulevat Nonlin renderöijältä.

SuodatinVaikutusEsimerkkiTulos
upperIsot kirjaimet, aksentit säilyvät'élan VITAL'|upperÉLAN VITAL
lowerPienet kirjaimet'élan VITAL'|lowerélan vital
capitalizeEnsimmäinen kirjain isolla, loput muuttumattomina'élan VITAL'|capitalizeÉlan VITAL
slugifyURL-slug'Budget 2027 : ménages'|slugifybudget-2027-menages
camelSanat yhdistetään, jokainen alkaa isolla kirjaimella'budget des ménages'|camelBudgetDesMénages
cleanTiivistää ja siistii välilyönnit sekä poistaa väliviivan ympäriltä välilyönnit' Paris - Lyon '|cleanParis-Lyon
ucPhraseOtsikkomuoto, lyhyet sanat pysyvät pienellä'le budget des ménages'|ucPhraseLe Budget des Ménages
encodeURL-koodaa mutta säilyttää varatut merkit, kuten &, =, /, ?, #'a b&c'|encodea+b&c
extractMatch(regex)Ensimmäinen kaappausryhmä tai null'Price: 10 €'|extractMatch('/([[:digit:]]+)/u')10
pregReplace(regex, replacement)Säännöllisen lausekkeen korvaus'Budget 2027'|pregReplace('/[[:digit:]]+/', 'N')Budget N
cleanTextTypografinen siivous: poistaa ylimääräiset välilyönnit, lisää ranskalaiset sitovat välilyönnit'Lire aussi : le budget. '|cleanTextLire aussi : le budget. (sitova välilyönti kaksoispisteen edessä)

Säännöt, joilla vältät renderöintivirheet:

  • extractMatch ja pregReplace epäonnistuvat, kun arvo on null. Lisää niiden eteen |default(''): {{ meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') }}.
  • encode ei suojaa merkkejä &, = tai #: älä käytä sitä parametrin muodostamiseen arvosta, joka voi sisältää niitä.
  • Käytä mieluummin POSIX-luokkia, kuten [[:digit:]], [[:space:]] ja [[:alpha:]], kuin kenoviivajaksoja: ne säilyvät kopioitaessa ja liitettäessä. Kopioi mallipohjat koodilohkosta, älä koskaan renderöidystä chat- tai sähköpostirivistä, joka voi pudottaa kenoviivat.

9. Testatut mallit#

Jokainen alla oleva malli renderöitiin Nonlin Twig-moottorilla täydellä, osittaisella ja tyhjällä artikkelitestiaineistolla.

Otsikko (H1 tai title) ja sen perään metakuvaus, lyhytlinkki vain siellä, missä sitä tarvitaan. Facebookin linkkijulkaisussa se palauttaa otsikon ja kuvauksen; Facebookin valokuvassa se lisää ➡️ [SHORTLINK]; Instagramissa se ei koskaan lisää linkkiä; ilman artikkelia se palauttaa tyhjän tekstin.

twig
1{%- set titre = title1 ?: title -%}
2{%- set desc = meta_description ?: description -%}
3{{- titre -}}
4{%- if desc -%}{{- '\n\n' ~ desc -}}{%- endif -%}
5{%- if post_type != 'link' and social_network not in ['instagram', 'tiktok', 'pinterest'] and not hasFirstCommentShortlink() and hasLink() -%}
6{{- '\n\n' ~ shortlink_prefix -}}[SHORTLINK]
7{%- endif -%}

Kuvauksen ensimmäinen lause, sitten kuvaus, sitten otsikko.

twig
1{%- set source = meta_description ?: description ?: '' -%}
2{{- source|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') ?: source ?: title -}}

Mukautetun julkaisijakentän ensimmäinen lause, varavaihtoehtona kuvan vaihtoehtoinen teksti ja sitten otsikko.

twig
1{{- meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') ?: organic.image_alt|default('') ?: title -}}

Teksti verkoston ja julkaisutyypin mukaan.

twig
1{%- if social_network == 'instagram' -%}
2{{- title -}}
3{%- elseif post_type == 'link' -%}
4{{- description ?: title -}}
5{%- else -%}
6{{- title -}}
7{%- endif -%}

Smart Image -työkalun väri kategorian mukaan. Palauttaa #E50032 politiikalle, #16A34A urheilulle ja muuten #6F819D.

twig
1{%- set categories = organic.category ?? [] -%}
2{%- if 'politique' in categories -%}#E50032
3{%- elseif 'sport' in categories -%}#16A34A
4{%- else -%}#6F819D
5{%- endif -%}

Seuranta-arvot kohdetililtä.

twig
1utm_source={{ post.social_account.type|default('social') }}&utm_campaign={{ post.social_account.slug|default('')|encode }}

Julkaisupäivä toimituksen aikavyöhykkeellä. 2026-10-18T07:30:00.000Z muuttuu muotoon 18/10/2026 09:30. Ilman julkaisupäivää date tulostaisi nykyisen päivämäärän, joten ehto jättää tekstin tyhjäksi.

twig
1{%- if organic.published_at|default(null) -%}
2{{- organic.published_at|date('d/m/Y H:i', 'Europe/Paris') -}}
3{%- endif -%}

Aihetunnisteet tunnisteista. ['budget', 'impots'] muuttuu muotoon #Budget #Impots.

twig
1{{ tags|default([])|map(t => '#' ~ t|camel)|join(' ') }}

Pidä lyhyet sanat ja luvut seuraavan sanan kanssa (Smart Image -työkalun otsikoille, jotka eivät koskaan katkaise riviä sitovan välilyönnin kohdalta). La finale se jouera à guichets fermés pitää sanat La, se ja à kiinni seuraavassa sanassa, ja 16 septembre tai 3 000 euros pysyvät yhdessä. Muutos koskee vain uusia luotavia kuvia.

twig
1{%- set titre = organic.title ?? title -%}
2{{- titre|pregReplace("/(?<=^|[[:space:]])([[:alpha:]]{1,2}|[[:digit:]]+)[[:space:]]+/u", "$1\xC2\xA0") -}}

Twig muuttaa \xC2\xA0-jakson sitovaksi välilyönniksi; $1 säilyttää löydetyn lyhyen sanan tai luvun.

10. Automaattiset ja napsautuksella täytettävät älykentät#

Jokaisella brändillä on kaksi asetusta: Automatic configuration of smart fields ja Smart field configuration at the click of the button. Editorin painike käyttää napsautusmääritystä ja palaa automaattiseen määritykseen vain, jos napsautusmääritystä ei ole. Julkiseen Empty-mallipohjaan asetettu kenttä tyhjennetään, kun napsautat painiketta, koska editori kirjoittaa luodun arvon takaisin kenttään.

Botit eivät käytä näitä brändin asetuksia. Jokaisella botilla on omat lähteensä, kuten Message's source ja Description's source, jotka osoittavat sisäänrakennettuun arvoon (Title, Description ja niin edelleen) tai Smart Message -mallipohjaan.

11. Vianmääritys#

11.1. Bottini käsittelee lähteensä mutta ei luo julkaisua#

Aktiivinen botti voi löytää artikkelin ja silti jättää julkaisun luomatta, kun sen Smart Message renderöi tyhjän viestin. Näin käy esimerkiksi, kun mallipohja lukee valinnaista kenttää, kuten meta_custom_publisher, eikä artikkelissa ole sitä. Nonli suodattaa silloin ehdokkaan pois ennen julkaisemista: viesti, joka on tyhjä tai enintään viiden merkin pituinen lyhytlinkin poistamisen jälkeen, hylätään, samoin linkkijulkaisu, jonka otsikko on tyhjä. Tyhjän viestin tarkistus ei koske botteja, joiden asetuksena on No message, eikä Pinterestiä; tyhjän otsikon tarkistus koskee jokaista bottia.

Tämä eroaa julkaisusta, joka luotiin ja epäonnistui sitten verkostossa: sellainen julkaisu näkyy kohdassa Posts virhetilassa. Katso Miksi bottini ei julkaissut tätä artikkelia?, jotta löydät ensin oikean vaiheen.

  1. Vertaa. Tunnista tarkka botti. Vertaa muutamaa viestiä, jotka se on aiemmin luonut onnistuneesti, vastaavien artikkelien metatietoihin ja tarkista, mikä sen määrityksessä on muuttunut. Pelkkä mallipohjan nimi tai sivun nykyinen HTML ei todista, mikä aiemmin toimi. Renderöi nykyinen mallipohja edustavalla kelvollisella artikkelilla ja tarkista, puuttuuko muuttuja vai onko se olemassa mutta tyhjä.

  2. Korjaa. Palauta mieluummin aiempi viestin lähde, jos se tuotti halutun sanamuodon, tai lisää muuttujan tyypille sopiva varavaihtoehto:

    twig
    1{{- meta_custom_publisher ?: title -}}

    Jos artikkelin otsikko vastaa haluttua sanamuotoa, avaa botti, aseta Message's source -asetukseksi Title ja napsauta sitten Save. Tämä muuttaa luotua tekstiä.

    Nonli-käyttöliittymä, jossa näkyy botin asetukset, joissa Message's source on asetettu arvoon Title, sekä Cancel- ja Save-painikkeet

    Ote botin asetuksista: Message's source asetettuna arvoon Title ennen Save-painikkeen napsauttamista.

  3. Laajuus. Botin lähteen muuttaminen vaikuttaa vain kyseisen botin tuleviin julkaisuihin. Jaetun Smart Message -mallipohjan muokkaaminen vaikuttaa jokaiseen bottiin ja kenttään, joka sitä käyttää. Olemassa olevia julkaisuja ei koskaan kirjoiteta uudelleen.

  4. Tarkista. Odota seuraavaa tavallista käsittelyä ja katso artikkeleita, jotka ovat edelleen kelvollisia. Vanhempia artikkeleita ei haeta takautuvasti automaattisesti, eikä manuaalinen julkaisu todista, että botti on toipunut.

11.2. Lyhyt ylärivi, ingressi ja ensimmäinen lause ovat eri arvoja#

Lyhyt toimituksellinen ylärivi (jota kutsutaan joskus kickeriksi tai otsikkoyliteeksi), koko ingressi ja tekstin ensimmäinen lause ovat kolme eri asiaa. Nonlilla ei ole omaa muuttujaa lyhyelle ylärivelle: sivustokohtainen sääntö voi tallentaa sen meta_custom_*-kenttään, ja joillakin artikkeleilla sitä ei perustellusti ole. Älä korvaa puuttuvaa riviä koko ingressillä. Näytä ylärivi vain, kun se on olemassa:

twig
1{%- set marker = meta_custom_instagram|default('')|trim -%}
2{%- if marker -%}{{- marker ~ ' | ' -}}{%- endif -%}
3{{- title -}}

Ylärivin kanssa tulos on EXCLUSIVE | Budget 2027: what changes; ilman sitä pelkkä otsikko. Tässä meta_custom_instagram on vain esimerkki: käytä kenttää, jonka sivustosi sääntö todella täyttää.

meta_description (natiivi metakuvaus), meta_custom_publisher (mukautettu kenttä) ja description (Nonlin valitsema kuvaus) ovat erillisiä syötteitä. Mallipohja, joka lukee yhtä niistä, ei muutu, kun toista korjataan. Kerätyn kentän päivittäminen ei muuta valittua botin lähdettä, Smart Image -työkalun tekstiä eikä jo luotuja julkaisuja.

11.3. Koko kerätty kuvaus tai ingressin ensimmäinen lause#

Neljä arvoa sekoitetaan usein toisiinsa, kun botti muodostaa viestiään:

  • Kerätty kuvaus (description, organic.description): Nonlin keräämä artikkelin kuvaus, käytettynä sellaisenaan ilman lauseisiin jakamista. Nonli ottaa sen ensin artikkelin jäsennellystä datasta, muuten Open Graph -tiedoista, sitten Twitter Card -tiedoista ja sitten natiivista metakuvauksesta. Kun se tulee näistä tunnisteista, siihen jää niiden 500 merkin rajaus. RSS-kohteen kuvausta (meta_custom_rss_description) ei koskaan käytetä keräämänä kuvauksena.
  • Natiivit metatiedot (meta_description, og_description, twitter_description): sivun metatunnisteissa ilmoitetut kuvaukset. Nonli leikkaa jokaisen niistä 500 merkkiin kerätessään ne. Tämä raja koskee vain näitä kolmea kenttää: jäsennellystä datasta otettua kerättyä kuvausta ei leikata.
  • Ensimmäinen lause: mallipohja, kuten Template: [public] Message from first standfirst sentence, säilyttää tarkoituksella yhden lauseen ja hoitaa linkin omalla [SHORTLINK]-merkinnällään.
  • Lyhyt ylärivi: edellisessä osiossa kuvattu valinnainen kenttä, jota joillakin artikkeleilla ei ole.

Mallipohjan nimi tai valittu lähde ei todista, että kerätty kuvaus on koko ingressisi. Voit julkaista koko kerätyn kuvauksen sen ensimmäisen lauseen sijaan seuraavasti:

  1. Tarkista, mitä kerättiin. Vertaa muutamalla edustavalla artikkelilla description-arvoa odottamaasi täydelliseen ingressiin. Jos se puuttuu, on katkennut tai sisältää ingressin sijaan leipätekstiä, pyydä tukea korjaamaan ja varmistamaan keruu ensin. Botin lähteen vaihtaminen ei voi palauttaa tekstiä, jota ei kerätty.
  2. Vaihda lähde. Avaa botti, aseta Message's source -asetukseksi Description ja napsauta sitten Save. Älä sekoita sitä asetukseen Description's source, joka täyttää julkaisun kuvauskentän, ei sen tekstiä.
  3. Tarkista seuraava viesti. Katso seuraava botin luoma julkaisu: koko teksti, linkin sijainti ja jokaisen kohdeverkoston tekstiraja. Koko kuvaus voi olla pitkä, eikä sen valinta takaa, että jokainen verkosto hyväksyy koko tekstin. Nonli hoitaa silti lyhytlinkin: julkaisussa, jossa ei ole natiivia linkkiä, se lisää lyhytlinkin heti luodun tekstin perään, ennen botin mahdollista loppuliitettä ja aihetunnisteita, ellei ensimmäisessä kommentissa jo ole sitä. Link- ja share-julkaisuihin ei lisätä lyhytlinkkiä, paitsi X:n ja Mastodonin linkkijulkaisuihin, joissa se lisätään aivan loppuun. Instagram- ja TikTok-viestit eivät saa lyhytlinkkiä. Ensimmäisen lauseen mallipohja voi lyhentää tekstiä tai sijoittaa linkin eri tavalla verkoston mukaan, joten älä odota samaa tulosta.
  4. Laajuus. Muutos koskee vain julkaisuja, jotka tämä botti luo tästä lähtien. Olemassa olevat julkaisut, muut botit ja jaetut Smart Message -mallipohjat pysyvät ennallaan, eikä vanhempia artikkeleita tuoda tai julkaista uudelleen.

11.4. Heittomerkit rikkovat mallipohjani#

Yksinkertaisilla lainausmerkeillä rajatussa Twig-merkkijonossa heittomerkki päättää merkkijonon. Tämä mallipohja hylätään tallennettaessa virheellä, kuten ”Invalid template syntax at line 1”:

twig
1{{ gpt('Summarize the article's main point') }}

Suojaa heittomerkki kenoviivalla, käytä typografista heittomerkkiä tai käytä kaksinkertaisia lainausmerkkejä:

twig
1{{ gpt('Summarize the article\'s main point') }}
2{{ gpt('Summarize the article’s main point') }}
3{{ gpt("Summarize the article's main point") }}

Ilmoitettu rivinumero on mallipohjan rivi, jolla virhe on.

11.5. Muuttuja pysyy tyhjänä#

  • Tarkista tarkka kirjoitusasu: organic.category, ei categories; tags, ei tag.
  • Tarkista, että julkaisulla on artikkeli: organic on tyhjä manuaalisille ja linkittömille julkaisuille, ja aliakset ovat silloin määrittelemättömiä.
  • Tulosta lista |join(', ')-suodattimella tai testaa se in-operaattorilla.
  • Vertaa kategorioita niiden normalisoituun muotoon (politique societe, ei Politique & Société).
  • Tarkista laskurit ?? 0-lausekkeella: ne puuttuvat ennen julkaisua.

11.6. Voiko mallipohja lisätä Instagram-yhteistyökumppaneita?#

Ei. Mallipohjat täyttävät vain tekstikenttiä, ja airtable() palauttaa tekstiä: se voi kirjoittaa @-maininnan mutta ei luoda yhteistyötä. Lisää yhteistyökumppanit julkaisueditorissa Collaborators-toiminnolla tai API-kentällä collaborator[] (slug, type) POST- tai PUT /v2.1/posts/bulk -kutsussa. Meta hyväksyy enintään 3 yhteistyökumppania; katso Näin teet Instagram-yhteistyöjulkaisun Nonlilla.

Oliko tämä artikkeli hyödyllinen?

Varaa henkilökohtainen demo tiimimme kanssa.