Agent skill

Render Chatgpt Chat

by gooseworks-ai in 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…

MITAuto-check passedMedia & Creative

Install Render Chatgpt Chat

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill render-chatgpt-chat -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills render-chatgpt-chat --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
render-chatgpt-chat
GitHub stars
1.2k
Token cost
~2.3k tokens
SKILL.md length
1,101 words
Files
17 (incl. scripts, assets)
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 5 steps: User types in the composer with the iOS… → Send-tap is ONE beat — the user bubble… → One gray loading dot holds ~500ms (never… → …
  • The chatgpt-chat format
  • SKILL.md covers Choices, What it renders, Run and The chat body: bundled…, plus 4 more sections
  • Runs JavaScript and Shell scripts from its folder; calls node, npm and npx

What it does

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.

When your agent uses it

  • The chatgpt-chat format
  • Tasks that involve Messaging and chat bots
  • Tasks that involve Video production

Example prompts

  • “/render-chatgpt-chat”

Requirements

  • Node.js
  • A Bash shell

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. User types in the composer with the iOS keyboard up (composer-type).
  2. Send-tap is ONE beat — the user bubble pops, the keyboard slides down, and
  3. One gray loading dot holds ~500ms (never three — three reads as iMessage
  4. The assistant answer streams in word-by-word (stream-words, ~7 wps) with a
  5. Crossfade to a designed end card (wordmark + ⭐ proof row + trust trio + CTA

What it can do on your machine

Read from SKILL.md and the folder at commit 4bbe1ef. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 9 files in scripts/ (JavaScript and Shell, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • npm
    • npx
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~167
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from gooseworks-ai/goose-skills at commit 4bbe1ef, republished under its MIT licence (© gooseworks-ai). 1,101 words, ~2,345 tokens.

Download SKILL.mdSave it as .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.
name
render-chatgpt-chat
description
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 and gates the paid music call to its own capability. The ChatGPT sibling of render-imessage-chat. Use for the chatgpt-chat format.
status
superseded
superseded_by
phone-chat@1.2.0

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.

render-chatgpt-chat

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.

Choices

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.

What it renders

One continuous take — never scene-by-scene (every reload flickers):

  1. User types in the composer with the iOS keyboard up (composer-type).
  2. Send-tap is ONE beat — the user bubble pops, the keyboard slides down, and the header right-cluster swaps (personPlus/dottedCircle → edit/more) all on the same t. Never sequence them across frames.
  3. One gray loading dot holds ~500ms (never three — three reads as iMessage typing, wrong app), silently (no SFX on the dot).
  4. The assistant answer streams in word-by-word (stream-words, ~7 wps) with a soft opacity ramp; the conversation auto-scrolls to keep it in view.
  5. Crossfade to a designed end card (wordmark + ⭐ proof row + trust trio + CTA pill) and mux a ducked music bed → master MP4.

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.

Run

bash
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]
  1. 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.
  2. 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).
  3. 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 chat body: bundled create-chatgpt-mockup

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.

Show full SKILL.md (419 more words)Show less

Timeline events (consumed by record-chat.js)

KindMeaning
composer-type{ text, dur_sec } — type into the composer. SFX = one key-tap per word.
composer-clearWipe the composer instantly (fire at send-tap).
keyboard-show / keyboard-hideSlide the iOS keyboard up / down.
send-tapPulse 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).

Contract

  • FREE assembly: Playwright record + ffmpeg composite/mux + the bundled SFX. No AI-rendered text — the bubbles, the streamed answer, and the end-card copy are all real HTML/PIL, never invented by a model.
  • The recipe (DB) supplies the per-brand config: the 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 are subliminal by design (ChatGPT has no native chime): key-tap -28dB, send-tap -20dB, stream-tick -32dB, response-done -22dB, and never a cue on the loading dot. Set "sfx": false in the config to ship the chat silent.

Gaps / routing notes

  • Music bed is an input, not generated here — the recipe gates it to create-music-elevenlabs (paid, proxy-routed, billed to the Ads agent) and passes the file into stitch.sh --music.
  • Bundled SFX are synthesized stand-ins. The original four wavs (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.
  • Portability: everything runs from the fetched /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.
  • Requires ffmpeg/ffprobe on PATH and Playwright Chromium (npx playwright install chromium).

Self-QC (per project rule — always /watch the master)

  • Keyboard is up the whole time the user types, and slides down only on the send-tap beat (never visible while the answer streams).
  • Send-tap is one beat: user bubble + keyboard-down + header-swap on the same frame.
  • Exactly one gray loading dot for ~500ms (not three), and no SFX on the dot.
  • The answer streams word-by-word, left-to-right / top-to-bottom, not all-at-once.
  • No OpenAI spiral logo above any assistant title (the spiral is empty-state only).
  • No micro-flicker / scene cuts; the end-card pad color matches 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

Files

SKILL.md and 16 other files (scripts, assets) in skills/ads/capabilities/render-chatgpt-chat of gooseworks-ai/goose-skills.

  • SKILL.md
  • assets/sfx/key-tap.wav
  • assets/sfx/response-done.wav
  • assets/sfx/send-tap.wav
  • assets/sfx/stream-tick.wav
  • scripts/config.example.json
  • scripts/end-card.template.html
  • scripts/mockup/generate.js
  • scripts/mockup/templates/chat.css
  • scripts/mockup/templates/icons.js
  • scripts/package.json
  • scripts/record-chat.js
  • scripts/render-end-card.js
  • scripts/stitch.sh
  • skill.meta.json
  • tests
  • … and 1 more

Open the folder on GitHubat commit 4bbe1ef

Compare with similar skills

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.

Render Chatgpt Chat compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Render Chatgpt Chat this skillgooseworks-ai/goose-skills1.2k—~2.3kAutomated safety check: PassMIT
Create Chatgpt Video Adcriptogus/agent-evolve-network288—~5kAutomated safety check: PassCustom licence
Cs Code VideoChenShuo2004/cs-skills197—~2.1kAutomated safety check: PassMIT
Character Animation QAcalesthio/OpenMontage66k—~389Automated safety check: PassMIT
Browser Video Recordingnirholas/three.ws2301 repos~1.5kAutomated safety check: PassApache-2.0
Demo Videoalinaqi/maggy707—~1.4kAutomated safety check: PassMIT

Similar skills

  • 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…

    288 GitHub stars~5k tokensUpdated 2 days ago
    Testing & QAAuto-check passed
  • Cs Code Video

    ChenShuo2004/cs-skills

    用代码做动画视频:页面暴露 render(t),Playwright 逐帧截图 + FFmpeg 合成 mp4,可接合成配乐、出图和配音。通用模式先明确主题、规格、风格和声音,出风格卡、分镜与关键帧后逐镜制作;Vibe知识大赏模式额外查证来源、记录真实素材许可、先渲 10 秒样片。触发词包括…

    197 GitHub stars~2.1k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Character Animation QA

    calesthio/OpenMontage

    Review local character animation with schema checks, Playwright browser previews, frame sampling, and FFmpeg/ffprobe final output checks.

    66k GitHub stars~389 tokensUpdated 7 days ago
    Media & CreativeAuto-check passed
  • Browser Video Recording

    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…

    230 GitHub starsUsed in 1 repo~1.5k tokens
    Media & CreativeAuto-check passed
  • Demo Video

    alinaqi/maggy

    Record captioned product walkthrough videos of any web app with Playwright + ffmpeg — proof videos for stakeholders, feature demos, bug-fix evidence

    707 GitHub stars~1.4k tokensUpdated 17 days ago
    Media & CreativeAuto-check passed
  • Sprint Summary

    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…

    350 GitHub stars~7k tokensUpdated yesterday
    Media & CreativeAuto-check passed

More from gooseworks-ai/goose-skills

All 273 skills in this repo
  • Reddit Post Finder

    gooseworks-ai/goose-skills

    Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Create Image Fal

    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.

    1.2k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Render Hook Replacement

    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.

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Blog Feed Monitor

    gooseworks-ai/goose-skills

    Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.

    1.2k GitHub starsUsed in 1 repo~578 tokens
    Auto-check passed
  • Competitor Post Engagers

    gooseworks-ai/goose-skills

    Find leads by scraping engagers from a competitor's top LinkedIn posts.

    1.2k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check: notes
  • Conference Speaker Scraper

    gooseworks-ai/goose-skills

    Extract speaker names, titles, companies, and bios from conference websites.

    1.2k GitHub starsUsed in 1 repo~846 tokens
    Auto-check passed

Questions about Render Chatgpt Chat

What does Render Chatgpt Chat do?

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.

When should I use Render Chatgpt Chat?

Render Chatgpt Chat fits situations like: the chatgpt-chat format; tasks that involve Messaging and chat bots; tasks that involve Video production.

How do I install Render Chatgpt Chat in Claude Code?

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.

How do I install Render Chatgpt Chat in Codex?

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.

Can I use Render Chatgpt Chat in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Render Chatgpt Chat need to run?

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.

Does Render Chatgpt Chat access the network?

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.

Is Render Chatgpt Chat safe to install?

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.

What licence does Render Chatgpt Chat use?

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.

How many tokens does Render Chatgpt Chat use?

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.

What are the alternatives to Render Chatgpt Chat?

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.

Who maintains Render Chatgpt Chat?

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.