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
contexton'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.titletaipost.social_account.typeylä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.tagjaorganic.author; aliakset ovattagsjaauthors. Väärä nimi, kutencategories,organic.categories,tagtaiauthor, 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, kuten2026-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:
| Lauseke | Arvo puuttuu | Arvo '' | Arvo 'A' |
|---|---|---|---|
{{ x ?? 'B' }} | B | (tyhjä) | A |
{{ x ?: 'B' }} | B | B | A |
{{ x|default('B') }} | B | B | A |
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ä.
| Polku | Tyyppi | Saatavuus | Kuvaus | Esimerkki |
|---|---|---|---|---|
social_network | merkkijono | Aina | Kohdetilin verkosto; facebook, kun se ei ole tiedossa. | instagram |
post_type | merkkijono | Aina | Julkaisutyyppi; link, kun se ei ole tiedossa. | photo |
empty_message | merkkijono | Aina | Tyhjä merkkijono, jolla palautetaan tarkoituksella ei mitään. | '' |
shortlink_prefix | merkkijono | Aina | Brändin teksti, joka sijoitetaan lyhytlinkin eteen. | ➡️ |
post | objekti | Aina | Luotava tai muokattava julkaisu (katso post.*). | |
organic | objekti | Aina | Lähdeartikkeli (katso organic.*); tyhjä lista [], kun julkaisulla ei ole artikkelia. | |
context | merkkijono | Aina | Kenttä, 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.
| Alias | Suositeltu täysi polku | Tyyppi | Sisältö |
|---|---|---|---|
title | organic.title | merkkijono | Nonlin valitsema artikkelin otsikko |
description | organic.description | merkkijono | Nonlin valitsema artikkelin kuvaus |
title1 | organic.html.h1 | merkkijono | Sivun ensimmäinen H1-otsikko |
title2 | organic.html.h2 | merkkijono | Sivun ensimmäinen H2-otsikko |
head_title | organic.head.title | merkkijono | HTML-tunniste title, usein pidempi SEO-otsikko |
meta_description | organic.meta.description | merkkijono | Sivun natiivi metakuvaus |
og_title | organic.meta.open_graph.title | merkkijono | Open Graph -otsikko |
og_description | organic.meta.open_graph.description | merkkijono | Open Graph -kuvaus |
twitter_title | organic.meta.twitter.title | merkkijono | Twitter Card -otsikko |
twitter_description | organic.meta.twitter.description | merkkijono | Twitter Card -kuvaus |
meta_custom_facebook, meta_custom_twitter, meta_custom_instagram, meta_custom_linkedin, meta_custom_tiktok, meta_custom_pinterest | organic.meta.custom.facebook (ja niin edelleen) | merkkijono | Sivustokohtaisella säännöllä poimitut verkostokohtaiset mukautetut metatiedot |
meta_custom_publisher | organic.meta.custom.publisher | merkkijono | Sivustokohtaisella säännöllä poimittu mukautettu julkaisijakenttä, esimerkiksi leipätekstin ensimmäinen kappale |
meta_custom_rss_title | organic.meta.custom.rss.title | merkkijono | RSS-kohteen otsikko |
meta_custom_rss_description | organic.meta.custom.rss.description | merkkijono | RSS-kohteen kuvaus |
authors | organic.author | lista | Artikkelin kirjoittajat |
tags | organic.tag | lista | Artikkelin 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ä.
| Polku | Tyyppi | Saatavuus | Kuvaus | Esimerkki |
|---|---|---|---|---|
organic.url | merkkijono | Jokaisessa artikkelissa | Artikkelin URL | https://www.example.com/politics/budget |
organic.canonical_url | merkkijono | Kun määritelty | Kanoninen URL | https://www.example.com/politics/budget |
organic.type | merkkijono | Jokaisessa artikkelissa | Tunnistettu sisältötyyppi | article |
organic.language | merkkijono | Kun tunnistettu | Kielikoodi | fr |
organic.title | merkkijono | Useimmissa artikkeleissa | Nonlin valitsema otsikko | Budget 2027: what changes |
organic.description | merkkijono | Kun löytyy | Nonlin valitsema kuvaus | The government presents its budget. |
organic.html.h1 / organic.html.h2 | merkkijono | Kun on | Ensimmäinen H1- / H2-otsikko | Key measures |
organic.head.title | merkkijono | Kun on | HTML-tunniste title | Budget 2027 - Example News |
organic.meta.description | merkkijono | Kun on | Natiivi metakuvaus | The government presents its budget. |
organic.meta.open_graph.title / .description | merkkijono | Kun on | Open Graph -otsikko / -kuvaus | Budget 2027 |
organic.meta.open_graph.article.section | merkkijono | Kun on | Open Graph -kenttä article:section | Politics |
organic.meta.twitter.title / .description | merkkijono | Kun on | Twitter Card -otsikko / -kuvaus | Budget 2027 |
organic.meta.custom.* | merkkijono | Sivustokohtainen sääntö | Aliastaulukossa luetellut mukautetut kentät | |
organic.category | lista | Kun löytyy | Normalisoidut kategoriat, mukaan lukien JSON-LD-kenttä articleSection | ['politics', 'economy'] |
organic.tag | lista | Kun löytyy | Artikkelin tunnisteet | ['budget', 'taxes'] |
organic.author | lista | Kun löytyy | Artikkelin kirjoittajat | ['Camille Martin'] |
organic.image | lista | Kun löytyy | Sivulta löydettyjen kuvien URL-osoitteet | ['https://…/budget.jpg'] |
organic.image_alt | merkkijono | Kun löytyy | Pääkuvan vaihtoehtoinen teksti | The National Assembly chamber |
organic.published_at | päivämäärä | Kun löytyy | Julkaisupäivä (UTC) | 2026-10-18T07:30:00.000Z |
organic.modified_at | päivämäärä | Kun löytyy | Viimeisin muokkauspäivä (UTC) | 2026-10-18T09:00:00.000Z |
organic.counter.view | luku | Katso laskurit | Nonlin mittaamat artikkelin katselukerrat | 1520 |
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.
1{%- set categories = organic.category ?? [] -%}2{%- if 'politique' in categories -%}3Politics4{%- 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.
| Polku | Tyyppi | Saatavuus | Kuvaus | Esimerkki |
|---|---|---|---|---|
post.post_type | merkkijono | Aina | Julkaisutyyppi | link |
post.message | merkkijono | Kun kirjoitettu | Nykyinen viesti | Three ways to save energy. |
post.title | merkkijono | Kun kirjoitettu | Nykyinen otsikko | Budget 2027 |
post.description | merkkijono | Kun kirjoitettu | Nykyinen kuvaus | What changes for households. |
post.author | merkkijono | Kun tiedossa | Julkaisun sisällön tekijä (yksi teksti, ei lista) | Camille Martin |
post.tag | lista | Kun tiedossa | Julkaisun tunnisteet | ['budget'] |
post.language | merkkijono | Kun tiedossa | Kielikoodi | fr |
post.target_url | merkkijono | Linkkijulkaisut | Kohde-URL | https://www.example.com/politics/budget |
post.short_id | merkkijono | Lyhentämisen jälkeen | Lyhytlinkin tunniste | aB3xY |
post.social_account.type | merkkijono | Aina | Kohdeverkosto | linkedin |
post.social_account.name | merkkijono | Aina | Tilin nimi | Example News |
post.social_account.slug | merkkijono | Aina | Tilin slug | example-news |
post.social_account.external_id | merkkijono | Aina | Tilin tunniste verkostossa | 1000000001 |
post.source.type | merkkijono | Kun tiedossa | Julkaisun alkuperä (botti, manuaalinen ja niin edelleen) | bot |
post.source.bot_title | merkkijono | Bottijulkaisut | Julkaisun luoneen botin nimi | Politics bot |
post.source.organic_url | merkkijono | Artikkelijulkaisut | Lähdeartikkelin URL | https://www.example.com/politics/budget |
post.breaking_news.active | totuusarvo | Aina | Uutiskatkos-tila | false |
post.schedule.start_date | päivämäärä | Ajastetut julkaisut | Suunniteltu julkaisupäivä (UTC) | 2026-10-19T06:00:00.000Z |
post.published_at | päivämäärä | Julkaisun jälkeen | Julkaisupäivä (UTC) | 2026-10-19T06:00:04.000Z |
post.comment.message | merkkijono | Kun kirjoitettu | Ensimmäisen kommentin teksti | Read more: [SHORTLINK] |
post.counter.* | luku | Katso laskurit | Julkaisun suorituskyky | 42 |
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 }}.
| Polku | Tyyppi | Kuvaus |
|---|---|---|
post.counter.click | luku | Klikkaukset |
post.counter.engagement | luku | Sitoutuminen |
post.counter.reach | luku | Tavoittavuus |
post.counter.videoViews | luku | Videon katselukerrat |
post.counter.ctr | luku | Klikkausprosentti |
post.counter.overperforming | luku | Ylisuoriutumispisteet |
post.counter.monetization | luku | Sisällön monetisoinnista saadut tulot |
organic.counter.view | luku | Artikkelin 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:
htunti,dpäivä,wviikko,mkuukausi,yvuosi.
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.
1{%- if (post.counter.engagement ?? 0) > (percentile50Engagement7d ?? 0) -%}TOP{%- else -%}NORMAL{%- endif -%}7. Funktiot#
| Funktio | Palauttaa | Kuvaus |
|---|---|---|
hasLink() | totuusarvo | true, kun julkaisussa on linkki. Tarkista se, ennen kuin kirjoitat [SHORTLINK]. |
hasFirstCommentShortlink() | totuusarvo | true, kun ensimmäinen kommentti sisältää jo [SHORTLINK]-merkinnän. |
canPublishPostWithoutSpam() | totuusarvo | true, kun tilin roskapostin esto -säännöt sallivat nyt uuden linkkijulkaisun. |
canPublishCommentWithoutSpam() | totuusarvo | Sama tarkistus linkin sisältävälle kommentille. |
shouldAddComment(metric) | totuusarvo | Soveltaa määritettyä kommenttien otantasääntöä; valinnainen mittari nimeää käytettävän laskurin. Tulos voi vaihdella. |
aiGenerated(source, min, target, max, ending, justCrop) | merkkijono | Tiivistää source-arvon tai typistää sen sanarajalta, kun justCrop on true. |
gpt(prompt, model), claude(…), gemini(…), mistral(…) | merkkijono | Luovat tekstiä brändin palveluntarjoajan tunnistetiedoilla. Katso tekoälyviestien luonti. |
airtable(…) | merkkijono | Lukee 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:
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ä.
| Suodatin | Vaikutus | Esimerkki | Tulos |
|---|---|---|---|
upper | Isot kirjaimet, aksentit säilyvät | 'élan VITAL'|upper | ÉLAN VITAL |
lower | Pienet kirjaimet | 'élan VITAL'|lower | élan vital |
capitalize | Ensimmäinen kirjain isolla, loput muuttumattomina | 'élan VITAL'|capitalize | Élan VITAL |
slugify | URL-slug | 'Budget 2027 : ménages'|slugify | budget-2027-menages |
camel | Sanat yhdistetään, jokainen alkaa isolla kirjaimella | 'budget des ménages'|camel | BudgetDesMénages |
clean | Tiivistää ja siistii välilyönnit sekä poistaa väliviivan ympäriltä välilyönnit | ' Paris - Lyon '|clean | Paris-Lyon |
ucPhrase | Otsikkomuoto, lyhyet sanat pysyvät pienellä | 'le budget des ménages'|ucPhrase | Le Budget des Ménages |
encode | URL-koodaa mutta säilyttää varatut merkit, kuten &, =, /, ?, # | 'a b&c'|encode | a+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 |
cleanText | Typografinen siivous: poistaa ylimääräiset välilyönnit, lisää ranskalaiset sitovat välilyönnit | 'Lire aussi : le budget. '|cleanText | Lire aussi : le budget. (sitova välilyönti kaksoispisteen edessä) |
Säännöt, joilla vältät renderöintivirheet:
extractMatchjapregReplaceepäonnistuvat, kun arvo onnull. Lisää niiden eteen|default(''):{{ meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') }}.encodeei 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.
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.
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.
1{{- meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') ?: organic.image_alt|default('') ?: title -}}Teksti verkoston ja julkaisutyypin mukaan.
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.
1{%- set categories = organic.category ?? [] -%}2{%- if 'politique' in categories -%}#E500323{%- elseif 'sport' in categories -%}#16A34A4{%- else -%}#6F819D5{%- endif -%}Seuranta-arvot kohdetililtä.
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.
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.
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.
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.
-
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ä.
-
Korjaa. Palauta mieluummin aiempi viestin lähde, jos se tuotti halutun sanamuodon, tai lisää muuttujan tyypille sopiva varavaihtoehto:
twig1{{- 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ä.

Ote botin asetuksista: Message's source asetettuna arvoon Title ennen Save-painikkeen napsauttamista.
-
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.
-
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:
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:
- 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. - 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ä.
- 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.
- 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”:
1{{ gpt('Summarize the article's main point') }}Suojaa heittomerkki kenoviivalla, käytä typografista heittomerkkiä tai käytä kaksinkertaisia lainausmerkkejä:
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, eicategories;tags, eitag. - Tarkista, että julkaisulla on artikkeli:
organicon tyhjä manuaalisille ja linkittömille julkaisuille, ja aliakset ovat silloin määrittelemättömiä. - Tulosta lista
|join(', ')-suodattimella tai testaa sein-operaattorilla. - Vertaa kategorioita niiden normalisoituun muotoon (
politique societe, eiPolitique & 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.