{
  "schemaVersion": "1.3",
  "kind": "template",
  "id": "signal-orbit",
  "variantId": "signal-orbit",
  "template": "signal",
  "engine": "hyperframes",
  "engineLabel": "HyperFrames",
  "title": "Signal Product Launch",
  "url": "https://cliphou.se/templates/signal-orbit/",
  "editorUrl": "https://cliphou.se/#/v/signal-orbit",
  "templateVersion": 1,
  "latestTemplateVersion": 1,
  "sourceHash": "8b4288779f14deea",
  "generation": {
    "model": "GPT-5",
    "modelId": "gpt-5",
    "provider": "OpenAI",
    "effort": "medium"
  },
  "siteCommit": "29b461adaae99a77f6596c7d0b7d5dabc4915f9e",
  "license": "MIT-0",
  "licenseUrl": "https://cliphou.se/license/",
  "price": "Free",
  "attributionRequired": false,
  "format": {
    "aspectRatio": "16:9",
    "width": 1920,
    "height": 1080,
    "fps": 30,
    "durationInFrames": 270,
    "seconds": 9
  },
  "scenes": [
    {
      "type": "title-reveal",
      "label": "Title reveal",
      "from": 0,
      "duration": 102,
      "roles": [
        "brand",
        "headline",
        "subhead"
      ]
    },
    {
      "type": "stat-cards",
      "label": "Stat cards",
      "from": 102,
      "duration": 90,
      "roles": [
        "point1",
        "point2",
        "point3"
      ]
    },
    {
      "type": "end-screen",
      "label": "End screen",
      "from": 192,
      "duration": 78,
      "roles": [
        "brand",
        "cta"
      ]
    }
  ],
  "props": {
    "texts": {
      "brand": "ORBIT",
      "headline": "Launch with lift",
      "subhead": "Turn every release into an editable short film.",
      "point1": "Live editing",
      "point2": "Agent ready",
      "point3": "Free MP4",
      "cta": "Start building"
    },
    "theme": {
      "background": "#071311",
      "surface": "#123029",
      "foreground": "#effff7",
      "accent": "#2ef0a1",
      "accent2": "#ffcf5a"
    }
  },
  "editableFields": {
    "texts": {
      "brand": {
        "label": "Brand",
        "maxLength": 18,
        "current": "ORBIT"
      },
      "headline": {
        "label": "Headline",
        "maxLength": 24,
        "current": "Launch with lift"
      },
      "subhead": {
        "label": "Subhead",
        "maxLength": 52,
        "current": "Turn every release into an editable short film."
      },
      "point1": {
        "label": "Point 1",
        "maxLength": 16,
        "current": "Live editing"
      },
      "point2": {
        "label": "Point 2",
        "maxLength": 16,
        "current": "Agent ready"
      },
      "point3": {
        "label": "Point 3",
        "maxLength": 16,
        "current": "Free MP4"
      },
      "cta": {
        "label": "Call to action",
        "maxLength": 20,
        "current": "Start building"
      }
    },
    "theme": {
      "background": {
        "format": "#RRGGBB",
        "current": "#071311"
      },
      "surface": {
        "format": "#RRGGBB",
        "current": "#123029"
      },
      "foreground": {
        "format": "#RRGGBB",
        "current": "#effff7"
      },
      "accent": {
        "format": "#RRGGBB",
        "current": "#2ef0a1"
      },
      "accent2": {
        "format": "#RRGGBB",
        "current": "#ffcf5a"
      }
    }
  },
  "jsonSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "texts": {
        "type": "object",
        "properties": {
          "brand": {
            "type": "string",
            "minLength": 1,
            "maxLength": 18,
            "role": "brand"
          },
          "headline": {
            "type": "string",
            "minLength": 1,
            "maxLength": 24,
            "role": "headline"
          },
          "subhead": {
            "type": "string",
            "minLength": 1,
            "maxLength": 52,
            "role": "subhead"
          },
          "point1": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16,
            "role": "point1"
          },
          "point2": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16,
            "role": "point2"
          },
          "point3": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16,
            "role": "point3"
          },
          "cta": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "role": "cta"
          }
        },
        "required": [
          "brand",
          "headline",
          "subhead",
          "point1",
          "point2",
          "point3",
          "cta"
        ],
        "additionalProperties": false
      },
      "theme": {
        "type": "object",
        "properties": {
          "background": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "background"
          },
          "surface": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "surface"
          },
          "foreground": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "foreground"
          },
          "accent": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "accent"
          },
          "accent2": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "accent2"
          }
        },
        "required": [
          "background",
          "surface",
          "foreground",
          "accent",
          "accent2"
        ],
        "additionalProperties": false
      }
    },
    "required": [
      "texts",
      "theme"
    ],
    "additionalProperties": false
  },
  "handoff": {
    "urlTemplate": "https://cliphou.se/#/v/signal-orbit?props=<url-encoded props JSON>",
    "example": "https://cliphou.se/#/v/signal-orbit?props=%7B%22texts%22%3A%7B%22brand%22%3A%22ORBIT%22%2C%22headline%22%3A%22Launch%20with%20lift%22%2C%22subhead%22%3A%22Turn%20every%20release%20into%20an%20editable%20short%20film.%22%2C%22point1%22%3A%22Live%20editing%22%2C%22point2%22%3A%22Agent%20ready%22%2C%22point3%22%3A%22Free%20MP4%22%2C%22cta%22%3A%22Start%20building%22%7D%2C%22theme%22%3A%7B%22background%22%3A%22%23071311%22%2C%22surface%22%3A%22%23123029%22%2C%22foreground%22%3A%22%23effff7%22%2C%22accent%22%3A%22%232ef0a1%22%2C%22accent2%22%3A%22%23ffcf5a%22%7D%7D",
    "maxEncodedLength": 8000,
    "note": "cliphou.se validates the props before it opens them. Invalid props are rejected and never saved."
  },
  "source": {
    "package": "https://cliphou.se/source/signal/v1.tar.gz",
    "packageSha256": "a8d2ebf9a7a87c78c268850e3ad3aefdca358fe31d6cde691f287c4ca8723b9d",
    "templateVersion": 1,
    "renderCommand": "npx --yes hyperframes@0.8.146 render --variables-file variables.json --strict-variables -o out/video.mp4",
    "repository": "https://github.com/sunmer/voodoo",
    "path": "src/hyperframes/signal/",
    "contents": "Native HyperFrames HTML composition, declared variables, local GSAP, local fonts, example variables, README, and MIT-0 license.",
    "note": "Rendering uses HyperFrames 0.8.146. GSAP and fonts keep their own licenses."
  },
  "instructions": [
    "For text, color, and image edits, change only props.texts, props.theme, and props.media when present. Keep each text within maxLength, each color as #RRGGBB, and each image as one of its listed options.",
    "Return text and color edits as handoff.urlTemplate with the props JSON URL-encoded.",
    "For layout, motion, timing, or scene edits, download source.package, extract it, and edit the code.",
    "Render the source package with source.renderCommand. Edit variables.json to change text and colors.",
    "Never send code through the handoff URL. It accepts props only."
  ]
}
