← Pray Production StudioCONTENT HISTORY

Update to Pray Production Studio

Snapshot Oct 8, 2026 · 06:29 UTC · version 1.0.2

Collection source: downloaded plugin package.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Make a finished 15, 30 or 60 second ad with motion graphics through the Pray Production Studio connector. Use when someone asks for an ad, promo or spot for a product, event, series, app or ministry.",
  "included_files": [
    {
      "relative_path": "packages/remotion-kit/package-lock.json",
      "size_in_bytes": 150740
    },
    {
      "relative_path": "packages/remotion-kit/package.json",
      "size_in_bytes": 728
    },
    {
      "relative_path": "packages/remotion-kit/remotion.config.ts",
      "size_in_bytes": 114
    },
    {
      "relative_path": "packages/remotion-kit/scripts/stills.mjs",
      "size_in_bytes": 1466
    },
    {
      "relative_path": "packages/remotion-kit/src/Root.tsx",
      "size_in_bytes": 1638
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/AdComposition.tsx",
      "size_in_bytes": 3319
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/BrandTag.tsx",
      "size_in_bytes": 1236
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/Captions.tsx",
      "size_in_bytes": 2919
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/Grade.tsx",
      "size_in_bytes": 623
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/audio-plan.ts",
      "size_in_bytes": 1739
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Agent.tsx",
      "size_in_bytes": 5730
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Approve.tsx",
      "size_in_bytes": 4195
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Demo.tsx",
      "size_in_bytes": 145
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Device.tsx",
      "size_in_bytes": 5970
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/End.tsx",
      "size_in_bytes": 2056
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Kinetic.tsx",
      "size_in_bytes": 1802
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Live.tsx",
      "size_in_bytes": 1888
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Lockup.tsx",
      "size_in_bytes": 121
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Open.tsx",
      "size_in_bytes": 252
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Prompt.tsx",
      "size_in_bytes": 5424
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Proof.tsx",
      "size_in_bytes": 2118
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Results.tsx",
      "size_in_bytes": 5702
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/beats/Title.tsx",
      "size_in_bytes": 4663
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/fonts.ts",
      "size_in_bytes": 344
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/schema.ts",
      "size_in_bytes": 2432
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/stage.tsx",
      "size_in_bytes": 3153
    },
    {
      "relative_path": "packages/remotion-kit/src/ad/types.ts",
      "size_in_bytes": 1142
    },
    {
      "relative_path": "packages/remotion-kit/src/fixtures/ad-15-demo.json",
      "size_in_bytes": 2165
    },
    {
      "relative_path": "packages/remotion-kit/src/fixtures/ad-15-spokesperson.json",
      "size_in_bytes": 2589
    },
    {
      "relative_path": "packages/remotion-kit/src/fixtures/ad-15.json",
      "size_in_bytes": 926
    },
    {
      "relative_path": "packages/remotion-kit/src/fixtures/ad-30-demo.json",
      "size_in_bytes": 3732
    },
    {
      "relative_path": "packages/remotion-kit/src/fixtures/ad-30-promo.json",
      "size_in_bytes": 1663
    },
    {
      "relative_path": "packages/remotion-kit/src/fixtures/ad-30.json",
      "size_in_bytes": 1265
    },
    {
      "relative_path": "packages/remotion-kit/src/grammar.ts",
      "size_in_bytes": 23419
    },
    {
      "relative_path": "packages/remotion-kit/src/index.ts",
      "size_in_bytes": 106
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/CanvasCamera.tsx",
      "size_in_bytes": 1532
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/Cascade.tsx",
      "size_in_bytes": 652
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/CountUp.tsx",
      "size_in_bytes": 2328
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/Cursor.tsx",
      "size_in_bytes": 1937
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/Grain.tsx",
      "size_in_bytes": 1453
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/MaskReveal.tsx",
      "size_in_bytes": 1135
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/PopIn.tsx",
      "size_in_bytes": 1380
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/SlideFade.tsx",
      "size_in_bytes": 1262
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/Typewriter.tsx",
      "size_in_bytes": 1002
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/color.ts",
      "size_in_bytes": 1194
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/grid.ts",
      "size_in_bytes": 946
    },
    {
      "relative_path": "packages/remotion-kit/src/motion/timing.ts",
      "size_in_bytes": 458
    },
    {
      "relative_path": "packages/remotion-kit/src/theme.ts",
      "size_in_bytes": 1773
    },
    {
      "relative_path": "packages/remotion-kit/src/trailer/TrailerComposition.tsx",
      "size_in_bytes": 3421
    },
    {
      "relative_path": "packages/remotion-kit/src/trailer/fixture.json",
      "size_in_bytes": 15267
    },
    {
      "relative_path": "packages/remotion-kit/src/trailer/motion.ts",
      "size_in_bytes": 1639
    },
    {
      "relative_path": "packages/remotion-kit/src/trailer/schema.ts",
      "size_in_bytes": 5975
    },
    {
      "relative_path": "packages/remotion-kit/tsconfig.json",
      "size_in_bytes": 258
    }
  ],
  "name": "pps-ads",
  "skill_md_contents": "---\nname: pps-ads\ndescription: Make a finished 15, 30 or 60 second ad with motion graphics through the Pray Production Studio connector. Use when someone asks for an ad, promo or spot for a product, event, series, app or ministry.\n---\n\n# PPS Ads\n\nYou direct; PPS renders. This skill is the connector's \"make-an-ad\" recipe with one extra: on a\nmachine that can run Node, you may render the same composition locally to tinker with it.\n\nFor a cinematic or product demo / hype trailer, use `pps_get_workflow` with `make-a-trailer`, which offers those two modes and score-first direction.\n\n## Run the recipe\n\n1. Read the recipe: `pps_get_workflow` with workflow `make-an-ad`, and follow it with the person in\n   this conversation. It asks, one question per message and never repeating anything already said:\n   \"What is the ad about?\", \"Anything from PPS you want in it?\", \"How long?\" (15, 30 or 60),\n   \"Logo and brand color?\", and, only when the blueprint has voiceover, \"Which voice?\" (the voice card\n   plays samples). Before (4), the logo question, read `pps_get_brand_kit`. When it has a color or a logo,\n   say \"Using your saved brand: <name>, <color>, logo on file\" (leave out whatever is not saved) and skip (4).\n   If they say change it, ask (4) and use the answer for this ad only (set `brand.useBrandKit` false when they\n   want none of the saved values); then offer \"Replace your saved brand kit with this?\" and call\n   `pps_save_brand_kit` only on a yes. When nothing is saved, ask (4); after an answer with a logo or a color,\n   offer once \"Save this as your brand kit for next time?\" and call `pps_save_brand_kit` only on a yes. Never\n   overwrite a kit the person did not ask to change.\n   Decide the format from the answer to the first question and never ask it: `demo` for an app, software,\n   a service or a connector (the interface carries the ad: a prompt typing in, the agent working, results\n   filling a grid, a device, an approve button); `promo` for a series, an event, a film, a ministry or a\n   product that is not software (footage carries it); `spokesperson` for a person talking to camera\n   (captions on every footage beat). State it in one line before drafting so it can be corrected, and set\n   it as `format` on the blueprint.\n2. The thesis: this is a dynamic motion-graphics piece that shows off the best motion design you have,\n   like a resume showreel. Go all out. Every canvas beat moves, text lands on the music, the brand color\n   cuts through, and the generated clips are footage inside that piece, not the piece itself. Draft the\n   blueprint from the grammar in `pps_plan_ad`'s description, check it with `pps_plan_ad`, show it, and\n   ask whether to change anything before it is priced. Storyboard every canvas beat (the prompt text, agent\n   steps, results tiles from the person's own generations, the pick, the numbers that count up); `pps_plan_ad`\n   answers one motion line per beat, so show that storyboard with the blueprint. Bounds: 6 to 24 words of\n   prompt text in the person's words, 2 to 5 agent steps of at most 6 words, 3 to 6 tiles from the person's own\n   generations (find them with `pps_search_assets` or `pps_get_project`; the ad's own clips are the fallback),\n   and `captionAccent` words on captioned footage beats.\n3. Build the ad as a Director Mode project with `pps_director_start_film` (shape \"9:16\", or \"16:9\"\n   when asked): one shot per clip `pps_plan_ad` listed, in beat order, each shot's action being that beat's\n   shotPrompt. Footage beat N is shot N; graphics beats are not shots. A shotPrompt names a cast\n   character by the exact character name used in the script; that name binds the actor's portrait.\n4. Price one kind \"take\" per shot at the seconds `pps_plan_ad` gave, each take with `prompt` set to\n   that beat's shotPrompt word for word (the script is rewritten into slates, so the prompt is what\n   carries the checked camera move and action) with audio left ON, the default (the clip's own sound\n   plays under the music; never `audio: false` unless the person explicitly asked for silent clips,\n   because a silent clip is credits spent on footage they cannot use anywhere else), plus the music (`musicTempo` on the blueprint matches the tempo word in the music prompt)\n   and one\n   voiceover take for the whole ad, in ONE `pps_quote_batch` (more than 12 items go in a second\n   batch); after approval follow the set with `pps_wait_jobs`.\n5. Render with `pps_render_ad` (free), each finished take's video id as that beat's\n   clipVideoId; follow with `pps_wait_job`, and hand over the Save link.\n\n## Optional: render locally\n\nRendering on PPS is the default and needs nothing installed. To iterate on the composition itself:\n\n1. Unzip this skill; `packages/remotion-kit` is inside it. `cd packages/remotion-kit && npm install`.\n2. Save each finished asset with `pps_get_download` and put its URL into a copy of\n   `src/fixtures/ad-15.json` (clipUrl, musicUrl, voiceoverUrl, logoUrl) with your blueprint's beats.\n3. `npx remotion render src/index.ts AdComposition out/ad.mp4 --props=<your json>`.\n   `npx remotion studio src/index.ts` previews it live.\n4. A blueprint edited locally still renders on PPS: hand it back to `pps_render_ad` with the asset ids.\n\nNever roll again, re-render or re-price anything the person did not ask for.\n"
}

SHA-256 of public snapshot: 085309ea6b2c4414fcddb97eb61a38b3a963925af872d4f5e917b43c6747e5fd