Vilka Twig-variabler finns i Nonli?

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 context lika 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.title eller post.social_account.type i 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 är tags och authors. Ett felaktigt namn som categories, organic.categories, tag eller author ger 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 |first eller |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 exempel 2026-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:

UttryckVärde saknasVärde ''Värde 'A'
{{ x ?? 'B' }}B(tomt)A
{{ x ?: 'B' }}BBA
{{ x|default('B') }}BBA

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ägTypTillgänglighetBeskrivningExempel
social_networksträngAlltidMålkontots nätverk; facebook när det är okänt.instagram
post_typesträngAlltidInläggstyp; link när den är okänd.photo
empty_messagesträngAlltidEn tom sträng, för att medvetet inte returnera något.''
shortlink_prefixsträngAlltidVarumärkets text som placeras före en kort länk.➡️
postobjektAlltidInlägget som skapas eller redigeras (se post.*).
organicobjektAlltidKällartikeln (se organic.*); en tom lista [] när inlägget inte har någon artikel.
contextsträngAlltidFä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.

AliasRekommenderad fullständig sökvägTypInnehåll
titleorganic.titlesträngArtikeltitel som Nonli har valt
descriptionorganic.descriptionsträngArtikelbeskrivning som Nonli har valt
title1organic.html.h1strängSidans första H1-rubrik
title2organic.html.h2strängSidans första H2-rubrik
head_titleorganic.head.titlesträngHTML-taggen title, ofta en längre SEO-titel
meta_descriptionorganic.meta.descriptionsträngSidans egen metabeskrivning
og_titleorganic.meta.open_graph.titlesträngOpen Graph-titel
og_descriptionorganic.meta.open_graph.descriptionsträngOpen Graph-beskrivning
twitter_titleorganic.meta.twitter.titlesträngTwitter Card-titel
twitter_descriptionorganic.meta.twitter.descriptionsträngTwitter Card-beskrivning
meta_custom_facebook, meta_custom_twitter, meta_custom_instagram, meta_custom_linkedin, meta_custom_tiktok, meta_custom_pinterestorganic.meta.custom.facebook (och så vidare)strängAnpassade metadata per nätverk som extraheras av en webbplatsspecifik regel
meta_custom_publisherorganic.meta.custom.publishersträngAnpassat utgivarfält som extraheras av en webbplatsspecifik regel, till exempel brödtextens första stycke
meta_custom_rss_titleorganic.meta.custom.rss.titlesträngTitel från RSS-posten
meta_custom_rss_descriptionorganic.meta.custom.rss.descriptionsträngBeskrivning från RSS-posten
authorsorganic.authorlistaArtikelns författare
tagsorganic.taglistaArtikelns 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ägTypTillgänglighetBeskrivningExempel
organic.urlsträngAlla artiklarArtikelns URLhttps://www.example.com/politics/budget
organic.canonical_urlsträngNär den är angivenKanonisk URLhttps://www.example.com/politics/budget
organic.typesträngAlla artiklarIdentifierad innehållstyparticle
organic.languagesträngNär det identifierasSpråkkodfr
organic.titlesträngDe flesta artiklarTitel som Nonli har valtBudget 2027: what changes
organic.descriptionsträngNär den hittasBeskrivning som Nonli har valtThe government presents its budget.
organic.html.h1 / organic.html.h2strängNär den finnsFörsta H1- / H2-rubrikenKey measures
organic.head.titlesträngNär den finnsHTML-taggen titleBudget 2027 - Example News
organic.meta.descriptionsträngNär den finnsSidans egen metabeskrivningThe government presents its budget.
organic.meta.open_graph.title / .descriptionsträngNär den finnsOpen Graph-titel / -beskrivningBudget 2027
organic.meta.open_graph.article.sectionsträngNär den finnsOpen Graph article:sectionPolitics
organic.meta.twitter.title / .descriptionsträngNär den finnsTwitter Card-titel / -beskrivningBudget 2027
organic.meta.custom.*strängWebbplatsspecifik regelAnpassade fält som listas i aliastabellen
organic.categorylistaNär de hittasNormaliserade kategorier, inklusive JSON-LD articleSection['politics', 'economy']
organic.taglistaNär de hittasArtikelns taggar['budget', 'taxes']
organic.authorlistaNär de hittasArtikelns författare['Camille Martin']
organic.imagelistaNär de hittasBild-URL:er som hittats på sidan['https://…/budget.jpg']
organic.image_altsträngNär den hittasHuvudbildens alternativa textThe National Assembly chamber
organic.published_atdatumNär det hittasPubliceringsdatum (UTC)2026-10-18T07:30:00.000Z
organic.modified_atdatumNär det hittasDatum för senaste ändring (UTC)2026-10-18T09:00:00.000Z
organic.counter.viewtalSe räknareArtikelvisningar som Nonli har mätt1520

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.

twig
1{%- set categories = organic.category ?? [] -%}
2{%- if 'politique' in categories -%}
3Politics
4{%- 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ägTypTillgänglighetBeskrivningExempel
post.post_typesträngAlltidInläggstyplink
post.messagesträngNär det är skrivetAktuellt meddelandeThree ways to save energy.
post.titlesträngNär den är skrivenAktuell titelBudget 2027
post.descriptionsträngNär den är skrivenAktuell beskrivningWhat changes for households.
post.authorsträngNär den är kändFörfattare till inläggets innehåll (en text, inte en lista)Camille Martin
post.taglistaNär de är kändaInläggets taggar['budget']
post.languagesträngNär det är käntSpråkkodfr
post.target_urlsträngLänkinläggMål-URLhttps://www.example.com/politics/budget
post.short_idsträngNär länken har förkortatsDen korta länkens identifierareaB3xY
post.social_account.typesträngAlltidMålnätverklinkedin
post.social_account.namesträngAlltidKontots namnExample News
post.social_account.slugsträngAlltidKontots slugexample-news
post.social_account.external_idsträngAlltidKontots identifierare på nätverket1000000001
post.source.typesträngNär det är käntInläggets ursprung (bot, manuellt och så vidare)bot
post.source.bot_titlesträngBotinläggNamnet på boten som skapade inläggetPolitics bot
post.source.organic_urlsträngArtikelinläggKällartikelns URLhttps://www.example.com/politics/budget
post.breaking_news.activebooleskAlltidBreaking news-lägefalse
post.schedule.start_datedatumSchemalagda inläggPlanerat publiceringsdatum (UTC)2026-10-19T06:00:00.000Z
post.published_atdatumEfter publiceringPubliceringsdatum (UTC)2026-10-19T06:00:04.000Z
post.comment.messagesträngNär den är skrivenText i första kommentarenRead more: [SHORTLINK]
post.counter.*talSe räknareInläggets resultat42

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ägTypBeskrivning
post.counter.clicktalKlick
post.counter.engagementtalEngagemang
post.counter.reachtalRäckvidd
post.counter.videoViewstalVideovisningar
post.counter.ctrtalKlickfrekvens
post.counter.overperformingtalPoäng för överprestation
post.counter.monetizationtalIntäkter från intäktsgenerering av innehåll
organic.counter.viewtalArtikelvisningar (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: h timme, d dag, w vecka, m må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.

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

7. Funktioner#

FunktionReturnerarBeskrivning
hasLink()boolesktrue när inlägget innehåller en länk. Kontrollera det innan du skriver [SHORTLINK].
hasFirstCommentShortlink()boolesktrue när den första kommentaren redan innehåller [SHORTLINK].
canPublishPostWithoutSpam()boolesktrue när kontots antispamregler tillåter ytterligare ett länkinlägg nu.
canPublishCommentWithoutSpam()booleskSamma kontroll för en kommentar som innehåller en länk.
shouldAddComment(metric)booleskTillä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ängSammanfattar source, eller kortar den vid en ordgräns när justCrop är true.
gpt(prompt, model), claude(…), gemini(…), mistral(…)strängGenererar text med varumärkets autentiseringsuppgifter hos leverantören. Se AI-generering av meddelanden.
airtable(…)strängLä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:

twig
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.

FilterEffektExempelResultat
upperVersaler, diakritiska tecken behålls'élan VITAL'|upperÉLAN VITAL
lowerGemener'élan VITAL'|lowerélan vital
capitalizeFörsta bokstaven versal, resten oförändrat'élan VITAL'|capitalizeÉlan VITAL
slugifyURL-slug'Budget 2027 : ménages'|slugifybudget-2027-menages
camelOrden sammanfogas, vart och ett med inledande versal'budget des ménages'|camelBudgetDesMénages
cleanSlår ihop och trimmar mellanslag och tar bort mellanslagen runt ett bindestreck' Paris - Lyon '|cleanParis-Lyon
ucPhraseInledande versaler, korta ord behålls med gemener'le budget des ménages'|ucPhraseLe Budget des Ménages
encodeURL-kodar men behåller reserverade tecken som &, =, /, ?, #'a b&c'|encodea+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
cleanTextTypografisk rensning: trimmar och lägger till franska hårda mellanslag'Lire aussi : le budget. '|cleanTextLire aussi : le budget. (hårt mellanslag före kolonet)

Regler som förhindrar renderingsfel:

  • extractMatch och pregReplace misslyckas när värdet är null. Lägg till |default('') före dem: {{ meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') }}.
  • encode skyddar 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.

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 -%}

Beskrivningens första mening, annars beskrivningen, annars titeln.

twig
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.

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

Text efter nätverk och inläggstyp.

twig
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.

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

Spårningsvärden från målkontot.

twig
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.

twig
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.

twig
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.

twig
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.

  1. 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.

  2. Å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:

    twig
    1{{- 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.

    Botinställningar i Nonli med Message's source inställd på Title, bredvid knapparna Cancel och Save

    Utdrag ur botinställningarna: Message's source inställd på Title, innan du klickar på Save.

  3. 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.

  4. 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:

twig
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 sentence behå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:

  1. Kontrollera vad som samlades in. Jämför description med 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.
  2. Ä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.
  3. 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.
  4. 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”:

twig
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:

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") }}

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, inte categories; tags, inte tag.
  • 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 med in.
  • Jämför kategorier med deras normaliserade form (politique societe, inte Politique & 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.

Var den här artikeln till hjälp?

Boka en personlig demo med vårt team.