Smart Message-skabeloner skrives i Twig 3. Denne side viser alle de variabler, funktioner og filtre som Nonli understøtter i den kontekst, med type, hvornår de kan mangle, og et testet eksempel. Hvis du vil oprette en skabelon trin for trin, så start med Sådan laver du en Smart Message.
1. Hvor denne kontekst gælder#
Den samme kontekst findes to steder:
- Smart Message-skabeloner, som bruges af robotter, af pæreknappen i opslagseditoren og af knappen til første kommentar. De kan udfylde meddelelsen, titlen, beskrivelsen, kommentaren, videotitlen, alt-teksten og TikTok-ankertitlen.
- Dynamiske værdier i Smart Image når en tekst eller farve i Smart Image bruger en Smart Message-skabelon som kilde. I så fald er variablen
contextlig med'smart_image'. Se Sådan bruger du dynamiske farver i Smart Image.
Dynamiske URL-parametre og den dynamiske paywall bruger også Twig, men med en meget mindre kontekst: en begrænset post (source, social_account, post_type, author, user_id, breaking_news, short_id), referer, funktionen isComment() samt tællere og percentiler. organic, aliasserne på topniveau og Smart Message-funktionerne nedenfor findes ikke der.
2. Regler for navne og typer#
- Brug helst fulde stier. Skriv
organic.titleellerpost.social_account.typei stedet for et alias på topniveau. Aliasserne er stadig understøttet af hensyn til eksisterende skabeloner. - Navnene skrives i snake_case og følger navnene på de lagrede felter:
canonical_url,published_at,open_graph. - Vær opmærksom på ental og flertal. Stierne er
organic.category,organic.tag,organic.author; aliasserne ertagsogauthors. Et forkert navn somcategories,organic.categories,tagellerauthorgiver ikke nogen fejl: det giver en tom værdi. - Typer. En streng er tekst. En liste er en række værdier: test den med
in, læs den med|firsteller|join(', '), og udskriv den aldrig direkte. Et objekt samler andre stier. Derefter kommer tal, booleske værdier og datoer. Datoer er ISO 8601-strenge i UTC som2026-10-18T07:30:00.000Z. Formatér dem med|date. - Manglende værdier. En værdi findes kun når kilden leverer den. Det afhænger af opslagets oprindelse (artikel, manuelt opslag, opslag uden link), det sociale netværk, opslagstypen og de metadata som scraperen fandt på siden. En manglende
organic-sti bliver tom; en tom liste behandles som manglende.
Brug ?? til at erstatte en manglende værdi eller null, og ?: eller |default() til også at erstatte en tom streng:
| Udtryk | Værdi mangler | Værdien '' | Værdien 'A' |
|---|---|---|---|
{{ x ?? 'B' }} | B | (tom) | A |
{{ x ?: 'B' }} | B | B | A |
{{ x|default('B') }} | B | B | A |
Efter et filter skal du bruge ?: eller |default(), aldrig ??. {{ x|upper ?? 'B' }} er en syntaksfejl, og skabelonen afvises når du gemmer den.
3. Variabler på topniveau#
Disse variabler er altid defineret i en Smart Message.
| Sti | Type | Tilgængelighed | Beskrivelse | Eksempel |
|---|---|---|---|---|
social_network | streng | Altid | Destinationskontoens netværk; facebook når det er ukendt. | instagram |
post_type | streng | Altid | Opslagstype; link når den er ukendt. | photo |
empty_message | streng | Altid | En tom streng, så der bevidst ikke returneres noget. | '' |
shortlink_prefix | streng | Altid | Brandets tekst foran et kort link. | ➡️ |
post | objekt | Altid | Det opslag der oprettes eller redigeres (se post.*). | |
organic | objekt | Altid | Kildeartiklen (se organic.*); en tom liste [] når opslaget ikke har nogen artikel. | |
context | streng | Altid | Det felt der genereres: message, title, description, comment, videoTitle, altText, tikTokAnchorTitle eller smart_image når Smart Image renderer skabelonen. | message |
3.1. Ældre aliasser#
Når opslaget kommer fra en artikel, kopierer Nonli også nogle artikelfelter til topniveauet. Disse aliasser er definerede (muligvis som null) så snart der findes en artikel, og udefinerede når opslaget ikke har nogen. Hvert alias har en foretrukken fuld sti.
| Alias | Foretrukken fuld sti | Type | Indhold |
|---|---|---|---|
title | organic.title | streng | Artikeltitel valgt af Nonli |
description | organic.description | streng | Artikelbeskrivelse valgt af Nonli |
title1 | organic.html.h1 | streng | Første H1-overskrift på siden |
title2 | organic.html.h2 | streng | Første H2-overskrift på siden |
head_title | organic.head.title | streng | HTML-taggen title, ofte en længere SEO-titel |
meta_description | organic.meta.description | streng | Sidens egen metabeskrivelse |
og_title | organic.meta.open_graph.title | streng | Open Graph-titel |
og_description | organic.meta.open_graph.description | streng | Open Graph-beskrivelse |
twitter_title | organic.meta.twitter.title | streng | Twitter Card-titel |
twitter_description | organic.meta.twitter.description | streng | Twitter Card-beskrivelse |
meta_custom_facebook, meta_custom_twitter, meta_custom_instagram, meta_custom_linkedin, meta_custom_tiktok, meta_custom_pinterest | organic.meta.custom.facebook (og så videre) | streng | Tilpassede metadata pr. netværk, udtrukket med en webstedsspecifik regel |
meta_custom_publisher | organic.meta.custom.publisher | streng | Tilpasset udgiverfelt, udtrukket med en webstedsspecifik regel, for eksempel første afsnit i brødteksten |
meta_custom_rss_title | organic.meta.custom.rss.title | streng | Titel fra RSS-elementet |
meta_custom_rss_description | organic.meta.custom.rss.description | streng | Beskrivelse fra RSS-elementet |
authors | organic.author | liste | Artiklens forfattere |
tags | organic.tag | liste | Artiklens tags |
På en rigtig artikel indeholder title og title1 ofte den samme rubrik, head_title indeholder den længere SEO-titel, og meta_description begynder ofte med manchetten. Alle kan være tomme, så planlæg altid en reserveværdi.
Valgene »Meta custom …« i editoren og i robotkilderne svarer til disse meta_custom_*-aliasser. De udfyldes kun på websteder hvor Nonli har konfigureret en særlig udtræksregel. En artikel fra et websted uden for din virksomhed viser kun sine offentlige felter, så organic.counter.view mangler for den.
4. [object Object],: kildeartiklen#
organic findes når opslaget kommer fra en artikel (robot, URL indsat i editoren, SDK, RSS). Et manuelt opslag eller et opslag uden link har ingen artikel: organic er så en tom liste, og alle organic.*-stier er tomme.
| Sti | Type | Tilgængelighed | Beskrivelse | Eksempel |
|---|---|---|---|---|
organic.url | streng | Alle artikler | Artiklens URL | https://www.example.com/politics/budget |
organic.canonical_url | streng | Når angivet | Kanonisk URL | https://www.example.com/politics/budget |
organic.type | streng | Alle artikler | Registreret indholdstype | article |
organic.language | streng | Når registreret | Sprogkode | fr |
organic.title | streng | Flertallet af artikler | Titel valgt af Nonli | Budget 2027: what changes |
organic.description | streng | Når fundet | Beskrivelse valgt af Nonli | The government presents its budget. |
organic.html.h1 / organic.html.h2 | streng | Når til stede | Første H1-/H2-overskrift | Key measures |
organic.head.title | streng | Når til stede | HTML-taggen title | Budget 2027 - Example News |
organic.meta.description | streng | Når til stede | Egen metabeskrivelse | The government presents its budget. |
organic.meta.open_graph.title / .description | streng | Når til stede | Open Graph-titel/-beskrivelse | Budget 2027 |
organic.meta.open_graph.article.section | streng | Når til stede | Open Graph article:section | Politics |
organic.meta.twitter.title / .description | streng | Når til stede | Twitter Card-titel/-beskrivelse | Budget 2027 |
organic.meta.custom.* | streng | Webstedsspecifik regel | Tilpassede felter som står i aliastabellen | |
organic.category | liste | Når fundet | Normaliserede kategorier, inklusive JSON-LD articleSection | ['politics', 'economy'] |
organic.tag | liste | Når fundet | Artiklens tags | ['budget', 'taxes'] |
organic.author | liste | Når fundet | Artiklens forfattere | ['Camille Martin'] |
organic.image | liste | Når fundet | Billed-URL'er fundet på siden | ['https://…/budget.jpg'] |
organic.image_alt | streng | Når fundet | Alternativ tekst til hovedbilledet | The National Assembly chamber |
organic.published_at | dato | Når fundet | Publiceringsdato (UTC) | 2026-10-18T07:30:00.000Z |
organic.modified_at | dato | Når fundet | Dato for seneste ændring (UTC) | 2026-10-18T09:00:00.000Z |
organic.counter.view | tal | Se tællere | Artikelvisninger målt af Nonli | 1520 |
4.1. Kategorier og ,[object Object]#
Nonli gemmer JSON-LD-værdien articleSection og sidens øvrige kategorisignaler i organic.category. Det er en liste, ikke en tekst, og der findes ingen variabel categories. Værdierne er normaliserede: små bogstaver, accenter fjernet og tegnsætning omdannet til mellemrum. For eksempel bliver Politique & Société, Économie og Sports > Rugby til politique societe, economie og sports rugby. Sammenlign altid med værdier du faktisk har set på dine egne artikler.
1{%- set categories = organic.category ?? [] -%}2{%- if 'politique' in categories -%}3Politics4{%- endif -%}Første kategori eller ingenting: {{ organic.category|default([])|first|default('') }}
Alle kategorier: {{ organic.category|default([])|join(', ') }}
Den rå Open Graph-sektion, som ikke er normaliseret, er stadig tilgængelig som {{ organic.meta.open_graph.article.section ?? '' }}.
5. [object Object],: opslaget#
post beskriver det opslag der oprettes eller redigeres. Felterne udfyldes gradvist: et felt der er ved at blive genereret, er stadig tomt mens dets egen skabelon renderes.
| Sti | Type | Tilgængelighed | Beskrivelse | Eksempel |
|---|---|---|---|---|
post.post_type | streng | Altid | Opslagstype | link |
post.message | streng | Når skrevet | Aktuel meddelelse | Three ways to save energy. |
post.title | streng | Når skrevet | Aktuel titel | Budget 2027 |
post.description | streng | Når skrevet | Aktuel beskrivelse | What changes for households. |
post.author | streng | Når kendt | Forfatter til opslagets indhold (én tekst, ikke en liste) | Camille Martin |
post.tag | liste | Når kendt | Opslagets tags | ['budget'] |
post.language | streng | Når kendt | Sprogkode | fr |
post.target_url | streng | Linkopslag | Destinations-URL | https://www.example.com/politics/budget |
post.short_id | streng | Når forkortet | Identifikator for det korte link | aB3xY |
post.social_account.type | streng | Altid | Destinationsnetværk | linkedin |
post.social_account.name | streng | Altid | Kontonavn | Example News |
post.social_account.slug | streng | Altid | Kontoens slug | example-news |
post.social_account.external_id | streng | Altid | Kontoens identifikator på netværket | 1000000001 |
post.source.type | streng | Når kendt | Opslagets oprindelse (robot, manuel og så videre) | bot |
post.source.bot_title | streng | Robotopslag | Navnet på den robot der oprettede opslaget | Politics bot |
post.source.organic_url | streng | Artikelopslag | URL til kildeartiklen | https://www.example.com/politics/budget |
post.breaking_news.active | boolesk | Altid | Breaking news-tilstand | false |
post.schedule.start_date | dato | Planlagte opslag | Planlagt publiceringsdato (UTC) | 2026-10-19T06:00:00.000Z |
post.published_at | dato | Efter publicering | Publiceringsdato (UTC) | 2026-10-19T06:00:04.000Z |
post.comment.message | streng | Når skrevet | Tekst i første kommentar | Read more: [SHORTLINK] |
post.counter.* | tal | Se tællere | Opslagets performance | 42 |
Interne identifikatorer og tekniske felter (id'er for bruger, virksomhed og brand, kontoens e-mail, webhook-URL, statusser, fejlspor, rå tællere) er bevidst udeladt: de er ikke en stabil offentlig grænseflade og må ikke optræde i publiceret tekst. post.user_id er kun dokumenteret til URL-parametre.
6. Tællere og percentiler#
En tæller indlæses kun når skabelonen nævner den udtrykkeligt, for eksempel post.counter.click. Den mangler når nøgletallet ikke findes endnu, hvilket altid er tilfældet for et opslag der ikke er publiceret. Skriv altid en reserveværdi: {{ post.counter.click ?? 0 }}.
| Sti | Type | Beskrivelse |
|---|---|---|
post.counter.click | tal | Klik |
post.counter.engagement | tal | Engagement |
post.counter.reach | tal | Rækkevidde |
post.counter.videoViews | tal | Videovisninger |
post.counter.ctr | tal | Klikrate |
post.counter.overperforming | tal | Score for overperformance |
post.counter.monetization | tal | Indtjening fra monetisering af indhold |
organic.counter.view | tal | Artikelvisninger (kun når opslaget har en artikel) |
En percentilvariabel sammenligner et opslag med de opslag som den samme konto har publiceret i en periode, breaking news undtaget. Dens navn er percentile + percentil (1 eller 2 cifre) + nøgletal + varighed (1 eller 2 cifre) + enhed:
- nøgletal:
Click,Engagement,Reach,VideoViews,Ctr,Overperforming,Monetization; - enheder:
htime,ddag,wuge,mmåned,yår.
percentile50Click1d er medianen af klik over 1 dag; percentile90Engagement7d er 90. percentil for engagement over 7 dage. Værdien er null uden data og caches i 30 minutter.
1{%- if (post.counter.engagement ?? 0) > (percentile50Engagement7d ?? 0) -%}TOP{%- else -%}NORMAL{%- endif -%}7. Funktioner#
| Funktion | Returnerer | Beskrivelse |
|---|---|---|
hasLink() | boolesk | true når opslaget indeholder et link. Tjek det før du skriver [SHORTLINK]. |
hasFirstCommentShortlink() | boolesk | true når den første kommentar allerede indeholder [SHORTLINK]. |
canPublishPostWithoutSpam() | boolesk | true når kontoens antispamregler tillader endnu et linkopslag nu. |
canPublishCommentWithoutSpam() | boolesk | Samme kontrol for en kommentar med et link. |
shouldAddComment(metric) | boolesk | Anvender den konfigurerede stikprøveregel for kommentarer; det valgfrie nøgletal angiver den tæller der bruges. Resultatet kan variere. |
aiGenerated(source, min, target, max, ending, justCrop) | streng | Opsummerer source eller beskærer den ved en ordgrænse når justCrop er true. |
gpt(prompt, model), claude(…), gemini(…), mistral(…) | streng | Genererer tekst med brandets adgangsoplysninger til udbyderen. Se AI-generering af meddelelser. |
airtable(…) | streng | Læser en værdi fra en tilsluttet Airtable-base. Den returnerer kun tekst. |
aiGenerated() slår kun navne på topniveau op når de angives som tekst. Angiv 'description' eller selve værdien (organic.title), aldrig teksten 'organic.title', som returneres bogstaveligt. Et navn der ikke findes, returneres også bogstaveligt: på et opslag uden artikel returnerer aiGenerated('description', …) ordet description. Beskyt det med en betingelse:
1{%- if organic -%}2{{- aiGenerated('description', null, null, 40, '…', true) -}}3{%- endif -%}8. Filtre#
Twigs standardfiltre og -operatorer (default, first, join, length, trim, replace, date, map, in, ??, ?:, ~) er beskrevet i Twig-dokumentationen. Nonli tilføjer eller erstatter følgende filtre. Alle resultater nedenfor kommer fra Nonlis renderer.
| Filter | Effekt | Eksempel | Resultat |
|---|---|---|---|
upper | Store bogstaver, accenter bevares | 'élan VITAL'|upper | ÉLAN VITAL |
lower | Små bogstaver | 'élan VITAL'|lower | élan vital |
capitalize | Første bogstav stort, resten uændret | 'élan VITAL'|capitalize | Élan VITAL |
slugify | URL-slug | 'Budget 2027 : ménages'|slugify | budget-2027-menages |
camel | Ord sat sammen, hvert med stort begyndelsesbogstav | 'budget des ménages'|camel | BudgetDesMénages |
clean | Samler og trimmer mellemrum og fjerner mellemrummene omkring en bindestreg | ' Paris - Lyon '|clean | Paris-Lyon |
ucPhrase | Stort begyndelsesbogstav i hvert ord, korte ord beholder små bogstaver | 'le budget des ménages'|ucPhrase | Le Budget des Ménages |
encode | URL-koder, men bevarer reserverede tegn som &, =, /, ?, # | 'a b&c'|encode | a+b&c |
extractMatch(regex) | Første indfangningsgruppe eller null | 'Price: 10 €'|extractMatch('/([[:digit:]]+)/u') | 10 |
pregReplace(regex, replacement) | Erstatning med regulært udtryk | 'Budget 2027'|pregReplace('/[[:digit:]]+/', 'N') | Budget N |
cleanText | Typografisk oprydning: trimmer og tilføjer franske hårde mellemrum | 'Lire aussi : le budget. '|cleanText | Lire aussi : le budget. (hårdt mellemrum før kolonnet) |
Regler der forhindrer renderingsfejl:
extractMatchogpregReplacefejler når værdien ernull. Tilføj|default('')før dem:{{ meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') }}.encodebeskytter ikke&,=eller#. Brug det ikke til at bygge en parameter af en værdi der kan indeholde dem.- Brug helst POSIX-klasser som
[[:digit:]],[[:space:]]og[[:alpha:]]frem for sekvenser med omvendt skråstreg: de overlever kopiering og indsættelse. Kopiér skabeloner fra en kodeblok, aldrig fra en gengivet linje i en chat eller e-mail, som kan fjerne omvendte skråstreger.
9. Testede opskrifter#
Alle opskrifterne nedenfor er renderet med Nonlis Twig-motor på testartikler med komplette, delvise og tomme data.
Rubrik (H1 eller titel) efterfulgt af metabeskrivelsen, med et kort link kun hvor der er brug for det. På et linkopslag på Facebook returnerer den rubrikken og beskrivelsen; på et foto på Facebook tilføjer den ➡️ [SHORTLINK]. På Instagram tilføjer den aldrig et link; uden en artikel returnerer den en tom tekst.
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 -%}Første sætning i beskrivelsen, derefter beskrivelsen, derefter titlen.
1{%- set source = meta_description ?: description ?: '' -%}2{{- source|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') ?: source ?: title -}}Første sætning i det tilpassede udgiverfelt, med billedets alt-tekst og derefter titlen som reserve.
1{{- meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') ?: organic.image_alt|default('') ?: title -}}Tekst efter netværk og opslagstype.
1{%- if social_network == 'instagram' -%}2{{- title -}}3{%- elseif post_type == 'link' -%}4{{- description ?: title -}}5{%- else -%}6{{- title -}}7{%- endif -%}Smart Image-farve efter kategori. Returnerer #E50032 for politik, #16A34A for sport og ellers #6F819D.
1{%- set categories = organic.category ?? [] -%}2{%- if 'politique' in categories -%}#E500323{%- elseif 'sport' in categories -%}#16A34A4{%- else -%}#6F819D5{%- endif -%}Sporingsværdier fra destinationskontoen.
1utm_source={{ post.social_account.type|default('social') }}&utm_campaign={{ post.social_account.slug|default('')|encode }}Publiceringsdato i redaktionens tidszone. 2026-10-18T07:30:00.000Z bliver til 18/10/2026 09:30. Uden en publiceringsdato ville date udskrive den aktuelle dato, så betingelsen lader i stedet teksten være tom.
1{%- if organic.published_at|default(null) -%}2{{- organic.published_at|date('d/m/Y H:i', 'Europe/Paris') -}}3{%- endif -%}Hashtags fra tags. ['budget', 'impots'] bliver til #Budget #Impots.
1{{ tags|default([])|map(t => '#' ~ t|camel)|join(' ') }}Hold korte ord og tal sammen med det næste ord (til Smart Image-titler, som aldrig laver linjeskift ved et hårdt mellemrum). La finale se jouera à guichets fermés holder La, se og à sammen med det efterfølgende ord, og 16 septembre eller 3 000 euros bliver stående sammen. Ændringen gælder kun for nyligt genererede billeder.
1{%- set titre = organic.title ?? title -%}2{{- titre|pregReplace("/(?<=^|[[:space:]])([[:alpha:]]{1,2}|[[:digit:]]+)[[:space:]]+/u", "$1\xC2\xA0") -}}Twig omdanner \xC2\xA0 til et hårdt mellemrum; $1 bevarer det korte ord eller tal der blev fundet.
10. Automatiske smarte felter og smarte felter ved klik#
Hvert brand har to indstillinger: Automatic configuration of smart fields og Smart field configuration at the click of the button. Knappen i editoren bruger konfigurationen til klik og falder kun tilbage på den automatiske når der ikke findes nogen konfiguration til klik. Et felt der er sat til den offentlige skabelon Empty, ryddes når du klikker på knappen fordi editoren skriver den genererede værdi tilbage i feltet.
Robotter bruger ikke disse brandindstillinger. Hver robot har sine egne kilder, for eksempel Message's source og Description's source, som peger på en indbygget værdi (Title, Description og så videre) eller på en Smart Message-skabelon.
11. Fejlfinding#
11.1. Min robot overvåger sin kilde, men opretter intet opslag#
En aktiv robot kan finde artiklen og alligevel ikke oprette noget opslag hvis dens Smart Message renderer en tom meddelelse. Det sker for eksempel når skabelonen læser et valgfrit felt som meta_custom_publisher, og artiklen ikke har det. Nonli frasorterer så kandidaten før publicering: en meddelelse der er tom eller har fem tegn eller færre når det korte link er fjernet, kasseres, og det samme gælder et linkopslag med en tom titel. Kontrollen af tomme meddelelser gælder ikke for robotter der er sat til No message, eller for Pinterest; kontrollen af tomme titler gælder for alle robotter.
Det er noget andet end et opslag der blev oprettet og derefter fejlede på netværket: sådan et opslag kan ses i Posts med en fejlstatus. Se Hvorfor publicerede min robot ikke denne artikel? for først at finde det trin hvor det går galt.
-
Sammenlign. Find den præcise robot. Sammenlign nogle af de meddelelser den tidligere har genereret korrekt, med metadata for de tilsvarende artikler, og tjek hvad der er ændret i dens konfiguration. Et skabelonnavn eller sidens nuværende HTML beviser ikke i sig selv hvad der plejede at virke. Render den nuværende skabelon på en repræsentativ artikel der opfylder betingelserne, og tjek om variablen mangler eller findes, men er tom.
-
Ret. Gendan helst den tidligere meddelelseskilde hvis den gav den ønskede ordlyd, eller tilføj en reserveværdi der passer til variablens type:
twig1{{- meta_custom_publisher ?: title -}}Hvis artiklens titel svarer til den ønskede ordlyd, skal du åbne robotten, sætte Message's source til Title og derefter klikke på Save. Det ændrer den genererede tekst.

Uddrag af robotindstillingerne: Message's source sat til Title før der klikkes på Save.
-
Omfang. En ændring af robottens kilde påvirker kun robottens fremtidige opslag. En redigering af en delt Smart Message-skabelon påvirker alle de robotter og felter der bruger den. Eksisterende opslag bliver aldrig omskrevet.
-
Tjek. Vent på den næste normale overvågning, og se på artikler der stadig opfylder betingelserne. Ældre artikler bliver ikke indhentet automatisk, og et manuelt opslag beviser ikke at robotten fungerer igen.
11.2. Kort markør, manchet og første sætning er forskellige værdier#
En kort redaktionel markør (som nogle gange kaldes kicker eller overrubrik), den fulde manchet og første sætning i en tekst er tre forskellige ting. Nonli har ingen særlig variabel til den korte markør: en webstedsspecifik regel kan gemme den i et meta_custom_*-felt, og nogle artikler har med god grund ingen. Erstat ikke en manglende markør med hele manchetten. Vis kun markøren når den findes:
1{%- set marker = meta_custom_instagram|default('')|trim -%}2{%- if marker -%}{{- marker ~ ' | ' -}}{%- endif -%}3{{- title -}}Med en markør er resultatet EXCLUSIVE | Budget 2027: what changes, og uden en markør er det kun titlen. Her er meta_custom_instagram kun et eksempel: brug det felt din webstedsregel faktisk udfylder.
meta_description (sidens egen metabeskrivelse), meta_custom_publisher (tilpasset felt) og description (beskrivelse valgt af Nonli) er separate input. En skabelon der læser ét af dem, påvirkes ikke når et andet bliver rettet. En opdatering af et indsamlet felt ændrer ikke den valgte robotkilde, teksten i Smart Image eller opslag der allerede er genereret.
11.3. Fuld indsamlet beskrivelse eller første sætning i manchetten#
Fire værdier forveksles ofte når en robot sammensætter sin meddelelse:
- Indsamlet beskrivelse (
description,organic.description): den artikelbeskrivelse som Nonli har indsamlet, brugt som den er, uden at være delt op i sætninger. Nonli tager den først fra artiklens strukturerede data, ellers fra dens Open Graph, derefter Twitter Card og derefter sidens egen metabeskrivelse. Når den kommer fra disse tags, beholder den deres afskæring ved 500 tegn. Beskrivelsen fra RSS-elementet (meta_custom_rss_description) bruges aldrig som den indsamlede beskrivelse. - Sidens egne metadata (
meta_description,og_description,twitter_description): de beskrivelser der er angivet i sidens metatags. Nonli skærer hver af dem af ved 500 tegn når de indsamles. Denne grænse gælder kun disse tre felter: en indsamlet beskrivelse fra strukturerede data bliver ikke skåret af. - Første sætning: en skabelon som
Template: [public] Message from first standfirst sentencebeholder bevidst én sætning og håndterer linket med sin egen[SHORTLINK]-markør. - Kort markør: et valgfrit felt beskrevet i det forrige afsnit, som nogle artikler ikke har.
Hverken et skabelonnavn eller den valgte kilde beviser at den indsamlede beskrivelse er din komplette manchet. Sådan publicerer du den fulde indsamlede beskrivelse i stedet for dens første sætning:
- Tjek hvad der er indsamlet. Sammenlign
descriptionpå nogle repræsentative artikler med den komplette manchet du forventer. Hvis den mangler, er afskåret eller indeholder brødtekst i stedet for manchetten, så bed først support om at rette og kontrollere indsamlingen. En ændring af robottens kilde kan ikke genskabe tekst der ikke er indsamlet. - Skift kilden. Åbn robotten, sæt Message's source til Description, og klik derefter på Save. Forveksl den ikke med Description's source, som udfylder opslagets beskrivelsesfelt, ikke dets tekst.
- Tjek den næste meddelelse. Se på det næste opslag robotten genererer: hele teksten, hvor linket står, og tekstgrænsen på hvert destinationsnetværk. En fuld beskrivelse kan være lang, og valget af den garanterer ikke at alle netværk accepterer hele teksten. Nonli håndterer stadig det korte link: på et opslag uden indbygget link tilføjer Nonli det korte link lige efter den genererede tekst, før et eventuelt robotsuffiks og hashtags medmindre den første kommentar allerede indeholder det. Link- og delingsopslag får ikke tilføjet noget kort link, bortset fra linkopslag på X og Mastodon, hvor det tilføjes helt til sidst. Meddelelser på Instagram og TikTok får ikke noget kort link. En skabelon med første sætning kan forkorte teksten eller placere linket forskelligt fra netværk til netværk, så forvent ikke det samme resultat.
- Omfang. Ændringen gælder kun de opslag denne robot genererer fra nu af. Eksisterende opslag, andre robotter og delte Smart Message-skabeloner er uændrede, og ingen ældre artikel bliver importeret eller publiceret igen.
11.4. Apostroffer ødelægger min skabelon#
I en Twig-streng med enkelte anførselstegn afslutter en apostrof strengen. Denne skabelon afvises når du gemmer den, med en fejl som »Invalid template syntax at line 1«:
1{{ gpt('Summarize the article's main point') }}Escape apostroffen, brug en typografisk apostrof, eller brug dobbelte anførselstegn:
1{{ gpt('Summarize the article\'s main point') }}2{{ gpt('Summarize the article’s main point') }}3{{ gpt("Summarize the article's main point") }}Det angivne linjenummer er den linje i skabelonen der indeholder fejlen.
11.5. En variabel forbliver tom#
- Tjek den præcise stavemåde:
organic.category, ikkecategories, ogtags, ikketag. - Tjek at opslaget har en artikel:
organicer tom for manuelle opslag og opslag uden link, og aliasserne er så udefinerede. - Udskriv en liste med
|join(', '), eller test den medin. - Sammenlign kategorier med deres normaliserede form (
politique societe, ikkePolitique & Société). - Tjek tællere med
?? 0, for de mangler før publicering.
11.6. Kan en skabelon tilføje samarbejdspartnere på Instagram?#
Nej. Skabeloner udfylder kun tekstfelter, og airtable() returnerer tekst: den kan skrive en @omtale, men ikke oprette et samarbejde. Tilføj samarbejdspartnere i opslagseditoren med Collaborators eller med API-feltet collaborator[] (slug, type) i POST eller PUT /v2.1/posts/bulk. Meta accepterer op til 3 samarbejdspartnere; se Sådan laver du et Instagram-samarbejde med Nonli.