Aller au contenu principal
Fonctionnalités

Sortie en direct du vrai moteur de rendu — modifiez les réglages et elle se met à jour instantanément.

Éventail d'intégrations

motion design

Un produit au centre d'un anneau, ses connexions qui rayonnent, chacune avec son icône.

Idéal pour : Ce à quoi il se branche.

Réglages

Police
Thème
Taille
Humeur

L'utiliser dans un film

Idéal pourDémo produit
Ce que vous pouvez changer :kickercenterspokes
Pour les développeurs (MCP et JSON)

Voici la scène exacte à envoyer à create_animation (MCP) : gardez la structure, changez les mots et écrivez la narration — c'est la voix qui fixe la durée de la scène. Collez-la dans update_storyboard avec set_data pour modifier un film déjà fait.

{
  "visual": "motion",
  "heading": "Integrations",
  "narration": "Write the sentence the voice says over this scene; its length is the scene's.",
  "data": {
    "motion": {
      "spec": {
        "version": 1,
        "name": "Integrations hub",
        "intent": "hubSpokes: one source fanning out to 3-4 outputs (a centre word and its spokes)",
        "stagger": "item",
        "params": [
          {
            "name": "kicker",
            "type": "text",
            "default": "Connects to",
            "maxLength": 28,
            "label": "Eyebrow"
          },
          {
            "name": "center",
            "type": "text",
            "default": "Your CRM",
            "maxLength": 18,
            "label": "Centre"
          },
          {
            "name": "spokes",
            "type": "list",
            "default": [
              {
                "title": "Email campaigns",
                "icon": "✉️"
              },
              {
                "title": "Team chat",
                "icon": "💬"
              },
              {
                "title": "Billing",
                "icon": "💳"
              },
              {
                "title": "Analytics",
                "icon": "📊"
              }
            ],
            "min": 3,
            "max": 4,
            "items": "record",
            "label": "Spokes"
          }
        ],
        "layers": [
          {
            "id": "kicker",
            "kind": "text",
            "text": "{{kicker}}",
            "role": "label",
            "uppercase": true,
            "color": "c2",
            "align": "center",
            "maxLines": 1,
            "box": {
              "col": 0,
              "row": 0,
              "cols": 5.2,
              "rows": 0.7
            },
            "tall": {
              "col": 0,
              "row": 0,
              "cols": 12,
              "rows": 0.6
            },
            "enter": {
              "primitive": "fadeUp",
              "distance": "nudge",
              "order": 0
            }
          },
          {
            "id": "ring",
            "kind": "shape",
            "shape": "circle",
            "fill": "surface",
            "stroke": "c1",
            "strokeWidth": "thin",
            "elevation": 3,
            "box": {
              "col": 0,
              "row": 1.3,
              "cols": 5.2,
              "rows": 10.7
            },
            "tall": {
              "col": 1.5,
              "row": 0.7,
              "cols": 9,
              "rows": 4.6
            },
            "enter": {
              "primitive": "scaleSettle",
              "spring": "heavy",
              "order": 0
            }
          },
          {
            "id": "center",
            "kind": "text",
            "text": "{{center}}",
            "role": "display",
            "align": "center",
            "maxLines": 2,
            "box": {
              "col": 0.7,
              "row": 4.6,
              "cols": 3.8,
              "rows": 4.7
            },
            "tall": {
              "col": 2.9,
              "row": 1.8,
              "cols": 6.2,
              "rows": 2.4
            },
            "enter": {
              "primitive": "maskReveal",
              "order": 1
            },
            "emphasis": {
              "primitive": "lightSweep"
            },
            "exit": {
              "primitive": "exitLift"
            }
          },
          {
            "id": "link",
            "kind": "shape",
            "shape": "line",
            "stroke": "c1",
            "strokeWidth": "thin",
            "box": {
              "col": 5.3,
              "row": 5.7,
              "cols": 1.3,
              "rows": 0.6
            },
            "tall": {
              "col": 5.7,
              "row": 5.45,
              "cols": 0.6,
              "rows": 1.1
            },
            "enter": {
              "primitive": "lineDraw",
              "order": 2
            }
          },
          {
            "id": "card",
            "kind": "shape",
            "shape": "rect",
            "fill": "surface",
            "radius": "lg",
            "elevation": 2,
            "repeat": {
              "param": "spokes",
              "flow": "column",
              "gap": "md"
            },
            "box": {
              "col": 6.7,
              "row": 0,
              "cols": 5.3,
              "rows": 12
            },
            "tall": {
              "col": 0,
              "row": 6.7,
              "cols": 12,
              "rows": 5.3
            },
            "enter": {
              "primitive": "fadeSlide",
              "from": "right",
              "order": 3
            }
          },
          {
            "id": "icon",
            "kind": "icon",
            "icon": "{{item.icon}}",
            "color": "c1",
            "repeat": {
              "param": "spokes",
              "flow": "column",
              "gap": "md"
            },
            "box": {
              "col": 7,
              "row": 0,
              "cols": 1,
              "rows": 12
            },
            "tall": {
              "col": 0.4,
              "row": 6.7,
              "cols": 1.6,
              "rows": 5.3
            },
            "enter": {
              "primitive": "scaleSettle",
              "spring": "bouncy",
              "order": 4
            }
          },
          {
            "id": "spoke",
            "kind": "text",
            "text": "{{item.title}}",
            "role": "title",
            "align": "start",
            "maxLines": 2,
            "repeat": {
              "param": "spokes",
              "flow": "column",
              "gap": "md"
            },
            "box": {
              "col": 8.3,
              "row": 0,
              "cols": 3.4,
              "rows": 12
            },
            "tall": {
              "col": 2.4,
              "row": 6.7,
              "cols": 9.2,
              "rows": 5.3
            },
            "enter": {
              "primitive": "fadeSlide",
              "from": "right",
              "order": 4
            }
          }
        ]
      },
      "name": "Integrations hub"
    }
  }
}

Réutilisez-la : enregistrez data.motion.spec une fois avec save_motion_spec (vérifiée comme avec validate_motion_spec), puis toute scène peut utiliser le visuel « motion » avec data.motion.specId et ses propres paramètres. Nom de la spec : « Integrations hub ».

Autres animations Fonctionnalités