Quelles variables Twig sont disponibles dans Nonli ?

Aussi disponible en :English

Les templates Smart Message s’écrivent en Twig 3. Cette page liste chaque variable, fonction et filtre que Nonli prend en charge dans ce contexte, avec son type, les cas où elle peut manquer et un exemple testé. Pour créer un template pas à pas, commencez par Comment créer un Smart Message.

1. Où ce contexte s’applique#

Le même contexte est disponible à deux endroits :

  • Les templates Smart Message, utilisés par les robots, par le bouton ampoule de l’éditeur de publication et par le bouton du premier commentaire. Ils peuvent remplir le message, le titre, la description, le commentaire, le titre de vidéo, le texte alternatif et le titre d’ancre TikTok.
  • Les valeurs dynamiques de Smart Image, quand un texte ou une couleur de Smart Image a pour source un template Smart Message. La variable context vaut alors 'smart_image'. Voir Comment utiliser les couleurs dynamiques dans Smart Image.

Les paramètres d’URL dynamiques et le paywall dynamique utilisent aussi Twig, mais avec un contexte beaucoup plus réduit : un post restreint (source, social_account, post_type, author, user_id, breaking_news, short_id), referer, la fonction isComment(), ainsi que les compteurs et percentiles. organic, les alias de premier niveau et les fonctions Smart Message ci-dessous n’y existent pas.

2. Règles de nommage et de type#

  • Préférez les chemins complets. Écrivez organic.title ou post.social_account.type plutôt qu’un alias de premier niveau. Les alias restent pris en charge pour les templates existants.
  • Les noms sont en snake_case et reprennent les noms des champs stockés : canonical_url, published_at, open_graph.
  • Respectez le singulier et le pluriel. Les chemins sont organic.category, organic.tag, organic.author ; les alias sont tags et authors. Un nom erroné comme categories, organic.categories, tag ou author ne provoque pas d’erreur : il produit une valeur vide.
  • Types. Une chaîne est un texte. Une liste est une suite de valeurs : testez-la avec in, lisez-la avec |first ou |join(', '), ne l’affichez jamais directement. Un objet regroupe d’autres chemins. Viennent ensuite les nombres, les booléens et les dates. Les dates sont des chaînes ISO 8601 en UTC, comme 2026-10-18T07:30:00.000Z ; formatez-les avec |date.
  • Absence. Une valeur n’existe que si la source la fournit. Cela dépend de l’origine de la publication (article, publication manuelle, publication sans lien), du réseau social, du type de publication et des métadonnées trouvées sur la page. Un chemin organic absent produit une valeur vide ; une liste vide est traitée comme absente.

Utilisez ?? pour remplacer une valeur absente ou null, et ?: ou |default() pour remplacer aussi une chaîne vide :

ExpressionValeur absenteValeur ''Valeur 'A'
{{ x ?? 'B' }}B(vide)A
{{ x ?: 'B' }}BBA
{{ x|default('B') }}BBA

Après un filtre, utilisez ?: ou |default(), jamais ?? : {{ x|upper ?? 'B' }} est une erreur de syntaxe, et le template est refusé à l’enregistrement.

3. Variables de premier niveau#

Ces variables sont toujours définies dans un Smart Message.

CheminTypeDisponibilitéDescriptionExemple
social_networkchaîneToujoursRéseau du compte de destination ; facebook s’il est inconnu.instagram
post_typechaîneToujoursType de publication ; link s’il est inconnu.photo
empty_messagechaîneToujoursUne chaîne vide, pour ne rien renvoyer volontairement.''
shortlink_prefixchaîneToujoursTexte de la marque placé avant un lien court.➡️
postobjetToujoursLa publication en cours de création ou d’édition (voir post.*).
organicobjetToujoursL’article source (voir organic.*) ; une liste vide [] quand la publication n’a pas d’article.
contextchaîneToujoursChamp en cours de génération : message, title, description, comment, videoTitle, altText, tikTokAnchorTitle, ou smart_image quand Smart Image exécute le template.message

3.1. Alias historiques#

Quand la publication provient d’un article, Nonli copie aussi certains champs de l’article au premier niveau. Ces alias sont définis (éventuellement null) dès qu’un article existe, et non définis quand la publication n’en a pas. Chacun a un chemin complet à privilégier.

AliasChemin complet à privilégierTypeContenu
titleorganic.titlechaîneTitre de l’article retenu par Nonli
descriptionorganic.descriptionchaîneDescription de l’article retenue par Nonli
title1organic.html.h1chaînePremier titre H1 de la page
title2organic.html.h2chaînePremier titre H2 de la page
head_titleorganic.head.titlechaîneBalise HTML title, souvent le titre SEO plus long
meta_descriptionorganic.meta.descriptionchaîneMeta description native de la page
og_titleorganic.meta.open_graph.titlechaîneTitre Open Graph
og_descriptionorganic.meta.open_graph.descriptionchaîneDescription Open Graph
twitter_titleorganic.meta.twitter.titlechaîneTitre Twitter Card
twitter_descriptionorganic.meta.twitter.descriptionchaîneDescription Twitter Card
meta_custom_facebook, meta_custom_twitter, meta_custom_instagram, meta_custom_linkedin, meta_custom_tiktok, meta_custom_pinterestorganic.meta.custom.facebook (et ainsi de suite)chaîneMétadonnée personnalisée par réseau, extraite par une règle propre au site
meta_custom_publisherorganic.meta.custom.publisherchaîneChamp éditeur personnalisé extrait par une règle propre au site, par exemple le premier paragraphe du corps
meta_custom_rss_titleorganic.meta.custom.rss.titlechaîneTitre de l’élément RSS
meta_custom_rss_descriptionorganic.meta.custom.rss.descriptionchaîneDescription de l’élément RSS
authorsorganic.authorlisteAuteurs de l’article
tagsorganic.taglisteTags de l’article

Sur un article réel, title et title1 contiennent souvent le même titre, head_title le titre SEO plus long et meta_description commence souvent par le chapô. Chacun peut être vide : prévoyez toujours une valeur de repli.

Les choix « Meta custom … » de l’éditeur et des sources de robot correspondent à ces alias meta_custom_*. Ils ne sont remplis que sur les sites où Nonli a configuré une règle d’extraction dédiée. Un article d’un site extérieur à votre entreprise n’expose que ses champs publics : organic.counter.view y est alors absent.

4. [object Object], : l’article source#

organic existe quand la publication provient d’un article (robot, URL collée dans l’éditeur, SDK, RSS). Une publication manuelle ou sans lien n’a pas d’article : organic est alors une liste vide et tous les chemins organic.* sont vides.

CheminTypeDisponibilitéDescriptionExemple
organic.urlchaîneChaque articleURL de l’articlehttps://www.example.com/politique/budget
organic.canonical_urlchaîneSi déclaréeURL canoniquehttps://www.example.com/politique/budget
organic.typechaîneChaque articleType de contenu détectéarticle
organic.languagechaîneSi détectéeCode de languefr
organic.titlechaîneLa plupart des articlesTitre retenu par NonliBudget 2027 : ce qui change
organic.descriptionchaîneSi trouvéeDescription retenue par NonliLe gouvernement présente son budget.
organic.html.h1 / organic.html.h2chaîneSi présentPremier titre H1 / H2Les mesures clés
organic.head.titlechaîneSi présentBalise HTML titleBudget 2027 - Example News
organic.meta.descriptionchaîneSi présenteMeta description nativeLe gouvernement présente son budget.
organic.meta.open_graph.title / .descriptionchaîneSi présentTitre / description Open GraphBudget 2027
organic.meta.open_graph.article.sectionchaîneSi présentearticle:section Open GraphPolitique
organic.meta.twitter.title / .descriptionchaîneSi présentTitre / description Twitter CardBudget 2027
organic.meta.custom.*chaîneRègle propre au siteChamps personnalisés listés dans le tableau des alias
organic.categorylisteSi trouvéesCatégories normalisées, dont articleSection du JSON-LD['politique', 'economie']
organic.taglisteSi trouvésTags de l’article['budget', 'impots']
organic.authorlisteSi trouvésAuteurs de l’article['Camille Martin']
organic.imagelisteSi trouvéesURL des images trouvées sur la page['https://…/budget.jpg']
organic.image_altchaîneSi trouvéTexte alternatif de l’image principaleL’hémicycle de l’Assemblée nationale
organic.published_atdateSi trouvéeDate de publication (UTC)2026-10-18T07:30:00.000Z
organic.modified_atdateSi trouvéeDate de dernière modification (UTC)2026-10-18T09:00:00.000Z
organic.counter.viewnombreVoir les compteursVues de l’article mesurées par Nonli1520

4.1. Catégories et ,[object Object]#

Nonli enregistre la valeur articleSection du JSON-LD, ainsi que les autres signaux de catégorie de la page, dans organic.category. C’est une liste, pas un texte, et il n’existe pas de variable categories. Les valeurs sont normalisées : minuscules, accents retirés, ponctuation remplacée par des espaces. Par exemple Politique & Société, Économie et Sports > Rugby deviennent politique societe, economie et sports rugby. Comparez toujours avec des valeurs réellement observées sur vos propres articles.

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

Première catégorie, ou rien : {{ organic.category|default([])|first|default('') }}

Toutes les catégories : {{ organic.category|default([])|join(', ') }}

La section Open Graph brute, non normalisée, reste disponible avec {{ organic.meta.open_graph.article.section ?? '' }}.

5. [object Object], : la publication#

post décrit la publication en cours de création ou d’édition. Les champs se remplissent progressivement : un champ en cours de génération est encore vide pendant l’exécution de son propre template.

CheminTypeDisponibilitéDescriptionExemple
post.post_typechaîneToujoursType de publicationlink
post.messagechaîneSi rédigéMessage actuelTrois façons d’économiser l’énergie.
post.titlechaîneSi rédigéTitre actuelBudget 2027
post.descriptionchaîneSi rédigéeDescription actuelleCe qui change pour les ménages.
post.authorchaîneSi connuAuteur du contenu publié (un texte, pas une liste)Camille Martin
post.taglisteSi connusTags de la publication['budget']
post.languagechaîneSi connueCode de languefr
post.target_urlchaînePublications avec lienURL de destinationhttps://www.example.com/politique/budget
post.short_idchaîneAprès raccourcissementIdentifiant du lien courtaB3xY
post.social_account.typechaîneToujoursRéseau de destinationlinkedin
post.social_account.namechaîneToujoursNom du compteExample News
post.social_account.slugchaîneToujoursSlug du compteexample-news
post.social_account.external_idchaîneToujoursIdentifiant du compte sur le réseau1000000001
post.source.typechaîneSi connueOrigine de la publication (robot, manuelle, etc.)bot
post.source.bot_titlechaînePublications de robotNom du robot qui a créé la publicationRobot politique
post.source.organic_urlchaînePublications d’articleURL de l’article sourcehttps://www.example.com/politique/budget
post.breaking_news.activebooléenToujoursMode breaking newsfalse
post.schedule.start_datedatePublications programméesDate de publication prévue (UTC)2026-10-19T06:00:00.000Z
post.published_atdateAprès publicationDate de publication (UTC)2026-10-19T06:00:04.000Z
post.comment.messagechaîneSi rédigéTexte du premier commentaireÀ lire : [SHORTLINK]
post.counter.*nombreVoir les compteursPerformances de la publication42

Les identifiants internes et les champs techniques (identifiants d’utilisateur, de société et de marque, e-mail du compte, URL de webhook, statuts, traces d’erreur, compteurs bruts) sont volontairement exclus : ils ne constituent pas une interface publique stable et ne doivent pas apparaître dans un texte publié. post.user_id n’est documenté que pour les paramètres d’URL.

6. Compteurs et percentiles#

Un compteur n’est chargé que si le template le nomme explicitement, par exemple post.counter.click. Il est absent tant que la mesure n’existe pas, ce qui est toujours le cas pour une publication pas encore publiée. Prévoyez toujours une valeur de repli : {{ post.counter.click ?? 0 }}.

CheminTypeDescription
post.counter.clicknombreClics
post.counter.engagementnombreEngagement
post.counter.reachnombrePortée
post.counter.videoViewsnombreVues vidéo
post.counter.ctrnombreTaux de clic
post.counter.overperformingnombreScore de surperformance
post.counter.monetizationnombreRevenus de monétisation du contenu
organic.counter.viewnombreVues de l’article (uniquement si la publication a un article)

Une variable de percentile compare une publication aux publications du même compte sur une période, breaking news exclues. Son nom est percentile + percentile (1 ou 2 chiffres) + mesure + durée (1 ou 2 chiffres) + unité :

  • mesures : Click, Engagement, Reach, VideoViews, Ctr, Overperforming, Monetization ;
  • unités : h heure, d jour, w semaine, m mois, y année.

percentile50Click1d est la médiane des clics sur 1 jour ; percentile90Engagement7d le 90e percentile d’engagement sur 7 jours. La valeur est null sans données et reste en cache 30 minutes.

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

7. Fonctions#

FonctionRenvoieDescription
hasLink()booléentrue si la publication contient un lien. Vérifiez-la avant d’écrire [SHORTLINK].
hasFirstCommentShortlink()booléentrue si le premier commentaire contient déjà [SHORTLINK].
canPublishPostWithoutSpam()booléentrue si les règles anti-spam du compte autorisent maintenant une nouvelle publication avec lien.
canPublishCommentWithoutSpam()booléenMême vérification pour un commentaire contenant un lien.
shouldAddComment(metric)booléenApplique la règle d’échantillonnage des commentaires configurée ; la mesure facultative désigne le compteur utilisé. Le résultat peut varier.
aiGenerated(source, min, target, max, ending, justCrop)chaîneRésume source, ou le coupe sur une limite de mot quand justCrop vaut true.
gpt(prompt, model), claude(…), gemini(…), mistral(…)chaîneGénèrent du texte avec la clé du fournisseur de la marque. Voir Génération de messages IA.
airtable(…)chaîneLit une valeur dans une base Airtable connectée. Elle ne renvoie que du texte.

aiGenerated() ne résout que les noms de premier niveau passés en texte. Passez 'description' ou la valeur elle-même (organic.title), jamais le texte 'organic.title', qui est renvoyé tel quel. Un nom qui n’existe pas est aussi renvoyé tel quel : sur une publication sans article, aiGenerated('description', …) renvoie le mot description. Protégez-le par une condition :

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

8. Filtres#

Les filtres et opérateurs Twig standard (default, first, join, length, trim, replace, date, map, in, ??, ?:, ~) sont documentés dans la documentation Twig. Nonli ajoute ou remplace les filtres suivants. Tous les résultats ci-dessous proviennent du moteur de rendu Nonli.

FiltreEffetExempleRésultat
upperMajuscules, accents conservés'élan VITAL'|upperÉLAN VITAL
lowerMinuscules'élan VITAL'|lowerélan vital
capitalizePremière lettre en majuscule, le reste inchangé'élan VITAL'|capitalizeÉlan VITAL
slugifySlug d’URL'Budget 2027 : ménages'|slugifybudget-2027-menages
camelMots accolés, chacun avec une majuscule'budget des ménages'|camelBudgetDesMénages
cleanRéduit et retire les espaces superflus, et supprime les espaces autour d’un trait d’union' Paris - Lyon '|cleanParis-Lyon
ucPhraseMajuscule à chaque mot, petits mots en minuscules'le budget des ménages'|ucPhraseLe Budget des Ménages
encodeEncode pour une URL mais conserve les caractères réservés comme &, =, /, ?, #'a b&c'|encodea+b&c
extractMatch(regex)Premier groupe capturé, ou null'Prix : 10 €'|extractMatch('/([[:digit:]]+)/u')10
pregReplace(regex, remplacement)Remplacement par expression régulière'Budget 2027'|pregReplace('/[[:digit:]]+/', 'N')Budget N
cleanTextNettoyage typographique : retire les espaces superflus, ajoute les espaces insécables françaises'Lire aussi : le budget. '|cleanTextLire aussi : le budget. (espace insécable avant les deux-points)

Règles qui évitent les erreurs de rendu :

  • extractMatch et pregReplace échouent quand la valeur est null. Ajoutez |default('') avant eux : {{ meta_custom_publisher|default('')|extractMatch('/^(.+?[.!?…])(?=[[:space:]]|$)/u') }}.
  • encode ne protège pas &, = ni # : ne l’utilisez pas pour construire un paramètre à partir d’une valeur qui peut en contenir.
  • Préférez les classes POSIX comme [[:digit:]], [[:space:]] et [[:alpha:]] aux séquences avec barre oblique inverse : elles résistent au copier-coller. Copiez les templates depuis un bloc de code, jamais depuis une ligne de chat ou d’e-mail mise en forme, qui peut perdre des barres obliques inverses.

9. Recettes testées#

Chaque recette ci-dessous a été exécutée avec le moteur Twig de Nonli sur des articles complets, partiels et vides.

Titre (H1 ou titre) suivi de la meta description, avec un lien court seulement là où il est utile. Sur une publication Facebook avec lien, elle renvoie le titre et la description ; sur une photo Facebook, elle ajoute ➡️ [SHORTLINK] ; sur Instagram, elle n’ajoute jamais de lien ; sans article, elle renvoie un texte vide.

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

Première phrase de la description, puis la description, puis le titre.

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

Première phrase du champ éditeur personnalisé, avec repli sur le texte alternatif de l’image, puis sur le titre.

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

Texte selon le réseau et le type de publication.

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

Couleur Smart Image selon la catégorie. Renvoie #E50032 pour la politique, #16A34A pour le sport et #6F819D sinon.

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

Valeurs de suivi tirées du compte de destination.

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

Date de publication dans le fuseau horaire de la rédaction. 2026-10-18T07:30:00.000Z devient 18/10/2026 09:30. Sans date de publication, date afficherait la date du jour : la condition laisse alors le texte vide.

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

Hashtags à partir des tags. ['budget', 'impots'] devient #Budget #Impots.

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

Garder les mots courts et les nombres avec le mot suivant (pour les titres Smart Image, qui ne coupent jamais une ligne sur une espace insécable). La finale se jouera à guichets fermés garde La, se et à attachés au mot suivant, et 16 septembre ou 3 000 euros restent groupés. Le changement ne s’applique qu’aux nouvelles images générées.

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

Twig transforme \xC2\xA0 en espace insécable ; $1 conserve le mot court ou le nombre trouvé.

10. Champs intelligents automatiques et au clic#

Chaque marque a deux réglages : Configuration automatique des champs intelligents et Configuration des champs intelligents au clic sur le bouton. Le bouton de l’éditeur utilise la configuration au clic, et ne revient à la configuration automatique que si aucune configuration au clic n’existe. Un champ réglé sur le template public Vide est effacé quand vous cliquez sur le bouton, car l’éditeur réécrit la valeur générée dans le champ.

Les robots n’utilisent pas ces réglages de marque. Chaque robot a ses propres sources, comme Source du message et Source de la description, qui pointent vers une valeur intégrée (Titre, Description, etc.) ou vers un template Smart Message.

11. Dépannage#

11.1. Mon robot consulte sa source mais ne crée aucune publication#

Un robot actif peut trouver l’article et ne créer aucune publication quand son Smart Message produit un message vide. Cela arrive par exemple quand le template lit un champ facultatif comme meta_custom_publisher et que l’article ne l’a pas. Nonli écarte alors le candidat avant toute publication : un message vide, ou de cinq caractères ou moins une fois le lien court retiré, est écarté, tout comme une publication avec lien dont le titre est vide. Le contrôle du message vide ne s’applique pas aux robots réglés sur Pas de message ni à Pinterest ; le contrôle du titre vide s’applique à tous les robots.

C’est différent d’une publication créée puis refusée par le réseau : celle-ci est visible dans Posts avec un statut d’erreur. Voir Pourquoi mon robot n’a-t-il pas publié cet article ? pour localiser d’abord l’étape.

  1. Comparer. Identifiez le robot exact. Comparez quelques messages qu’il a générés avec succès auparavant avec les métadonnées des articles correspondants, et vérifiez ce qui a changé dans sa configuration. Un nom de template ou le HTML actuel de la page ne prouvent pas à eux seuls ce qui fonctionnait. Exécutez le template actuel sur un article éligible représentatif et vérifiez si la variable est absente ou présente mais vide.

  2. Corriger. Rétablissez de préférence la source de message précédente quand elle donnait la formulation voulue, ou ajoutez une valeur de repli adaptée au type de la variable :

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

    Si le titre de l’article correspond à la formulation voulue, ouvrez le robot, réglez Source du message sur Titre, puis cliquez sur Enregistrer. Cela change le texte généré.

  3. Périmètre. Changer la source du robot ne concerne que les futures publications de ce robot. Modifier un template Smart Message partagé concerne tous les robots et tous les champs qui l’utilisent. Les publications existantes ne sont jamais réécrites.

  4. Vérifier. Attendez la prochaine consultation normale et regardez les articles encore éligibles. Les articles plus anciens ne sont pas rattrapés automatiquement, et une publication manuelle ne prouve pas que le robot est rétabli.

11.2. Surtitre, chapô et première phrase sont des valeurs différentes#

Un surtitre court, le chapô complet et la première phrase d’un texte sont trois choses différentes. Nonli n’a pas de variable dédiée au surtitre : une règle propre au site peut le stocker dans un champ meta_custom_*, et certains articles n’en ont légitimement pas. Ne remplacez pas un surtitre absent par tout le chapô. Affichez le surtitre seulement s’il existe :

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

Avec un surtitre, le résultat est EXCLUSIF | Budget 2027 : ce qui change ; sans surtitre, seulement le titre. Ici meta_custom_instagram n’est qu’un exemple : utilisez le champ que la règle de votre site remplit réellement.

meta_description (meta description native), meta_custom_publisher (champ personnalisé) et description (description retenue par Nonli) sont des entrées distinctes. Un template qui lit l’une n’est pas affecté quand une autre est corrigée. Mettre à jour un champ collecté ne change ni la source sélectionnée du robot, ni le texte Smart Image, ni les publications déjà générées.

11.3. Les apostrophes cassent mon template#

Dans une chaîne Twig entre apostrophes droites, une apostrophe termine la chaîne. Ce template est refusé à l’enregistrement, avec une erreur comme « Syntaxe du template invalide à la ligne 1 » :

twig
1{{ gpt('Résume l'article en une phrase') }}

Échappez l’apostrophe, utilisez une apostrophe typographique, ou utilisez des guillemets doubles :

twig
1{{ gpt('Résume l\'article en une phrase') }}
2{{ gpt('Résume l’article en une phrase') }}
3{{ gpt("Résume l'article en une phrase") }}

Le numéro de ligne indiqué est celui de la ligne du template qui contient l’erreur.

11.4. Une variable reste vide#

  • Vérifiez l’orthographe exacte : organic.category, pas categories ; tags, pas tag.
  • Vérifiez que la publication a un article : organic est vide pour les publications manuelles et sans lien, et les alias ne sont alors pas définis.
  • Affichez une liste avec |join(', ') ou testez-la avec in.
  • Comparez les catégories avec leur forme normalisée (politique societe, pas Politique & Société).
  • Vérifiez les compteurs avec ?? 0 : ils sont absents avant la publication.

11.5. Un template peut-il ajouter des collaborateurs Instagram ?#

Non. Les templates ne remplissent que des champs texte, et airtable() renvoie du texte : il peut écrire une @mention, pas créer une collaboration. Ajoutez les collaborateurs dans l’éditeur de publication avec Collaborateurs, ou avec le champ d’API collaborator[] (slug, type) de POST ou PUT /v2.1/posts/bulk. Meta accepte jusqu’à 3 collaborateurs ; voir Comment faire une collaboration Instagram avec Nonli.

Cet article vous a-t-il été utile ?

Réservez une démo personnalisée avec notre équipe.