Smart Message-mallar skrivs i Twig 3. Den här sidan listar alla variabler, funktioner och filter som Nonli stöder i det sammanhanget, med typ, när värdet kan saknas och ett testat exempel. Om du vill skapa en mall steg för steg, börja med Så skapar du ett Smart Message.
1. Var den här kontexten gäller#
Samma kontext finns på två ställen:
- Smart Message-mallar, som används av botar, av glödlampsknappen i inläggsredigeraren och av knappen för första kommentar. De kan fylla i meddelandet, titeln, beskrivningen, kommentaren, videotiteln, alt-texten och ankartiteln på TikTok.
- Dynamiska värden i Smart Image, när en text eller färg i Smart Image använder en Smart Message-mall som källa. I så fall är variabeln
contextlika med'smart_image'. Se Så använder du dynamiska färger i Smart Image.
Dynamiska URL-parametrar och den dynamiska betalväggen använder också Twig, men med en mycket mindre kontext: en begränsad post (source, social_account, post_type, author, user_id, breaking_news, short_id), referer, funktionen isComment() samt räknare och percentiler. organic, aliasen på toppnivå och Smart Message-funktionerna nedan finns inte där.
2. Regler för namn och typer#
- Använd helst fullständiga sökvägar. Skriv
organic.titleellerpost.social_account.typei stället för ett alias på toppnivå. Aliasen stöds fortfarande för befintliga mallar. - Namnen skrivs i snake_case och följer de lagrade fältnamnen:
canonical_url,published_at,open_graph. - Var noga med singular och plural. Sökvägarna är
organic.category,organic.tag,organic.author; aliasen ärtagsochauthors. Ett felaktigt namn somcategories,organic.categories,tagellerauthorger inget fel: det ger ett tomt värde. - Typer. En sträng är text. En lista är en följd av värden: testa den med
in, läs den med|firsteller|join(', '), skriv aldrig ut den direkt. Ett objekt grupperar andra sökvägar. Därefter kommer tal, booleska värden och datum. Datum är ISO 8601-strängar i UTC, till exempel2026-10-18T07:30:00.000Z; formatera dem med|date. - Saknade värden. Ett värde finns bara när källan tillhandahåller det. Det beror på inläggets ursprung (artikel, manuellt inlägg, inlägg utan länk), det sociala nätverket, inläggstypen och de metadata som Nonli hittade på sidan när den hämtades. En saknad
organic-sökväg blir tom; en tom lista behandlas som saknad.
Använd ?? för att ersätta ett saknat värde eller null, och ?: eller |default() för att även ersätta en tom sträng:
| Uttryck | Värde saknas | Värde '' | Värde 'A' |
|---|---|---|---|
{{ x ?? 'B' }} | B | (tomt) | A |
{{ x ?: 'B' }} | B | B | A |
{{ x|default('B') }} | B | B | A |
Efter ett filter ska du använda ?: eller |default(), aldrig ??: {{ x|upper ?? 'B' }} är ett syntaxfel, och mallen avvisas när du sparar den.
3. Variabler på toppnivå#
De här variablerna är alltid definierade i ett Smart Message.
| Sökväg | Typ | Tillgänglighet | Beskrivning | Exempel |
|---|---|---|---|---|
social_network | sträng | Alltid | Målkontots nätverk; facebook när det är okänt. | instagram |
post_type | sträng | Alltid | Inläggstyp; link när den är okänd. | photo |
empty_message | sträng | Alltid | En tom sträng, för att medvetet inte returnera något. | '' |
shortlink_prefix | sträng | Alltid | Varumärkets text som placeras före en kort länk. | ➡️ |
post | objekt | Alltid | Inlägget som skapas eller redigeras (se post.*). | |
organic | objekt | Alltid | Källartikeln (se organic.*); en tom lista [] när inlägget inte har någon artikel. | |
context | sträng | Alltid | Fältet som genereras: message, title, description, comment, videoTitle, altText, tikTokAnchorTitle, eller smart_image när Smart Image renderar mallen. | message |
3.1. Äldre alias#
När inlägget kommer från en artikel kopierar Nonli också vissa artikelfält till toppnivån. De här aliasen är definierade (möjligen null) så snart det finns en artikel, och odefinierade när inlägget inte har någon. Vart och ett har en rekommenderad fullständig sökväg.
| Alias | Rekommenderad fullständig sökväg | Typ | Innehåll |
|---|---|---|---|
title | organic.title | sträng | Artikeltitel som Nonli har valt |
description | organic.description | sträng | Artikelbeskrivning som Nonli har valt |
title1 | organic.html.h1 | sträng | Sidans första H1-rubrik |
title2 | organic.html.h2 | sträng | Sidans första H2-rubrik |
head_title | organic.head.title | sträng | HTML-taggen title, ofta en längre SEO-titel |
meta_description | organic.meta.description | sträng | Sidans egen metabeskrivning |
og_title | organic.meta.open_graph.title | sträng | Open Graph-titel |
og_description | organic.meta.open_graph.description | sträng | Open Graph-beskrivning |
twitter_title | organic.meta.twitter.title | sträng | Twitter Card-titel |
twitter_description | organic.meta.twitter.description | sträng | Twitter Card-beskrivning |
meta_custom_facebook, meta_custom_twitter, meta_custom_instagram, meta_custom_linkedin, meta_custom_tiktok, meta_custom_pinterest | organic.meta.custom.facebook (och så vidare) | sträng | Anpassade metadata per nätverk som extraheras av en webbplatsspecifik regel |
meta_custom_publisher | organic.meta.custom.publisher | sträng | Anpassat utgivarfält som extraheras av en webbplatsspecifik regel, till exempel brödtextens första stycke |
meta_custom_rss_title | organic.meta.custom.rss.title | sträng | Titel från RSS-posten |
meta_custom_rss_description | organic.meta.custom.rss.description | sträng | Beskrivning från RSS-posten |
authors | organic.author | lista | Artikelns författare |
tags | organic.tag | lista | Artikelns taggar |
I en verklig artikel innehåller title och title1 ofta samma rubrik, head_title den längre SEO-titeln och meta_description börjar ofta med ingressen. Vilket som helst av dem kan vara tomt, så planera alltid ett reservvärde.
Valen ”Meta custom …” i redigeraren och i botkällorna motsvarar de här meta_custom_*-aliasen. De fylls bara i på webbplatser där Nonli har konfigurerat en särskild extraheringsregel. En artikel från en webbplats utanför ditt företag exponerar bara sina publika fält, så organic.counter.view saknas för den.
4. [object Object],: källartikeln#
organic finns när inlägget kommer från en artikel (bot, URL inklistrad i redigeraren, SDK, RSS). Ett manuellt inlägg eller ett inlägg utan länk har ingen artikel: organic är då en tom lista och alla organic.*-sökvägar är tomma.
| Sökväg | Typ | Tillgänglighet | Beskrivning | Exempel |
|---|---|---|---|---|
organic.url | sträng | Alla artiklar | Artikelns URL | https://www.example.com/politics/budget |
organic.canonical_url | sträng | När den är angiven | Kanonisk URL | https://www.example.com/politics/budget |
organic.type | sträng | Alla artiklar | Identifierad innehållstyp | article |
organic.language | sträng | När det identifieras | Språkkod | fr |
organic.title | sträng | De flesta artiklar | Titel som Nonli har valt | Budget 2027: what changes |
organic.description | sträng | När den hittas | Beskrivning som Nonli har valt | The government presents its budget. |
organic.html.h1 / organic.html.h2 | sträng | När den finns | Första H1- / H2-rubriken | Key measures |
organic.head.title | sträng | När den finns | HTML-taggen title | Budget 2027 - Example News |
organic.meta.description | sträng | När den finns | Sidans egen metabeskrivning | The government presents its budget. |
organic.meta.open_graph.title / .description | sträng | När den finns | Open Graph-titel / -beskrivning | Budget 2027 |
organic.meta.open_graph.article.section | sträng | När den finns | Open Graph article:section | Politics |
organic.meta.twitter.title / .description | sträng | När den finns | Twitter Card-titel / -beskrivning | Budget 2027 |
organic.meta.custom.* | sträng | Webbplatsspecifik regel | Anpassade fält som listas i aliastabellen | |
organic.category | lista | När de hittas | Normaliserade kategorier, inklusive JSON-LD articleSection | ['politics', 'economy'] |
organic.tag | lista | När de hittas | Artikelns taggar | ['budget', 'taxes'] |
organic.author | lista | När de hittas | Artikelns författare | ['Camille Martin'] |
organic.image | lista | När de hittas | Bild-URL:er som hittats på sidan | ['https://…/budget.jpg'] |
organic.image_alt | sträng | När den hittas | Huvudbildens alternativa text | The National Assembly chamber |
organic.published_at | datum | När det hittas | Publiceringsdatum (UTC) | 2026-10-18T07:30:00.000Z |
organic.modified_at | datum | När det hittas | Datum för senaste ändring (UTC) | 2026-10-18T09:00:00.000Z |
organic.counter.view | tal | Se räknare | Artikelvisningar som Nonli har mätt | 1520 |
4.1. Kategorier och ,[object Object]#
Nonli lagrar JSON-LD-värdet articleSection, och sidans övriga kategorisignaler, i organic.category. Det är en lista, inte en text, och det finns ingen variabel categories. Värdena normaliseras: gemener, diakritiska tecken borttagna, skiljetecken ersatta med mellanslag. Till exempel blir Politique & Société, Économie och Sports > Rugby till politique societe, economie och sports rugby. Jämför alltid med värden som du faktiskt har sett i dina egna artiklar.
1{%- set categories = organic.category ?? [] -%}2{%- if 'politique' in categories -%}3Politics4{%- endif -%}Första kategorin, eller ingenting: {{ organic.category|default([])|first|default('') }}
Alla kategorier: {{ organic.category|default([])|join(', ') }}
Den råa Open Graph-sektionen, som inte är normaliserad, finns kvar som {{ organic.meta.open_graph.article.section ?? '' }}.
5. [object Object],: inlägget#
post beskriver inlägget som skapas eller redigeras. Fälten fylls i successivt: ett fält som håller på att genereras är fortfarande tomt medan dess egen mall renderas.
| Sökväg | Typ | Tillgänglighet | Beskrivning | Exempel |
|---|---|---|---|---|
post.post_type | sträng | Alltid | Inläggstyp | link |
post.message | sträng | När det är skrivet | Aktuellt meddelande | Three ways to save energy. |
post.title | sträng | När den är skriven | Aktuell titel | Budget 2027 |
post.description | sträng | När den är skriven | Aktuell beskrivning | What changes for households. |
post.author | sträng | När den är känd | Författare till inläggets innehåll (en text, inte en lista) | Camille Martin |
post.tag | lista | När de är kända | Inläggets taggar | ['budget'] |
post.language | sträng | När det är känt | Språkkod | fr |
post.target_url | sträng | Länkinlägg | Mål-URL | https://www.example.com/politics/budget |
post.short_id | sträng | När länken har förkortats | Den korta länkens identifierare | aB3xY |
post.social_account.type | sträng | Alltid | Målnätverk | linkedin |
post.social_account.name | sträng | Alltid | Kontots namn | Example News |
post.social_account.slug | sträng | Alltid | Kontots slug | example-news |
post.social_account.external_id | sträng | Alltid | Kontots identifierare på nätverket | 1000000001 |
post.source.type | sträng | När det är känt | Inläggets ursprung (bot, manuellt och så vidare) | bot |
post.source.bot_title | sträng | Botinlägg | Namnet på boten som skapade inlägget | Politics bot |
post.source.organic_url | sträng | Artikelinlägg | Källartikelns URL | https://www.example.com/politics/budget |
post.breaking_news.active | boolesk | Alltid | Breaking news-läge | false |
post.schedule.start_date | datum | Schemalagda inlägg | Planerat publiceringsdatum (UTC) | 2026-10-19T06:00:00.000Z |
post.published_at | datum | Efter publicering | Publiceringsdatum (UTC) | 2026-10-19T06:00:04.000Z |
post.comment.message | sträng | När den är skriven | Text i första kommentaren | Read more: [SHORTLINK] |
post.counter.* | tal | Se räknare | Inläggets resultat | 42 |
Interna identifierare och tekniska fält (användar-, företags- och varumärkes-ID:n, kontots e-postadress, webhook-URL, statusar, felspår, råa räknare) är medvetet uteslutna: de är inget stabilt publikt gränssnitt och får inte förekomma i publicerad text. post.user_id dokumenteras bara för URL-parametrar.
6. Räknare och percentiler#
En räknare laddas bara när mallen uttryckligen nämner den, till exempel post.counter.click. Den saknas när mätvärdet ännu inte finns, vilket alltid gäller för ett inlägg som inte har publicerats. Skriv alltid ett reservvärde: {{ post.counter.click ?? 0 }}.
| Sökväg | Typ | Beskrivning |
|---|---|---|
post.counter.click | tal | Klick |
post.counter.engagement | tal | Engagemang |
post.counter.reach | tal | Räckvidd |
post.counter.videoViews | tal | Videovisningar |
post.counter.ctr | tal | Klickfrekvens |
post.counter.overperforming | tal | Poäng för överprestation |
post.counter.monetization | tal | Intäkter från intäktsgenerering av innehåll |
organic.counter.view | tal | Artikelvisningar (bara när inlägget har en artikel) |
En percentilvariabel jämför ett inlägg med de inlägg som samma konto har publicerat under en period, med undantag för inlägg med senaste nytt. Namnet består av percentile + percentil (1 eller 2 siffror) + mätvärde + längd (1 eller 2 siffror) + enhet:
- mätvärden:
Click,Engagement,Reach,VideoViews,Ctr,Overperforming,Monetization; - enheter:
htimme,ddag,wvecka,mmånad,yår.
percentile50Click1d är medianen för klick under 1 dag; percentile90Engagement7d är den 90:e percentilen för engagemang under 7 dagar. Värdet är null när data saknas och cachas i 30 minuter.
1{%- if (post.counter.engagement ?? 0) > (percentile50Engagement7d ?? 0) -%}TOP{%- else -%}NORMAL{%- endif -%}7. Funktioner#
| Funktion | Returnerar | Beskrivning |
|---|---|---|
hasLink() | boolesk | true när inlägget innehåller en länk. Kontrollera det innan du skriver [SHORTLINK]. |
hasFirstCommentShortlink() | boolesk | true när den första kommentaren redan innehåller [SHORTLINK]. |
canPublishPostWithoutSpam() | boolesk | true när kontots antispamregler tillåter ytterligare ett länkinlägg nu. |
canPublishCommentWithoutSpam() | boolesk | Samma kontroll för en kommentar som innehåller en länk. |
shouldAddComment(metric) | boolesk | Tillämpar den konfigurerade urvalsregeln för kommentarer; det valfria mätvärdet anger vilken räknare som används. Resultatet kan variera. |
aiGenerated(source, min, target, max, ending, justCrop) | sträng | Sammanfattar source, eller kortar den vid en ordgräns när justCrop är true. |
gpt(prompt, model), claude(…), gemini(…), mistral(…) | sträng | Genererar text med varumärkets autentiseringsuppgifter hos leverantören. Se AI-generering av meddelanden. |
airtable(…) | sträng | Läser ett värde från en ansluten Airtable-bas. Den returnerar bara text. |
aiGenerated() löser bara upp namn på toppnivå som anges som text. Skicka 'description' eller själva värdet (organic.title), aldrig texten 'organic.title', som returneras ordagrant. Ett namn som inte finns returneras också ordagrant: i ett inlägg utan artikel returnerar aiGenerated('description', …) ordet description. Skydda den med ett villkor:
1{%- if organic -%}2{{- aiGenerated('description', null, null, 40, '…', true) -}}3{%- endif -%}8. Filter#
Twigs standardfilter och operatorer (default, first, join, length, trim, replace, date, map, in, ??, ?:, ~) beskrivs i Twig-dokumentationen. Nonli lägger till eller ersätter följande filter. Alla resultat nedan kommer från Nonlis renderare.
| Filter | Effekt | Exempel | Resultat |
|---|---|---|---|
upper | Versaler, diakritiska tecken behålls | 'élan VITAL'|upper | ÉLAN VITAL |
lower | Gemener | 'élan VITAL'|lower | élan vital |
capitalize | Första bokstaven versal, resten oförändrat | 'élan VITAL'|capitalize | Élan VITAL |
slugify | URL-slug | 'Budget 2027 : ménages'|slugify | budget-2027-menages |
camel | Orden sammanfogas, vart och ett med inledande versal | 'budget des ménages'|camel | BudgetDesMénages |
clean | Slår ihop och trimmar mellanslag och tar bort mellanslagen runt ett bindestreck | ' Paris - Lyon '|clean | Paris-Lyon |
ucPhrase | Inledande versaler, korta ord behålls med gemener | 'le budget des ménages'|ucPhrase | Le Budget des Ménages |
encode | URL-kodar men behåller reserverade tecken som &, =, /, ?, # | 'a b&c'|encode | a+b&c |
extractMatch(regex) | Första fångstgruppen, eller null | 'Price: 10 €'|extractMatch('/([[:digit:]]+)/u') | 10 |
pregReplace(regex, replacement) | Ersättning med reguljärt uttryck | 'Budget 2027'|pregReplace('/[[:digit:]]+/', 'N') | Budget N |
cleanText | Typografisk rensning: trimmar och lägger till franska hårda mellanslag | 'Lire aussi : le budget. '|cleanText | Lire aussi : le budget. (hårt mellanslag före kolonet) |
Regler som förhindrar renderingsfel:
extractMatchochpregReplacemisslyckas när värdet ärnull. Lägg till|default('')före dem:{{ meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') }}.encodeskyddar inte&,=eller#: använd det inte för att bygga en parameter av ett värde som kan innehålla dem.- Använd hellre POSIX-klasser som
[[:digit:]],[[:space:]]och[[:alpha:]]än sekvenser med omvänt snedstreck: de överlever kopiering och inklistring. Kopiera mallar från ett kodblock, aldrig från en renderad rad i en chatt eller ett e-postmeddelande, som kan tappa omvända snedstreck.
9. Testade recept#
Varje recept nedan har renderats med Nonlis Twig-motor på fullständiga, ofullständiga och tomma artikelexempel.
Rubrik (H1 eller titel) följd av metabeskrivningen, med en kort länk bara där den behövs. I ett länkinlägg på Facebook returnerar receptet rubriken och beskrivningen; i ett fotoinlägg på Facebook lägger det till ➡️ [SHORTLINK]; på Instagram lägger det aldrig till någon länk; utan artikel returnerar det en tom text.
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 -%}Beskrivningens första mening, annars beskrivningen, annars titeln.
1{%- set source = meta_description ?: description ?: '' -%}2{{- source|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') ?: source ?: title -}}Första meningen i det anpassade utgivarfältet, med bildens alt-text som reservvärde och därefter titeln.
1{{- meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') ?: organic.image_alt|default('') ?: title -}}Text efter nätverk och inläggstyp.
1{%- if social_network == 'instagram' -%}2{{- title -}}3{%- elseif post_type == 'link' -%}4{{- description ?: title -}}5{%- else -%}6{{- title -}}7{%- endif -%}Färg i Smart Image efter kategori. Returnerar #E50032 för politik, #16A34A för sport och #6F819D i övriga fall.
1{%- set categories = organic.category ?? [] -%}2{%- if 'politique' in categories -%}#E500323{%- elseif 'sport' in categories -%}#16A34A4{%- else -%}#6F819D5{%- endif -%}Spårningsvärden från målkontot.
1utm_source={{ post.social_account.type|default('social') }}&utm_campaign={{ post.social_account.slug|default('')|encode }}Publiceringsdatum i redaktionens tidszon. 2026-10-18T07:30:00.000Z blir 18/10/2026 09:30. Utan publiceringsdatum skulle date skriva ut dagens datum, så villkoret lämnar i stället texten tom.
1{%- if organic.published_at|default(null) -%}2{{- organic.published_at|date('d/m/Y H:i', 'Europe/Paris') -}}3{%- endif -%}Hashtaggar från taggar. ['budget', 'impots'] blir #Budget #Impots.
1{{ tags|default([])|map(t => '#' ~ t|camel)|join(' ') }}Håll ihop korta ord och tal med nästa ord (för titlar i Smart Image, som aldrig bryter raden vid ett hårt mellanslag). La finale se jouera à guichets fermés håller ihop La, se och à med ordet som följer, och 16 septembre eller 3 000 euros hålls samman. Ändringen gäller bara nygenererade bilder.
1{%- set titre = organic.title ?? title -%}2{{- titre|pregReplace("/(?<=^|[[:space:]])([[:alpha:]]{1,2}|[[:digit:]]+)[[:space:]]+/u", "$1\xC2\xA0") -}}Twig omvandlar \xC2\xA0 till ett hårt mellanslag; $1 behåller det korta ord eller tal som matchades.
10. Smarta fält: automatiskt och vid klick#
Varje varumärke har två inställningar: Automatic configuration of smart fields (automatisk konfiguration av smarta fält) och Smart field configuration at the click of the button (konfiguration av smarta fält vid klick på knappen). Knappen i redigeraren använder konfigurationen vid klick och faller tillbaka på den automatiska bara när det inte finns någon konfiguration vid klick. Ett fält som är inställt på den publika mallen Empty töms när du klickar på knappen, eftersom redigeraren skriver tillbaka det genererade värdet i fältet.
Botar använder inte de här varumärkesinställningarna. Varje bot har egna källor, till exempel Message's source (meddelandets källa) och Description's source (beskrivningens källa), som pekar på ett inbyggt värde (Title, Description och så vidare) eller på en Smart Message-mall.
11. Felsökning#
11.1. Min bot kontrollerar sin källa men skapar inget inlägg#
En aktiv bot kan hitta artikeln och ändå inte skapa något inlägg när dess Smart Message renderar ett tomt meddelande. Det händer till exempel när mallen läser ett valfritt fält som meta_custom_publisher och artikeln saknar det. Nonli filtrerar då bort kandidaten före all publicering: ett meddelande som är tomt, eller som har fem tecken eller färre när den korta länken har tagits bort, kasseras, och detsamma gäller ett länkinlägg med tom titel. Kontrollen av tomma meddelanden gäller inte botar som är inställda på No message eller Pinterest; kontrollen av tomma titlar gäller alla botar.
Det här skiljer sig från ett inlägg som skapades och sedan misslyckades på nätverket: ett sådant inlägg syns i Posts med en felstatus. Se Varför publicerade min bot inte den här artikeln? för att först hitta i vilket steg det stannade.
-
Jämför. Identifiera exakt vilken bot det gäller. Jämför några meddelanden som den tidigare genererade utan problem med metadata för motsvarande artiklar, och kontrollera vad som har ändrats i dess konfiguration. Enbart ett mallnamn eller sidans nuvarande HTML bevisar inte vad som fungerade tidigare. Rendera den nuvarande mallen på en representativ artikel som uppfyller villkoren och kontrollera om variabeln saknas eller finns men är tom.
-
Åtgärda. Återställ helst den tidigare meddelandekällan om den gav den avsedda formuleringen, eller lägg till ett reservvärde som passar variabelns typ:
twig1{{- meta_custom_publisher ?: title -}}Om artikelns titel motsvarar den avsedda formuleringen, öppna boten, ställ in Message's source på Title och klicka sedan på Save. Det ändrar den genererade texten.

Utdrag ur botinställningarna: Message's source inställd på Title, innan du klickar på Save.
-
Omfattning. En ändring av botens källa påverkar bara botens framtida inlägg. En ändring av en delad Smart Message-mall påverkar alla botar och fält som använder den. Befintliga inlägg skrivs aldrig om.
-
Kontrollera. Vänta på nästa ordinarie kontroll och titta på artiklar som fortfarande uppfyller villkoren. Äldre artiklar hämtas inte in i efterhand automatiskt, och ett manuellt inlägg bevisar inte att boten fungerar igen.
11.2. Kort markör, ingress och första mening är olika värden#
En kort redaktionell markör (ibland kallad överrubrik), hela ingressen och första meningen i en text är tre olika saker. Nonli har ingen särskild variabel för den korta markören: en webbplatsspecifik regel kan lagra den i ett meta_custom_*-fält, och vissa artiklar saknar helt legitimt en sådan. Ersätt inte en saknad markör med hela ingressen. Visa markören bara när den finns:
1{%- set marker = meta_custom_instagram|default('')|trim -%}2{%- if marker -%}{{- marker ~ ' | ' -}}{%- endif -%}3{{- title -}}Med en markör blir resultatet EXCLUSIVE | Budget 2027: what changes; utan markör bara titeln. Här är meta_custom_instagram bara ett exempel: använd det fält som din webbplatsregel faktiskt fyller i.
meta_description (sidans egen metabeskrivning), meta_custom_publisher (anpassat fält) och description (beskrivning som Nonli har valt) är separata indata. En mall som läser ett av dem påverkas inte när ett annat korrigeras. En uppdatering av ett insamlat fält ändrar inte botens valda källa, texten i Smart Image eller inlägg som redan har genererats.
11.3. Hela den insamlade beskrivningen eller ingressens första mening#
Fyra värden blandas ofta ihop när en bot sätter ihop sitt meddelande:
- Insamlad beskrivning (
description,organic.description): artikelbeskrivningen som Nonli har samlat in, använd som den är och inte uppdelad i meningar. Nonli hämtar den i första hand från artikelns strukturerade data, annars från dess Open Graph, därefter Twitter Card och sist sidans egen metabeskrivning. När den kommer från de här taggarna behåller den deras gräns på 500 tecken. Beskrivningen i RSS-posten (meta_custom_rss_description) används aldrig som insamlad beskrivning. - Sidans egna metadata (
meta_description,og_description,twitter_description): beskrivningarna som anges i sidans metataggar. Nonli kortar var och en av dem till 500 tecken när de samlas in. Den gränsen gäller bara de här tre fälten: en insamlad beskrivning som hämtats från strukturerade data kortas inte. - Första mening: en mall som
Template: [public] Message from first standfirst sentencebehåller medvetet en enda mening och hanterar länken med sin egen markör[SHORTLINK]. - Kort markör: ett valfritt fält som beskrivs i föregående avsnitt och som vissa artiklar saknar.
Varken ett mallnamn eller den valda källan bevisar att den insamlade beskrivningen är hela din ingress. Så här publicerar du hela den insamlade beskrivningen i stället för dess första mening:
- Kontrollera vad som samlades in. Jämför
descriptionmed den fullständiga ingress du förväntar dig i några representativa artiklar. Om den saknas, är avkortad eller innehåller brödtext i stället för ingressen, be supporten att först korrigera och kontrollera insamlingen. En ändring av botens källa kan inte återskapa text som aldrig samlades in. - Ändra källan. Öppna boten, ställ in Message's source på Description och klicka sedan på Save. Blanda inte ihop den med Description's source, som fyller i inläggets beskrivningsfält, inte dess text.
- Kontrollera nästa meddelande. Titta på nästa inlägg som boten genererar: hela texten, var länken hamnar och textgränsen för varje målnätverk. En fullständig beskrivning kan vara lång, och att välja den garanterar inte att alla nätverk accepterar hela texten. Nonli hanterar fortfarande den korta länken: i ett inlägg utan egen länk lägger Nonli till den korta länken direkt efter den genererade texten, före eventuellt botsuffix och hashtaggar, om inte den första kommentaren redan innehåller den. Länk- och delningsinlägg får ingen tillagd kort länk, utom länkinlägg på X och Mastodon, där den läggs till allra sist. Meddelanden på Instagram och TikTok får ingen kort länk. En mall för första meningen kan korta texten eller placera länken olika beroende på nätverk, så räkna inte med samma resultat.
- Omfattning. Ändringen gäller bara de inlägg som den här boten genererar från och med nu. Befintliga inlägg, andra botar och delade Smart Message-mallar påverkas inte, och ingen äldre artikel importeras eller publiceras på nytt.
11.4. Apostrofer förstör min mall#
I en Twig-sträng inom enkla citattecken avslutar en apostrof strängen. Den här mallen avvisas när du sparar den, med ett fel som ”Invalid template syntax at line 1”:
1{{ gpt('Summarize the article's main point') }}Skydda apostrofen med ett omvänt snedstreck, använd en typografisk apostrof eller använd dubbla citattecken:
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 angivna radnumret är den rad i mallen som innehåller felet.
11.5. En variabel förblir tom#
- Kontrollera den exakta stavningen:
organic.category, intecategories;tags, intetag. - Kontrollera att inlägget har en artikel:
organicär tom för manuella inlägg och inlägg utan länk, och aliasen är då odefinierade. - Skriv ut en lista med
|join(', ')eller testa den medin. - Jämför kategorier med deras normaliserade form (
politique societe, intePolitique & Société). - Kontrollera räknare med
?? 0: de saknas före publicering.
11.6. Kan en mall lägga till samarbetspartner på Instagram?#
Nej. Mallar fyller bara i textfält, och airtable() returnerar text: den kan skriva ett @-omnämnande, inte skapa ett samarbete. Lägg till samarbetspartner i inläggsredigeraren med Collaborators, eller med API-fältet collaborator[] (slug, type) i POST eller PUT /v2.1/posts/bulk. Meta accepterar upp till 3 samarbetspartner; se Så gör du ett Instagram-samarbete med Nonli.