Pour créer un Smart Message et pouvoir l’utiliser dans les bots (smart message) et dans les posts (icône ampoule), il vous suffit de vous rendre dans la marque et de créer le template que vous souhaitez créer
Exemple générique
{%- if social_network =='facebook' and post_type == 'link' -%}
{{- meta_custom_facebook ?? ai_generated -}}
{%- elseif social_network =='linkedin' and post_type == 'link' -%}
{{- meta_custom_facebook ?? title ~ "\n\n" ~ description -}}
{%- elseif social_network =='twitter' and post_type == 'photo' -%}
{{- title }}
{{ description -}}
{%- else -%}
{{- ai_generated -}}
{%- endif -%}
Exemple pour afficher le titre et le lien en dessous, sur les Twitter Cards (type lien)
{%- if social_network =='twitter' and post_type == 'link' -%}
{{- title ?? ai_generated -}}
{{- '\n' -}}
➡️ [SHORTLINK]
{%- elseif post_type == 'photo' -%}
{{- ai_generated -}}
{{- '\n' -}}
➡️ [SHORTLINK]
{%- else -%}
{{- ai_generated -}}
{%- endif -%}
Exemple pour mentionner automatiquement les auteurs sur Twitter
{%- set twitterAccounts = {
'Fabrice Arfi' : '@fabricearfi',
'Antton Rouget': '@AnttonRouget',
'Joseph Confavreux': '@JoConfa'
} -%}
{%- if social_network =='twitter' and post_type == 'link' -%}
{{- title ?? ai_generated -}}
{%- for authorName in authors -%}
{%- if twitterAccounts[authorName] -%}
{{- loop.index == 1 ? '\nPar ' : ' ' -}}
{{- twitterAccounts[authorName] -}}
{%- endif -%}
{%- endfor -%}
{{- '\n\n' -}}
➡️ [SHORTLINK]
{%- else -%}
{{- ai_generated -}}
{%- endif -%}
Exemple pour mentionner automatiquement les auteurs sur Twitter grâce à Airtable
{%- if social_network =='twitter' and post_type == 'link' -%}
{{- title ?? ai_generated -}}
{%- set isFirstAuthorMentioned = false -%}
{%- for authorName in authors -%}
{%- set mention = airtable('BDD ID', 'Nom de la table', 'Nom du champs que l\'on envoie (Auteur)', authorName, 'Nom du champs à retourner (mention Twitter)') -%}
{%- if mention -%}
{%- if not isFirstAuthorMentioned -%}
{{- '\nPar ' -}}
{%- set isFirstAuthorMentioned = true -%}
{%- else -%}
{{- ' ' -}}
{%- endif -%}
{{- mention -}}
{%- endif -%}
{%- endfor -%}
{{- '\n\n' -}}
➡️ [SHORTLINK]
{%- else -%}
{{- ai_generated -}}
{%- endif -%}
Exemple pour générer automatiquement des hashtags sur Twitter grâce à la microdata “keywords” de l’article
{%- if social_network == 'twitter' and post_type == 'link' -%}
{{- title ~ '\n' -}}
➡️ [SHORTLINK]
{{- '\n' -}}
{%- for tag in tags|slice(0, 10) -%}
{{- loop.index > 1 ? ' #' : '#' -}}{{- tag|ucPhrase|replace({' ': ''}) -}}
{%- endfor -%}
{%- else -%}
{{- ai_generated -}}
{%- endif -%}
Utilisation de la fonction aiGenerated
aiGenerated(messageVar, charCountMin, charCountTarget, charCountMax, etcChars, justCrop)
- messageVar : chaîne de caractères, variable à utiliser dans le résumé intelligent (facultatif, par défaut utilisation de la description pour les posts de type lien et du titre pour les autres types de posts).
- charCountMin : nombre entier, nombre minimum de caractères dans le résumé intelligent (facultatif, valeur par défaut 25)
- charCountTarget : nombre entier, nombre cible de caractères dans le résumé intelligent (facultatif, valeur par défaut 60)
- charCountMax : nombre entier, nombre maximum de caractères dans le résumé intelligent (facultatif, valeur par défaut 230)
- etcChars : chaîne de caractères ou tableau de chaînes de caractères pouvant être utilisées en suffixe du résumé ; si plusieurs chaînes sont transmises, un est choisie aléatoirement (facultatif, valeur par défaut [“👇”, “ ⬇️”, “ ⤵️”, “…”])
- justCrop : booléen indiquant l’utilisation du cropper uniquement (non utilisation du résumé intelligent) (facultatif, false par défaut)
Exemple :
{% set etcChars={
0: ', etc.',
1: '...',
2: '⬇️'
} %}
{{ aiGenerated('description', 25, 50, 60, etcChars) }}
Utiliser la description et mettre des sauts de ligne automatiquement
{%- set max_characters = 2000 -%}
{%- if social_network == 'twitter' -%}
{%- set max_characters = 200 -%}
{%- elseif social_network == 'threads' -%}
{%- set max_characters = 400 -%}
{%- endif -%}
{%- set shortlink = '' -%}
{%- if social_network not in ['instagram', 'tiktok'] and post_type != 'link' -%}
{%- set shortlink = shortlink_prefix ~ '[SHORTLINK]' -%}
{%- endif -%}
{%- set description = description | replace({'...': '…'}) -%}
{%- set description = description | replace({
'. ': '. [BREAK]',
'? ': '? [BREAK]',
'! ': '! [BREAK]',
'… ': '… [BREAK]'
}) -%}
{%- set description_parts = description | split('[BREAK]') -%}
{%- set formatted_description = '' -%}
{%- for part in description_parts -%}
{%- set part = part | trim -%}
{%- if not loop.last and part | last in ['.', '?', '!', '…'] and description_parts[loop.index0 + 1] | first matches '/^[A-Z]/' -%}
{%- set formatted_description = formatted_description ~ part ~ "\n\n" -%}
{%- else -%}
{%- set formatted_description = formatted_description ~ part ~ ' ' -%}
{%- endif -%}
{%- endfor -%}
{{ aiGenerated(formatted_description | trim, 5, max_characters, max_characters, "(…)", 1) }}{{ shortlink -}}
Exemple de smart template avec la fonction aiGenerated()
{%- if social_network =='facebook' and post_type == 'photo' -%}
{{- aiGenerated('description', 25, 100, 300) -}}
{{- '\n' -}}
{{ shortlink_prefix }} [SHORTLINK]
{%- elseif social_network =='facebook' and post_type == 'link' -%}
{{- aiGenerated('description', 25, 60, 300) -}}
{%- else -%}
{{- ai_generated -}}
{%- endif -%}
Chapô complet dans le message pour Facebook de type lien
{%- if title is not empty -%}
{%- if (social_network == 'facebook' or social_network == 'linkedin') and post_type == 'link' -%}
{{- description -}}
{%- elseif social_network == 'instagram' -%}
{{- title -}}
{{- '\n' -}}
{{- description -}}
{%- elseif social_network == 'tiktok' -%}
{{- title -}}
{%- elseif social_network == 'twitter' and post_type == 'link' -%}
{{- title -}}
{%- else -%}
{{- title -}}
{{- shortlink_prefix }} [SHORTLINK]
{%- endif -%}
{%- endif -%}
Extraire une citation du titre
Exemple de titre : « Ils vident leurs chargeurs sur un homme heureux » : les révélations de l’enquête sur la mort d’Aramburu
Nous souhaitons extraire la citation entre «
et »
{%- set citation = title | extractMatch('/(«\\\s.+\\\s»)/u') %}
{{- citation ?: title -}}
Dans ce cas nous souhaitons extraire la fin du titre après les :
{{- title | extractMatch('/«\\\s.+\\\s»\\\s:\\\s(.+)/u') | capitalize ?: title -}}
Ajout d’un premier commentaire avec un lien raccourci
Uniquement pour les posts facebook
de type photo
{%- if social_network == 'facebook' and post_type == 'photo' -%}
Plus d'infos ici ➡️ [SHORTLINK]
{%- endif -%}
Pour les posts facebook
et linkedin
de type photo
nous ajoutons des commentaires sur 50% des posts
{%- if (social_network == 'facebook' or social_network == 'linkedin') and post_type == 'photo' -%}
{%- set percentage = 50 -%}
{%- if random(0, 100) < percentage -%}
Plus d'infos ici ➡️ [SHORTLINK]
{%- endif -%}
{%- elseif social_network == 'instagram' -%}
Plus d\'infos dans le lien en bio {{ post.social_account.slug -}}
{{ '\n' -}}
{%- for tag in tags|slice(0, 10) -%}
{{- loop.index > 1 ? ' #' : '#' -}}{{- tag|ucPhrase|replace({' ': ''}) -}}
{%- endfor -%}
{%- endif -%}
Message si premier commentaire avec shortlink présent
{%- set needDescriptionFirst = post_type == 'link' -%}
{%- if needDescriptionFirst == true -%}
{% set message = description ?? title %}
{%- else -%}
{% set message = title %}
{%- endif -%}
{%- set justCrop = post_type != 'link' -%}
{{- aiGenerated(message, 25, 60, 230, null, justCrop) -}}
{%- if
message is not empty
and (
(
social_network != 'instagram'
and social_network != 'facebook'
and social_network != 'tiktok'
and post_type is not empty
and post_type != 'link'
) or social_network == 'twitter'
)
-%}
{{ shortlink_prefix }}[SHORTLINK]
{%- endif -%}
Utiliser ChatGPT d’OpenAI pour générer un message
Pour utiliser Open AI vous devez ajouter une clé d’API dans Nonli en passant par le menu burger → Mon entreprise → Section “OpenAI”
Exemple de fonction pour tous les types de posts avec le modèle GPT 4o
{{- gpt('Tu es community manager expert en teasing sur ' ~ social_network ~ ' dans la presse d\'information. Maîtrisant les émojis et les tendances utilisateurs, tu crées des teasers de moins de ' ~ max_characters ~ ' caractères, optimisés pour l\'algorithme, sans hashtags et avec un seul emoji. Tes teasers surprennent, apportent une info complémentaire au titre, et s\'adaptent au sujet avec un style journalistique. Pour cet article :
Titre : ' ~ title ~ '
Description : ' ~ description ~ '
Génère uniquement un teaser pour ' ~ social_network ~ ' de moins de ' ~ max_characters ~ ' caractères, sans entourer le résultat par des doubles quotes, sans ajout d'autre contenu.', 'gpt-4o') -}}
Ajout du shortlink dans certains contexte avec le modèle GPT 4o
{%- set max_characters = 150 -%}
{%- set shortlink = '' -%}
{%- if social_network not in ['instagram', 'tiktok'] and post_type != 'link' and not hasFirstCommentShortlink() -%}
{%- set shortlink = shortlink_prefix ~ '[SHORTLINK]' -%}
{%- set max_characters = 60 -%}
{%- endif -%}
{%- set prompt =
'Tu es community manager expert en teasing sur ' ~ social_network ~ ' dans la presse d\'information. Maîtrisant les émojis et les tendances utilisateurs, tu crées des teasers de moins de ' ~ max_characters ~ ' caractères, optimisés pour l\'algorithme, sans hashtags et avec un seul emoji. Tes teasers surprennent, apportent une info complémentaire au titre, et s\'adaptent au sujet avec un style journalistique. Pour cet article :
Titre : ' ~ title ~ '
Description : ' ~ description ~ '
Génère uniquement un teaser pour ' ~ social_network ~ ' de moins de ' ~ max_characters ~ ' caractères, sans entourer le résultat par des doubles quotes, sans ajout d\'autre contenu.'
-%}
{{- gpt(prompt, 'gpt-4o') -}}{{ shortlink -}}
Utiliser GPT-4o-mini pour générer un message
{%- set max_characters = 150 -%}
{%- set shortlink = '' -%}
{%- if social_network not in ['instagram', 'tiktok'] and post_type != 'link' and not hasFirstCommentShortlink() -%}
{%- set shortlink = shortlink_prefix ~ '[SHORTLINK]' -%}
{%- set max_characters = 60 -%}
{%- endif -%}
{%- set prompt =
'Pour cet article :
Titre : ' ~ title ~ '
Description : ' ~ description ~ '
Génère uniquement un teaser de moins de ' ~ max_characters ~ ' caractères, avec un seul émoji, sans ajouter d\'autre contenu.'
-%}
{{- gpt(prompt, 'gpt-4o-mini') -}}{{ shortlink -}}
Créer un message sobre sur les sujets à risque
{%- set max_characters = 150 -%}
{%- set shortlink = '' -%}
{%- if social_network not in ['instagram', 'tiktok'] and post_type != 'link' and not hasFirstCommentShortlink() -%}
{%- set shortlink = shortlink_prefix ~ '[SHORTLINK]' -%}
{%- endif -%}
{%- set prompt =
'Tu es community manager expert en wording sur ' ~ social_network ~ ' dans la presse d\'information. ' ~
'Maîtrisant les émojis et les tendances utilisateurs, tu crées des teasers de moins de ' ~ max_characters ~ ' caractères, optimisés pour l\'algorithme, sans hashtags ni appels à l\'action. ' ~
'Rédigé dans un français pertinent, clair et simple à partir du ' ~ title ~ ' et de la ' ~ description ~ ', tes teasers doivent engager et intriguer, sans dévoiler l\'information principale. ' ~
'Adapte le ton de ton wording au sujet de l\'article : s\'il est léger, tu peux utiliser des émojis et adopter un ton convivial. ' ~
'Si le sujet est sérieux ou négatif (par exemple : procès, viols, disparitions, scandales, décès, accidents, crimes), n\'utilise jamais d\'émoji et adopte un ton sobre et respectueux. ' ~
'N\'utilise pas de mots incitant à une action directe comme "découvrez", "cliquez", "lisez", ou tout autre appel à l\'action. ' ~
'Pour cet article :
Titre : ' ~ title ~ '
Description : ' ~ description ~ '
Génère uniquement un teaser pour ' ~ social_network ~ ' de moins de ' ~ max_characters ~ ' caractères, sans entourer le résultat par des doubles quotes, sans ajout d\'autre contenu. Il ne faut pas que l\'on sache que c\'est toi qui a rédigé le teasing.'
-%}
{{- gpt(prompt, 'gpt-4o-mini') }}{{ shortlink -}}
Réécrire un titre pour l’afficher sur une image
{%- set min_characters = 60 -%}
{%- set max_characters = 80 -%}
{%- set shortlink = '' -%}
{%- set prompt = 'Génère un titre adapté pour cet article avec le titre suivant : "' ~ title ~ '" et la description : "' ~ description ~ '". Le titre doit contenir entre ' ~ min_characters ~ ' et ' ~ max_characters ~ ' caractères. N\'ajoute ni emoji ni hashtag. Donne uniquement le texte final, sans entourer le résultat par des doubles quotes.' -%}
{{- gpt(prompt, 'gpt-4o-mini') -}}
Pour les posts facebook
et linkedin
de type photo
nous ajoutons des commentaires sur 50% des posts qui sont générés par GPT-4o-mini
{%- if (social_network == 'facebook' or social_network == 'linkedin') and post_type == 'photo' -%}
{%- set percentage = 100 -%}
{%- if random(0, 100) < percentage -%}
{%- set prompt =
'Pour cet article :
Titre : ' ~ title ~ '
Description : ' ~ description ~ '
Génère un appel à l\'action de moins de 100 caractères sans hashtags avec un émoji à la fin qui sera placé juste avant le lien vers l\'article'
-%}
{{- gpt(prompt, 'gpt-4o-mini') }} [SHORTLINK]
{%- endif -%}
{%- elseif social_network == 'instagram' -%}
Plus d\'infos dans le lien en bio {{ post.social_account.slug -}}
{{ '\n' -}}
{%- for tag in tags|slice(0, 10) -%}
{{- loop.index > 1 ? ' #' : '#' -}}{{- tag|ucPhrase|replace({' ': ''}) -}}
{%- endfor -%}
{%- endif -%}
Créer un visuel avec l’éphéméride
Écrire le prénom
{%- set prompt = 'Écris uniquement un prénom dont c\'est la fête aujourd\'hui, sans introduction' -%}
{{- gpt(prompt, 'gpt-4o-mini') -}}
Générer le message d’accroche
{%- set prompt = 'Génère un message d'accroche court et joyeux pour souhaiter une bonne fête dans le cadre d'une éphéméride. Exemple : "Passe une agréable journée 🥳"' -%}
{{- gpt(prompt, 'gpt-4o-mini') -}}
La Une d’un journal
{%- set dayOfWeek = "now"|date("N") -%}
{%- set dayNames = ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'] -%}
{%- set dayName = dayNames[dayOfWeek|number_format - 1] -%}
{%- if dayOfWeek == "6" or dayOfWeek == "7" -%}
🗞️ Voici la une du journal «Le Temps» de ce week-end.
{%- else -%}
🗞️ Voici la une du journal «Le Temps» de ce {{ dayName }}.
{%- endif -%}