← Moda - Slides & DesignsCONTENT HISTORY

Update to Moda - Slides & Designs

Snapshot Oct 26, 2026 · 18:06 UTC · version 1.0.2

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Moda - Slides & Designs and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Vector-native motion: keyframes, animated posts/banners, logo stingers, shader fills, photo slideshows, timeline compositing. Free authoring; exports mp4/gif.",
  "included_files": [
    {
      "relative_path": "references/brand.md",
      "size_in_bytes": 15284
    },
    {
      "relative_path": "references/charts.md",
      "size_in_bytes": 5659
    },
    {
      "relative_path": "references/design-quality.md",
      "size_in_bytes": 22265
    },
    {
      "relative_path": "references/edit-code.md",
      "size_in_bytes": 16488
    },
    {
      "relative_path": "references/gotchas.md",
      "size_in_bytes": 8693
    },
    {
      "relative_path": "references/markup.md",
      "size_in_bytes": 23958
    },
    {
      "relative_path": "references/motion-recipes.md",
      "size_in_bytes": 21788
    },
    {
      "relative_path": "references/omni-and-media.md",
      "size_in_bytes": 7338
    },
    {
      "relative_path": "references/reading-and-verifying.md",
      "size_in_bytes": 21129
    },
    {
      "relative_path": "references/video.md",
      "size_in_bytes": 7676
    }
  ],
  "name": "moda-video-motion",
  "skill_md_contents": "---\nname: moda-video-motion\ndescription: >-\n  Vector-native motion: keyframes, animated posts/banners, logo stingers,\n  shader fills, photo slideshows, timeline compositing. Free authoring;\n  exports mp4/gif.\n---\n\n# moda-video-motion\n\n**PREREQUISITE — `load_skill(\"moda-core\")` once per session** (step-0, write\ncontract, free/metered map). Already loaded? Skip ahead. If you cannot load\nit, the non-negotiables: call `moda_bootstrap` before anything; `brand_list`\nbefore creating; revision-guarded writes use `expected_revision` from your last read.\n`canvas_edit_image` captures its own target state and has no revision argument.\nOn `stale_revision`, re-read and retry once; send the canvas link\nthe moment it exists; stuck or failed? `ask_expert(\"<question>\")` — free and\nfast, never guess.\n\n## Sizes and defaults\n\n| Piece | Size | `category` | Export |\n|---|---|---|---|\n| Landscape motion / stinger | 1920×1080 | `animation` | `format='mp4', page=N` |\n| Vertical post, story, reel | 1080×1920 | `animation` | mp4 (gif for a loop) |\n| Square animated post | 1080×1080 | `animation` | mp4 or gif |\n| Animated banner ad | the ad's exact size | `animation` | gif |\n| Shader-fill background | any canvas | any | mp4/gif — it freezes in stills |\n\nFive facts that decide most of the work:\n\n- Keyframes and clip sequencing apply ONLY on `category='animation'`; on any\n  other canvas every motion call is dropped with a warning. Animated shader\n  fills move anywhere.\n- Static exports (png/jpeg/pdf/pptx) of animation and video-filled nodes render\n  BLANK or frozen — deliver mp4/gif, and say so if a still is requested.\n- mp4/gif REQUIRE `page=N`: one animated page per file. A page with no animation\n  rejects typed `no_animation` — the honest answer is a still + the link.\n- One stitched film from many scenes: `export(canvas_ref, format='mp4',\n  scope='sequence')` renders all visible pages of a multi-page animation canvas\n  as ONE video, in order, transitions included — no `page`, mp4 only, and\n  the 18000-frame / 600 s mp4 ceiling covers the WHOLE film (600 s at 30 fps).\n  The editor's export panel has the same \"sequence\" mode as the interactive\n  alternative. A canvas with a persisted Main Edit timeline exports it with\n  `scope='main_edit'` (mp4 only, page-less like sequence). `fps` picks the\n  rate (mp4 24|30|60 default 30, gif 10|12|15|24 default 12); 60 fps halves\n  the longest exportable mp4 film (300 s; a gif is capped at 9000 frames / 300 s).\n- Everything in this recipe is unmetered: iteration costs nothing.\n\n## Recipe — motion on a canvas\n\n1. `canvas_create(name='[Piece]', intent='[one-line brief]', width=[W], height=[H], category='animation', brand_kit_id='[KIT]')` — send the link immediately.\n2. Author the still frame FIRST — real type, brand geometry, layout: `canvas_apply_markup(canvas_ref, page, markup)` (references/markup.md). Motion on a bad frame is a bad piece that moves.\n3. `canvas_screenshot(canvas_ref)` — fix the frame before animating.\n4. Add motion: `canvas_edit(canvas_ref, code)` — a `motion.page(...)` program with tweens, effects, staggers and recipes. Read references/motion-recipes.md FIRST: its opening \"motion model\" section is the five rules that decide whether the motion is correct (rest state, one track per target, what `blend` makes keyframes mean, why `endMs` is not a snap-back point, how an endless loop is authored), and the named recipes — logo sting, animated stat, kinetic type, shader background — follow it. Author from that file; don't probe.\n5. Draft-judge the movement: `export(canvas_ref, format='gif', page=[N])` and look at it. A screenshot shows one frozen frame — it cannot tell you whether the motion works.\n6. Deliver: live link FIRST, then `export(canvas_ref, format='mp4', page=[N])`. Read `warnings[]`.\n\n## Recipe — footage under real type (timeline compositing)\n\n1. Upload the user's footage or choose an existing team `file_…` reference. Inspect it with `media_video_frames` before composing. New video generation is unavailable through this connector.\n2. Animation canvas at the delivery size, then place the clip with `<video src=\"file_…\" width=\"1920\" height=\"1080\" fit=\"cover\"/>` via `canvas_apply_markup(canvas_ref, page, markup)` — the clip is a fill; layer type and brand marks above it.\n3. Sequence and trim in `canvas_edit(canvas_ref, code)` (`t.video(node, { startMs })`; trim/rate/loop via `update()` — references/edit-code.md).\n4. `export(canvas_ref, format='mp4', page=[N])`, then read `warnings[]`: server mp4 muxes audible clip audio, and `audio_source_dropped` names anything that did not survive. Relay it — never a silent loss.\n\n## Examples\n\n- \"an animated banner ad, 300×250\" → motion recipe at the ad's exact size → gif.\n- \"a stinger from our logo\" → motion recipe, `recipe-rise` + a shader backdrop.\n- \"make this post move\" → import/rebuild the frame on an animation canvas, then animate.\n- \"cut these two clips together with our headline over them\" → compositing recipe.\n- \"a video from these 5 photos\" → compositing recipe: place, sequence, export mp4.\n\n## Errors\n\nAny typed error → load moda-core and read its recovery reference.\nEdit programs are atomic — a failure means NOTHING applied: re-read, fix the\nprogram, re-run. `no_animation` on export means the page has no motion yet.\n\n## Make it recurring\n\nThe weekly animated post → moda-automate; a stinger or lower-third you will\nreuse on every future piece → moda-templates.\n\nSee also: moda-video — supported motion and export workflows ·\nmoda-core — the contract, recovery, everything Moda can do.\n\n## References\n\n| Doc | Load when |\n|---|---|\n| references/motion-recipes.md | ALWAYS before authoring motion — the motion model, then the named deliverables (logo sting, teaser, animated ad) |\n| references/edit-code.md | before writing an edit program: batches, revisions, warnings |\n| references/video.md | supported canvas motion, placement of existing footage, and export rules |\n"
}

SHA-256 of public snapshot: 6cf3262e9123b661c4f8b6153e981572c9008104975f3d85d3e50fb4b0498a23