Create Chatgpt Video Ad
criptogus/agent-evolve-network
Produce a 9:16 social-native ad that recreates a ChatGPT mobile chat — user types in the composer with the iOS keyboard visible, taps send, keyboard slides down, header right-cluster swaps…
Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…
$ npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gooseworks-ai/goose-skills render-chatgpt-chat --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ads/capabilities/render-chatgpt-chat .claude/skills/render-chatgpt-chat && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "render-chatgpt-chat" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-chatgpt-chat into .claude/skills/render-chatgpt-chat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "render-chatgpt-chat", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-chatgpt-chatType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gooseworks-ai/goose-skills render-chatgpt-chat --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ads/capabilities/render-chatgpt-chat .agents/skills/render-chatgpt-chat && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "render-chatgpt-chat" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-chatgpt-chat into .agents/skills/render-chatgpt-chat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "render-chatgpt-chat", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gooseworks-ai/goose-skills render-chatgpt-chat --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ads/capabilities/render-chatgpt-chat .cursor/skills/render-chatgpt-chat && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "render-chatgpt-chat" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-chatgpt-chat into .cursor/skills/render-chatgpt-chat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "render-chatgpt-chat", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gooseworks-ai/goose-skills.git --path skills/ads/capabilities/render-chatgpt-chat--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gooseworks-ai/goose-skills render-chatgpt-chat --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ads/capabilities/render-chatgpt-chat .gemini/skills/render-chatgpt-chat && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "render-chatgpt-chat" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-chatgpt-chat into .gemini/skills/render-chatgpt-chat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "render-chatgpt-chat", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gooseworks-ai/goose-skills render-chatgpt-chatInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ads/capabilities/render-chatgpt-chat .github/skills/render-chatgpt-chat && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "render-chatgpt-chat" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-chatgpt-chat into .github/skills/render-chatgpt-chat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "render-chatgpt-chat", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gooseworks-ai/goose-skills render-chatgpt-chat --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ads/capabilities/render-chatgpt-chat .opencode/skills/render-chatgpt-chat && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "render-chatgpt-chat" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-chatgpt-chat into .opencode/skills/render-chatgpt-chat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "render-chatgpt-chat", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
render-chatgpt-chatAssemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…
Render Chatgpt Chat is an agent skill from gooseworks-ai/goose-skills. Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard slides down + header cluster swaps in one beat → one gray loading dot → the assistant answer streams in word-by-word) crossfaded into a designed end card, with subliminal ChatGPT SFX and an optional ducked music bed. FREE assembly (Playwright + ffmpeg); the recipe supplies the per-brand thread + timeline + end-card config…
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 21 other files, including scripts and assets (for example `scripts/config.example.json`, `scripts/mockup/generate.js` and `scripts/mockup/templates/icons.js`).
It sits in Media & Creative, covering Messaging and chat bots, Video production and Browser testing. It works with OpenAI, Playwright, FFmpeg and iOS. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4bbe1ef. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 9 files in scripts/ (JavaScript and Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
nodenpmnpxbashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Render Chatgpt Chat loads about 2.3k tokens when it runs. Until then it costs about 167 tokens; SKILL.md has 1,101 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from gooseworks-ai/goose-skills at commit 4bbe1ef, republished under its MIT licence (© gooseworks-ai). 1,101 words, ~2,345 tokens.
.claude/skills/render-chatgpt-chat/SKILL.md (or your agent's skills folder). This skill also uses 16 other files; get the full folder from GitHub.Superseded: the video kit now does this with the phone-chat part, version 1.2.0, in the parts folder of this repository. Every phone-chat style is a style file that draws the same screen frame by frame from the plan's scenes, with the original sounds, in the kit's browser. This atom stays, unchanged in behaviour, for skills outside the kit until they move; its scripts still run.
The free renderer for the chatgpt-chat video ad format — the "I just asked ChatGPT…" creative, where someone asks ChatGPT a question and the streamed assistant answer is the punchline (the brand surfacing as the natural response). Deterministic Playwright + ffmpeg assembly; no generative video of the UI, so the bubble text and streamed answer stay pixel-crisp.
This is the ChatGPT sibling of render-imessage-chat. Reach for this one when
ChatGPT is the more credible host for the answer; reach for iMessage when the
punchline is a peer's reaction in a DM. The template recipe (DB) supplies the
per-brand thread + timeline + end_card config and gates the paid music call
(music bed → create-music-elevenlabs) to its own capability.
The recipe asks these before any paid step; this renderer only draws what the config says. The demo's value is an example, never a default:
question_angle — the kind of question (symptom "why is this happening", how-to,
recommendation, comparison). Sets the user-text message, the matching composer-type text
in the timeline, and the assistant answer. Demo: a "why is my stomach so bloated at 47?"
symptom question.asker — whose voice the question is in (the core customer, a busy parent, a
first-timer, a skeptic). Sets the user-text wording + keyboard.suggestions. Demo: a woman
in perimenopause.product_in_thread — whether a real product photo appears in the chat after the answer.
Demo: no (text only; the product lands on the end card). The mockup has a user-image
message type but no assistant-side image yet — a product image after the answer is a gap.music — the bed passed to stitch.sh --music (or none → SFX only). Demo: an
instrumental bed.One continuous take — never scene-by-scene (every reload flickers):
composer-type).personPlus/dottedCircle → edit/more) all on
the same t. Never sequence them across frames.stream-words, ~7 wps) with a
soft opacity ramp; the conversation auto-scrolls to keep it in view.The chat records at the ChatGPT-native ~9:19.5 (default 750×1624) to match a real iPhone screen recording. Never stretch the chat to a different aspect ratio — the end card is scaled-to-fit + padded to the chat's dimensions in stitch, so the chat is never touched.
cd scripts && npm install # once — installs Playwright
npx playwright install chromium # once
node record-chat.js --config config.json --out-dir <work> # → master-chat.mp4 + .sfx.json
node render-end-card.js --config config.json --out-dir <work> # → scene-end-endcard.mp4
bash stitch.sh --chat <work>/master-chat.mp4 --end <work>/scene-end-endcard.mp4 \
--sfx <work>/master-chat.sfx.json --out <work>/master-final.mp4 \
--pad-color "#ffffff" [--music <work>/music-bed.mp3] [--also-1x1]record-chat.js — reads config.json (thread + timeline + geometry),
renders the bundled create-chatgpt-mockup HTML once with every message
pending, walks the timeline on requestAnimationFrame inside the page, records
it as one continuous MP4, and emits the deterministic SFX cue list.render-end-card.js — fills end-card.template.html from config.end_card
(wordmark/logo_svg, stars, proof, trust trio, CTA, colors) → still MP4. This is
the SAME generic end card as render-imessage-chat (copied verbatim).stitch.sh — normalizes the end card to the chat's dimensions, crossfades
chat → end card, layers the subliminal ChatGPT SFX, optionally ducks a music bed
under it, and optionally derives a 1:1 crop. All FREE ffmpeg. Pass
--pad-color = end_card.bg (default #ffffff, ChatGPT light mode) so the pad
under the end card is seamless.The ChatGPT chat HTML comes from create-chatgpt-mockup (its generate.js +
templates/ produce the light-mode ChatGPT iOS HTML — status bar, header, message
rows, streaming word-spans, composer, and the inline iOS keyboard). Those files are
bundled into scripts/mockup/ so this capability renders the chat body
standalone — no sibling fetch of create-chatgpt-mockup is required. record-chat.js
does require('./mockup/generate.js').
The keyboard is inlined by the mockup (renderKeyboard) — no separate keyboard atom.
| Kind | Meaning |
|---|---|
composer-type | { text, dur_sec } — type into the composer. SFX = one key-tap per word. |
composer-clear | Wipe the composer instantly (fire at send-tap). |
keyboard-show / keyboard-hide | Slide the iOS keyboard up / down. |
send-tap | Pulse the send button. SFX = send-tap. |
pop | { target: <msg-id> } — reveal a message row. |
header-swap | { value: "alt" } — swap the header right-cluster. |
loading-dot-show / loading-dot-hide | { target: <dot-id> } — the single gray dot. |
send-state | { value: "streaming"|"active" } — composer send-button state. |
stream-words | { target, dur_sec, wps } — reveal the assistant answer word-by-word. SFX = stream-tick every 12 words + response-done at the end. |
scroll-to | { target, dur_ms } — smooth-scroll a row into view. |
See scripts/config.example.json for the canonical thread + timeline (the "one
beat" send-tap and the streamed list answer are both wired there).
thread (light-mode ChatGPT,
assistant message set stream: true), the timeline, the end_card (prefer a
real logo_svg wordmark), and an optional music bed."sfx": false in the config to ship the chat silent.create-music-elevenlabs (paid, proxy-routed, billed to the Ads agent) and passes
the file into stitch.sh --music.key-tap/send-tap/stream-tick/response-done) were lost from Git LFS (the
objects 404 on the server), so assets/sfx/*.wav are freshly synthesized
subliminal clicks/ticks. They work as-is; swap in real wavs (same filenames) for
tuned SFX./tmp/gooseworks-scripts/render-chatgpt-chat/scripts/… — the chatgpt-mockup
generator + templates are bundled under scripts/mockup/, and the generic end
card is bundled under scripts/. No /Users/… or repo-relative paths, and no
required sibling fetch.npx playwright install chromium).end_card.bg.© gooseworks-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 16 other files (scripts, assets) in skills/ads/capabilities/render-chatgpt-chat of gooseworks-ai/goose-skills.
Open the folder on GitHubat commit 4bbe1ef
Render Chatgpt Chat next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Render Chatgpt Chat this skillgooseworks-ai/goose-skills | 1.2k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Create Chatgpt Video Adcriptogus/agent-evolve-network | 288 | — | ~5k | Automated safety check: Pass | Custom licence | |
| Cs Code VideoChenShuo2004/cs-skills | 197 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Character Animation QAcalesthio/OpenMontage | 66k | — | ~389 | Automated safety check: Pass | MIT | |
| Browser Video Recordingnirholas/three.ws | 230 | 1 repos | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Demo Videoalinaqi/maggy | 707 | — | ~1.4k | Automated safety check: Pass | MIT |
criptogus/agent-evolve-network
Produce a 9:16 social-native ad that recreates a ChatGPT mobile chat — user types in the composer with the iOS keyboard visible, taps send, keyboard slides down, header right-cluster swaps…
ChenShuo2004/cs-skills
用代码做动画视频:页面暴露 render(t),Playwright 逐帧截图 + FFmpeg 合成 mp4,可接合成配乐、出图和配音。通用模式先明确主题、规格、风格和声音,出风格卡、分镜与关键帧后逐镜制作;Vibe知识大赏模式额外查证来源、记录真实素材许可、先渲 10 秒样片。触发词包括…
calesthio/OpenMontage
Review local character animation with schema checks, Playwright browser previews, frame sampling, and FFmpeg/ffprobe final output checks.
nirholas/three.ws
Create polished 60 fps 4:3 4K browser screen-recording style videos from Codex in-app browser captures, with browser-only crop, natural macOS cursor styling, deliberate click choreography…
alinaqi/maggy
Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence
shopsys/shopsys
Generates a Czech sprint summary article from Jira sprint data (Jira MCP first, CSV fallback), publishes it to Confluence with embedded screenshots and MP4 clips, and records the clips with…
gooseworks-ai/goose-skills
Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.
gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.
gooseworks-ai/goose-skills
Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.
gooseworks-ai/goose-skills
Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.
gooseworks-ai/goose-skills
Find leads by scraping engagers from a competitor's top LinkedIn posts.
gooseworks-ai/goose-skills
Extract speaker names, titles, companies, and bios from conference websites.
Works with
Categories
Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…. Render Chatgpt Chat is an agent skill from gooseworks-ai/goose-skills. Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard slides down + header cluster swaps in one beat → one gray loading dot → the assistant answer streams in word-by-word) crossfaded into a designed end card, with subliminal ChatGPT SFX and an optional ducked music bed.
Render Chatgpt Chat fits situations like: the chatgpt-chat format; tasks that involve Messaging and chat bots; tasks that involve Video production.
Run `npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a claude-code`. Or copy the skill folder (skills/ads/capabilities/render-chatgpt-chat in gooseworks-ai/goose-skills) into .claude/skills/render-chatgpt-chat in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a codex`. Or copy the skill folder (skills/ads/capabilities/render-chatgpt-chat in gooseworks-ai/goose-skills) into .agents/skills/render-chatgpt-chat in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/render-chatgpt-chat, .gemini/skills/render-chatgpt-chat, .github/skills/render-chatgpt-chat and .opencode/skills/render-chatgpt-chat in your project.
Going by SKILL.md and its folder, Render Chatgpt Chat needs JavaScript and a shell for the scripts in its folder and the command-line tools its instructions call (node, npm, npx and bash). Our summary lists: Node.js; A Bash shell.
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Render Chatgpt Chat is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Render Chatgpt Chat: Create Chatgpt Video Ad (criptogus/agent-evolve-network, 288 stars), Cs Code Video (ChenShuo2004/cs-skills, 197 stars), Character Animation QA (calesthio/OpenMontage, 66k stars) and Browser Video Recording (nirholas/three.ws, 230 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,242 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 10, 2026.
Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.