goose-ads
Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skillโฆ
Render pixel-accurate ChatGPT mobile (iOS) screen mockups in light mode from a thread JSON. Supports user text bubbles, user image attachments, assistant markdown prose, citation chips, the OpenAI spiral logo, the Apps-SDK GPT chip in the composer, and three header styles
Claude Code
$ npx -y skills add gooseworks-ai/goose-skills --skill create-chatgpt-mockup --agent claude-code
Codex
$ npx skills add gooseworks-ai/goose-skills --skill create-chatgpt-mockup -a codex -y
Cursor
$ npx skills add gooseworks-ai/goose-skills --skill create-chatgpt-mockup -a cursor -y
Gemini CLI
$ npx skills add gooseworks-ai/goose-skills --skill create-chatgpt-mockup -a gemini-cli -y
GitHub Copilot
$ npx skills add gooseworks-ai/goose-skills --skill create-chatgpt-mockup -a github-copilot -y
OpenCode
$ npx skills add gooseworks-ai/goose-skills --skill create-chatgpt-mockup -a opencode -y
Windsurf
$ npx skills add gooseworks-ai/goose-skills --skill create-chatgpt-mockup -a windsurf -y
name: create-chatgpt-mockup description: Render pixel-accurate ChatGPT mobile (iOS) screen mockups in light mode from a thread JSON. Supports user text bubbles, user image attachments, assistant markdown prose, citation chips, the OpenAI spiral logo, the Apps-SDK GPT chip in the composer, and three header styles (model-tag, plain title, "Get Plus"). Fixed 9:16 viewport. Outputs HTML + PNG. 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.
Generate single-frame ChatGPT mobile screens that read as real iOS captures โ accurate header chrome, user/assistant message styling, composer pill, status bar, and the OpenAI spiral mark. Designed for use inside ad creatives, social posts, video storyboards, and product mockups.
If you need an **animated, video-recorded chat reveal** (bubbles popping over time, SFX, music bed, end card), use the `render-chatgpt-chat` skill. This atom only produces a single still frame.
Compose a `thread.json` matching the schema below, then pass it to `render.js`.
{
"statusBar": {
"time": "9:41",
"dnd": false
},
"header": {
"style": "model-tag",
"title": "ChatGPT",
"model": "5.1",
"rightIcons": ["personPlus", "dottedCircle"]
},
"messages": [
{ "type": "user-image", "src": "assets/photo.jpg", "aspect": "square" },
{ "type": "user-text", "text": "Make this face sunscreen better" },
{
"type": "assistant",
"title": "Optional H1 with spiral logo",
"feedback": true,
"text": "Markdown-ish prose. **bold**, *italic*, ## H2, * bullet, 1. ordered, [[cite:Source +1]], [[icon:๐ก]] inline-icon."
}
],
"composer": {
"placeholder": "Ask anything",
"text": "Typed text to show with caret",
"cursor": true,
"streaming": false,
"chip": { "name": "Seatfinch" }
}
}**`statusBar`**
**`header.style`** โ one of:
**`header.rightIcons`** โ array of icon keys, rendered left-to-right on the right side. Available: `"personPlus"`, `"dottedCircle"`, `"edit"`, `"more"`. Default is `["personPlus", "dottedCircle"]` for `model-tag`, `["edit"]` for `title-only`.
**`messages[]`** โ one of:
**Assistant `text` markdown** โ supported syntax:
**`composer`**
node render.js --thread examples/01-sunscreen-image.json node render.js --thread my-thread.json --output ./exports --name nightly
| Flag | Effect | |---|---| | `--thread <path>` | (required) JSON file matching the schema above | | `--output <dir>` | parent dir for the dated output folder; default `./chatgpt-mockup-exports/` | | `--name <slug>` | override the output folder slug |
<output>/<YYYY-MM-DD>-<slug>/ index.html # standalone HTML (CSS inlined) screenshot.png # 2250 ร 4002 PNG (DPR 3, 9:16) thread.json # copy of the input for reproducibility
1. Receive a brief or existing thread JSON. 2. If only a brief is given, compose `thread.json` matching the schema above. 3. Run `node render.js --thread <path>`. 4. Open the PNG. If anything looks off (header alignment, bubble width, missing icon), edit the JSON or `templates/chat.css` and re-render.
cd create-chatgpt-mockup npm install npx playwright install chromium
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skillโฆ
Make product photos (studio, lifestyle or on a model) of a brand's real products with GooseWorks in this chat. Start brand workโฆ
Make an approved GooseWorks video when an answer's next_step gives its command.
Make a video ad in this chat from a real reference ad, found or theirs; styles are the fallback. Follow every answer's next_step.
GooseWorks growth coworker and router for markets, competitors, audiences, creators, campaigns, ads, photos, graphics, video,โฆ
Create a custom video with sourced product accuracy, explicit sound routing and exact-final audiovisual review.
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also useโฆ
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,โฆ
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",โฆ
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization auditโฆ