{
  "format": 1,
  "key": "calendrier-editorial",
  "label": "Calendrier éditorial",
  "summary": "Articles, posts et newsletters planifiés sur un calendrier ; l'IA propose accroches et mots-clés.",
  "description": "Pour une équipe marketing ou une rédaction. Chaque contenu avance de l'idée à la publication, se place sur le calendrier des parutions et appartient à une campagne. L'IA propose une accroche et des mots-clés à partir du brief, et un formulaire permet à toute l'entreprise de suggérer un sujet.",
  "category": "Marketing",
  "icon": "megaphone",
  "color": "#f97316",
  "tags": [
    "IA",
    "Calendrier",
    "Kanban",
    "Formulaire"
  ],
  "base": {
    "label": "Calendrier éditorial",
    "description": "Les contenus à produire et à publier, par canal et par campagne."
  },
  "tables": [
    {
      "key": "contenus",
      "label": "Contenus",
      "icon": "file-text",
      "color": "#f97316",
      "fields": [
        {
          "label": "Titre",
          "kind": "short_text",
          "required": true
        },
        {
          "label": "Format",
          "kind": "select",
          "options": [
            {
              "label": "Article",
              "value": "article",
              "color": "#3b82f6",
              "icon": null
            },
            {
              "label": "Newsletter",
              "value": "newsletter",
              "color": "#8b5cf6",
              "icon": null
            },
            {
              "label": "Post LinkedIn",
              "value": "post_linkedin",
              "color": "#0ea5e9",
              "icon": null
            },
            {
              "label": "Vidéo",
              "value": "video",
              "color": "#ef4444",
              "icon": null
            },
            {
              "label": "Podcast",
              "value": "podcast",
              "color": "#10b981",
              "icon": null
            }
          ]
        },
        {
          "label": "Statut",
          "kind": "select",
          "options": [
            {
              "label": "Idée",
              "value": "idee",
              "color": "#94a3b8",
              "icon": null
            },
            {
              "label": "Rédaction",
              "value": "redaction",
              "color": "#3b82f6",
              "icon": null
            },
            {
              "label": "Relecture",
              "value": "relecture",
              "color": "#f59e0b",
              "icon": null
            },
            {
              "label": "Programmé",
              "value": "programme",
              "color": "#8b5cf6",
              "icon": null
            },
            {
              "label": "Publié",
              "value": "publie",
              "color": "#10b981",
              "icon": null
            }
          ]
        },
        {
          "label": "Publication",
          "kind": "date"
        },
        {
          "label": "Canaux",
          "kind": "multi_select",
          "options": [
            {
              "label": "Blog",
              "value": "blog",
              "color": "#94a3b8",
              "icon": null
            },
            {
              "label": "LinkedIn",
              "value": "linkedin",
              "color": "#3b82f6",
              "icon": null
            },
            {
              "label": "Instagram",
              "value": "instagram",
              "color": "#f59e0b",
              "icon": null
            },
            {
              "label": "Newsletter",
              "value": "newsletter",
              "color": "#10b981",
              "icon": null
            },
            {
              "label": "YouTube",
              "value": "youtube",
              "color": "#ef4444",
              "icon": null
            }
          ]
        },
        {
          "label": "Brief",
          "kind": "long_text",
          "description": "Le sujet, la cible, le message à faire passer."
        },
        {
          "label": "Proposé par",
          "kind": "email"
        },
        {
          "label": "Accroche",
          "kind": "short_text",
          "ai": {
            "prompt": "Écris une accroche de 15 mots au plus, percutante et sans point d'exclamation, pour ce contenu ({{Format}}) intitulé « {{Titre}} ».\nBrief : {{Brief}}",
            "refresh": "if_empty"
          }
        },
        {
          "label": "Mots-clés",
          "kind": "short_text",
          "ai": {
            "prompt": "Donne cinq mots-clés de référencement pour ce contenu, séparés par des virgules.\n{{Titre}} — {{Brief}}",
            "refresh": "if_empty"
          }
        }
      ]
    },
    {
      "key": "campagnes",
      "label": "Campagnes",
      "icon": "target",
      "color": "#8b5cf6",
      "fields": [
        {
          "label": "Nom",
          "kind": "short_text",
          "required": true
        },
        {
          "label": "Début",
          "kind": "date"
        },
        {
          "label": "Fin",
          "kind": "date"
        },
        {
          "label": "Objectif",
          "kind": "long_text"
        },
        {
          "label": "Contenus",
          "kind": "count",
          "rollup": {
            "via": "Campagne",
            "table": "contenus"
          }
        }
      ]
    },
    {
      "key": "auteurs",
      "label": "Auteurs",
      "icon": "users",
      "color": "#14b8a6",
      "fields": [
        {
          "label": "Nom",
          "kind": "short_text",
          "required": true
        },
        {
          "label": "Rôle",
          "kind": "select",
          "options": [
            {
              "label": "Rédaction",
              "value": "redaction",
              "color": "#94a3b8",
              "icon": null
            },
            {
              "label": "Graphisme",
              "value": "graphisme",
              "color": "#3b82f6",
              "icon": null
            },
            {
              "label": "Vidéo",
              "value": "video",
              "color": "#f59e0b",
              "icon": null
            },
            {
              "label": "Invité",
              "value": "invite",
              "color": "#10b981",
              "icon": null
            }
          ]
        },
        {
          "label": "E-mail",
          "kind": "email"
        },
        {
          "label": "Contenus",
          "kind": "count",
          "rollup": {
            "via": "Auteur",
            "table": "contenus"
          }
        }
      ]
    }
  ],
  "links": [
    {
      "from": "contenus",
      "label": "Campagne",
      "to": "campagnes",
      "multiple": false
    },
    {
      "from": "contenus",
      "label": "Auteur",
      "to": "auteurs",
      "multiple": false
    }
  ],
  "rows": {
    "auteurs": [
      {
        "$key": "lea",
        "Nom": "Léa Dubois",
        "Rôle": "Rédaction",
        "E-mail": "lea@exemple.fr"
      },
      {
        "$key": "sami",
        "Nom": "Sami Haddad",
        "Rôle": "Vidéo",
        "E-mail": "sami@exemple.fr"
      },
      {
        "$key": "ines",
        "Nom": "Inès Morel",
        "Rôle": "Graphisme",
        "E-mail": "ines@exemple.fr"
      }
    ],
    "campagnes": [
      {
        "$key": "rentree",
        "Nom": "Rentrée : nouvelle offre",
        "Début": "-10d",
        "Fin": "+20d",
        "Objectif": "Faire connaître la nouvelle offre aux clients existants et générer 50 demandes de démonstration."
      },
      {
        "$key": "salon",
        "Nom": "Salon de novembre",
        "Début": "+25d",
        "Fin": "+50d",
        "Objectif": "Obtenir des rendez-vous sur le stand avant l'ouverture du salon."
      }
    ],
    "contenus": [
      {
        "Titre": "Cinq façons de gagner une heure par jour",
        "Format": "Article",
        "Statut": "Publié",
        "Publication": "-6d",
        "Canaux": [
          "Blog",
          "LinkedIn"
        ],
        "Brief": "Article pratique pour les responsables d'équipe : automatiser les tâches répétitives, avec des exemples concrets.",
        "Campagne": "@rentree",
        "Auteur": "@lea",
        "Accroche": "Une heure de plus chaque jour, sans travailler plus vite.",
        "Mots-clés": "productivité, automatisation, équipe, organisation, temps"
      },
      {
        "Titre": "Découvrez la nouvelle offre en 90 secondes",
        "Format": "Vidéo",
        "Statut": "Relecture",
        "Publication": "+2d",
        "Canaux": [
          "YouTube",
          "LinkedIn"
        ],
        "Brief": "Vidéo courte qui montre les trois nouveautés, avec une démonstration à l'écran.",
        "Campagne": "@rentree",
        "Auteur": "@sami",
        "Accroche": "Trois nouveautés, quatre-vingt-dix secondes, zéro jargon.",
        "Mots-clés": "nouvelle offre, démonstration, nouveautés, vidéo, logiciel"
      },
      {
        "Titre": "Newsletter de rentrée",
        "Format": "Newsletter",
        "Statut": "Programmé",
        "Publication": "+5d",
        "Canaux": [
          "Newsletter"
        ],
        "Brief": "Récapitulatif des nouveautés, lien vers la vidéo, invitation à réserver une démonstration.",
        "Campagne": "@rentree",
        "Auteur": "@lea"
      },
      {
        "Titre": "Témoignage client : la clinique des Tilleuls",
        "Format": "Article",
        "Statut": "Rédaction",
        "Publication": "+12d",
        "Canaux": [
          "Blog"
        ],
        "Brief": "Interview de la directrice : avant, pendant et après le déploiement ; chiffres clés.",
        "Campagne": "@rentree",
        "Auteur": "@lea"
      },
      {
        "Titre": "Coulisses de notre stand",
        "Format": "Post LinkedIn",
        "Statut": "Idée",
        "Publication": "+30d",
        "Canaux": [
          "LinkedIn",
          "Instagram"
        ],
        "Brief": "Photos de la préparation du stand et présentation de l'équipe présente au salon.",
        "Campagne": "@salon",
        "Auteur": "@ines"
      },
      {
        "Titre": "Épisode 4 : bien choisir ses outils",
        "Format": "Podcast",
        "Statut": "Idée",
        "Publication": "+40d",
        "Canaux": [
          "Blog"
        ],
        "Brief": "Discussion avec un consultant sur les critères de choix d'un logiciel métier.",
        "Auteur": "@sami"
      }
    ]
  },
  "views": [
    {
      "table": "contenus",
      "label": "Calendrier",
      "kind": "calendar",
      "spec": {
        "date_field": "Publication",
        "color_field": "Format",
        "card_fields": [
          "Statut",
          "Canaux"
        ]
      }
    },
    {
      "table": "contenus",
      "label": "Production",
      "kind": "kanban",
      "spec": {
        "group_by": "Statut",
        "card_fields": [
          "Format",
          "Publication",
          "Auteur"
        ],
        "group_order": [
          "Idée",
          "Rédaction",
          "Relecture",
          "Programmé",
          "Publié"
        ]
      }
    },
    {
      "table": "contenus",
      "label": "Par format",
      "kind": "list",
      "spec": {
        "group_by": "Format",
        "card_fields": [
          "Statut",
          "Publication",
          "Accroche"
        ]
      }
    },
    {
      "table": "contenus",
      "label": "Proposer un sujet",
      "kind": "form",
      "spec": {
        "title": "Une idée de contenu ?",
        "description": "Proposez un sujet à l'équipe marketing : article, vidéo, témoignage…",
        "fields": [
          {
            "field": "Titre",
            "required": true,
            "label": "Votre idée en une phrase"
          },
          {
            "field": "Format",
            "required": false
          },
          {
            "field": "Brief",
            "required": true,
            "label": "Pourquoi ce sujet, pour qui ?"
          },
          {
            "field": "Proposé par",
            "required": true,
            "label": "Votre e-mail"
          }
        ],
        "submit_label": "Proposer",
        "success_message": "Merci ! L'équipe marketing étudiera votre idée."
      }
    },
    {
      "table": "campagnes",
      "label": "Chronologie",
      "kind": "timeline",
      "spec": {
        "start_field": "Début",
        "end_field": "Fin",
        "scale": "week"
      }
    }
  ],
  "dashboards": [
    {
      "label": "Production",
      "blocks": [
        {
          "kind": "number",
          "title": "À publier ce mois-ci",
          "width": 1,
          "table": "contenus",
          "aggregate": "count",
          "field": null,
          "filter": "[Statut] ne \"Publié\""
        },
        {
          "kind": "number",
          "title": "Publiés",
          "width": 1,
          "table": "contenus",
          "aggregate": "count",
          "field": null,
          "filter": "[Statut] eq \"Publié\""
        },
        {
          "kind": "number",
          "title": "Campagnes",
          "width": 1,
          "table": "campagnes",
          "aggregate": "count",
          "field": null,
          "filter": ""
        },
        {
          "kind": "chart",
          "title": "Par format",
          "width": 1,
          "table": "contenus",
          "group_by": "Format",
          "filter": "",
          "style": "pie"
        },
        {
          "kind": "chart",
          "title": "Par statut",
          "width": 2,
          "table": "contenus",
          "group_by": "Statut",
          "filter": "",
          "style": "bar"
        },
        {
          "kind": "list",
          "title": "Prochaines parutions",
          "width": 3,
          "table": "contenus",
          "fields": [
            "Titre",
            "Format",
            "Publication"
          ],
          "filter": "[Statut] ne \"Publié\"",
          "sort": "Publication",
          "limit": 6
        }
      ]
    }
  ],
  "automations": [
    {
      "label": "Contenu publié",
      "enabled": true,
      "trigger": {
        "kind": "record_updated",
        "table": "contenus",
        "fields": [
          "Statut"
        ],
        "schedule": null
      },
      "condition": "[Statut] eq \"Publié\"",
      "actions": [
        {
          "kind": "notify",
          "users": [
            "$moi"
          ],
          "user_field": null,
          "message": "Publié : {{Titre}} ({{Format}})"
        }
      ]
    }
  ]
}