Logo
  • Blog-fr
  • Blog-en
Login

Comment créer un smart message

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

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

Exemple pour mentionner automatiquement les auteurs sur Twitter grâce à Airtable

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

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

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

Message si premier commentaire avec shortlink présent

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

Ajout du shortlink dans certains contexte avec le modèle GPT 4o

Utiliser GPT-4o-mini pour générer un message

Créer un message sobre sur les sujets à risque

Prendre en compte la date du jour et être attentif aux fautes d’orthographe

Réécrire un titre pour l’afficher sur une image

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

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

Logo

Terms-en

CGU-fr

Cookies-en

Cookies-fr

RGPD-fr

GDPR-en

Confidentialité-fr

Privacy-en

FAQ-en

FAQ-fr

© Nonli - Not Only Link

{%- 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 -%} 
{%- 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 -%}
{%- 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 -%}
{%- 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 -}}
{%- 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 -%}
{%- 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 -%}
{%- 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 -%}
{{- 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') -}}
{%- 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 -}}
{%- 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 -}}
{%- 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 -}}
{%- 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 current_date = "now"|date("d/m/Y") -%} {# Récupère la date d'aujourd'hui au format jour/mois/année #}

{%- set prompt = 
    'Nous sommes le ' ~ current_date ~ '. 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 -}}
{%- set min_characters = 60 -%}
{%- set max_characters = 80 -%}
{%- set shortlink = '' -%}
{%- set current_date = "now"|date("d/m/Y") -%} {# Récupère la date actuelle #}

{%- set prompt = 
    'Nous sommes le ' ~ current_date ~ '. 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. Ne mentionne aucun nom propre ou information qui n\'apparaît pas explicitement dans le titre ou la description de l\'article. Écris un français parfait, en respectant les majuscules sur les noms propres présents et sans majuscule après les deux-points sauf pour les noms propres.'
-%}

{{- gpt(prompt, '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 -%}
{%- 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 -%}