<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[sean claude: Systems & Workflows]]></title><description><![CDATA[Step-by-step creative systems and workflows I use to build cinematic AI visuals.]]></description><link>https://theseanclaude.substack.com/s/systems-and-workflows</link><image><url>https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png</url><title>sean claude: Systems &amp; Workflows</title><link>https://theseanclaude.substack.com/s/systems-and-workflows</link></image><generator>Substack</generator><lastBuildDate>Sun, 31 May 2026 18:49:16 GMT</lastBuildDate><atom:link href="https://theseanclaude.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[sean claude]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[theseanclaude@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[theseanclaude@substack.com]]></itunes:email><itunes:name><![CDATA[sean claude]]></itunes:name></itunes:owner><itunes:author><![CDATA[sean claude]]></itunes:author><googleplay:owner><![CDATA[theseanclaude@substack.com]]></googleplay:owner><googleplay:email><![CDATA[theseanclaude@substack.com]]></googleplay:email><googleplay:author><![CDATA[sean claude]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why Your AI Campaign Looks Like Every Other AI Campaign ]]></title><description><![CDATA[The problem isn&#8217;t the tools.]]></description><link>https://theseanclaude.substack.com/p/why-most-ai-campaigns-look-like-shit</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/why-most-ai-campaigns-look-like-shit</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Fri, 22 May 2026 13:02:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The problem isn&#8217;t the tools. It&#8217;s that there&#8217;s no creative director layer &#8212; nothing telling Claude who the character is, what world they live in, what the camera is doing. Without it, every prompt starts from zero.</p><p>Here&#8217;s how to fix it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>Folder Setup</h2><p>Create this on your desktop before you do anything else:</p><pre><code><code>[your-brand]-campaign/
&#9500;&#9472;&#9472; CLAUDE.md
&#9500;&#9472;&#9472; refs/
&#9474;   &#9500;&#9472;&#9472; character.jpg
&#9474;   &#9492;&#9472;&#9472; world-ref.jpg
&#9492;&#9472;&#9472; outputs/
</code></code></pre><ul><li><p><code>CLAUDE.md</code> &#8212; your creative brief. Claude reads this before generating anything.</p></li><li><p><code>character.jpg</code> &#8212; your hero shot. The face and outfit every image anchors to.</p></li><li><p><code>world-ref.jpg</code> &#8212; a reference image for your world: the environment, lighting, mood.</p></li><li><p><code>outputs/</code> &#8212; where your generated images land.</p></li></ul><div><hr></div><h2>Step 1 &#8212; Write Your <a href="http://CLAUDE.md">CLAUDE.md</a></h2><p>Copy this template. Fill in every field. The more specific, the better &#8212; vague inputs produce inconsistent outputs.</p><pre><code><code># [Brand] Campaign &#8212; Creative Director Brief

## Character
[Age range, face structure, expression, what they're wearing &#8212; be specific]

## World
[Location, time of day, environment &#8212; what's in the background]

## Lighting
[Available light / studio / natural. Describe the colour and direction.]

## Camera
[Film or digital. Focal length. Aperture. Framing &#8212; close, medium, full body.]

## Shot Types
- [Shot 1 &#8212; e.g. walking towards camera, looking off to side]
- [Shot 2 &#8212; e.g. standing still, looking into distance]
- [Shot 3 &#8212; e.g. three-quarter turn, profile]
- [Shot 4 &#8212; e.g. full body, small in frame, environment behind]
- [Shot 5 &#8212; e.g. close crop, chest and face, product logo prominent]
- [Shot 6 &#8212; e.g. your choice]

## Visual Rules
- Always [rule &#8212; e.g. night, never daytime]
- Always [rule &#8212; e.g. film grain, never clean digital]
- Never [rule &#8212; e.g. studio, always location]
- Mood: [one phrase &#8212; e.g. cold, focused, editorial]
</code></code></pre><div><hr></div><h2>Step 2 &#8212; Add Your References</h2><p>Drop two files into <code>refs/</code>:</p><ul><li><p><code>character.jpg</code> &#8212; your hero shot. Sharp focus on face and clothing. Same energy as the campaign shots you want.</p></li><li><p><code>world-ref.jpg</code> &#8212; a photo (or a few) that captures the world: the location, lighting, time of day. Night street, warm bokeh, film grain &#8212; whatever your brief says. Claude reads both before it generates anything.</p></li></ul><div><hr></div><h2>Step 3 &#8212; Run It in Claude Code</h2><p>Open Claude Code inside your campaign folder. Paste this exactly:</p><blockquote><p>&#8220;Read the <a href="http://CLAUDE.md">CLAUDE.md</a> and everything in refs/. You are a creative director. Generate 6 <a href="http://fal.ai">fal.ai</a> image prompts based on the shot types in <a href="http://CLAUDE.md">CLAUDE.md</a>. Call the <a href="http://fal.ai">fal.ai</a> API using gpt 2 with image conditioning for each prompt, using refs/character.jpg as the reference image. Save all outputs to the outputs/ folder.&#8221;</p></blockquote><p>Claude generates the prompts, calls the <a href="http://fal.ai">fal.ai</a> API, and saves the images to <code>outputs/</code>. You never leave the session.</p><p>A good prompt looks like this:</p><blockquote><p><em>&#8220;35mm film photo of a young man in a navy puffer jacket with red script logo, walking towards camera looking slightly off to the side, night city street, warm orange bokeh lights, film grain, f/1.8, editorial streetwear campaign.&#8221;</em></p></blockquote><p>If your prompts come out vague, your <a href="http://CLAUDE.md">CLAUDE.md</a> is too thin. Add more detail and run it again.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The System That Builds 100 Ads While You Sleep]]></title><description><![CDATA[Most brands spend a week producing campaign assets.]]></description><link>https://theseanclaude.substack.com/p/how-to-build-a-100-ad-creative-system</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/how-to-build-a-100-ad-creative-system</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Sun, 17 May 2026 18:51:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most brands spend a week producing campaign assets. A creative brief, back and forth with designers, multiple rounds of revisions &#8212; and they end up with 10 ads if they&#8217;re lucky.</p><p>This workflow produces 100. One session. No team.</p><p>Claude Code reads a brand brief, calls GPT Image 2, generates every format and copy angle automatically, then builds a dashboard so everything is organized and ready for Meta.</p><p>Here&#8217;s the full setup.</p><div><hr></div><p><strong>What this is</strong></p><p>Claude Code is Anthropic&#8217;s AI coding tool. You talk to it like a chat, and it writes and runs code for you. You don&#8217;t need to know how to code to use it.</p><p>GPT Image 2 is OpenAI&#8217;s image generation model &#8212; it produces high-quality ad visuals from a text description. In this workflow, Claude Code calls GPT Image 2 automatically using the brand brief you give it.</p><p><a href="http://fal.ai">fal.ai</a> is the platform that hosts GPT Image 2 and lets Claude Code access it via an API. Think of it as the bridge between Claude Code and the image generator. It costs roughly $0.04&#8211;0.08 per image, so a full run of 100 ads costs around $4&#8211;8.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p><strong>What you need before you start</strong></p><ol><li><p><strong>Claude Code</strong> &#8212; download it at <a href="http://claude.ai/code">claude.ai/code</a>. It&#8217;s a desktop app. Free to start, paid plans available.</p></li><li><p><strong>A <a href="http://fal.ai">fal.ai</a> account</strong> &#8212; sign up at <a href="http://fal.ai">fal.ai</a>. Free to create. You&#8217;ll add a small amount of credit (a few dollars covers hundreds of ads).</p></li><li><p><strong>Your FAL_KEY</strong> &#8212; once you&#8217;re logged into <a href="http://fal.ai">fal.ai</a>, go to Dashboard &#8594; API Keys &#8594; Create new key. Copy it. This is what gives Claude Code permission to generate images on your behalf. Keep it private &#8212; don&#8217;t share it.</p></li><li><p><strong>A brand to run it on</strong> &#8212; a real product with a real brief. The more specific, the better the output.</p></li></ol><div><hr></div><p><strong>Step 1 &#8212; Create your project folder</strong></p><p>Make a new folder on your desktop called <code>ads-workflow</code>. Open it in Claude Code.</p><p>In Claude Code, type: <em>&#8220;Create an empty .env file in this folder.&#8221;</em> Claude creates it. Then open the file directly in VS Code and add your key yourself:</p><pre><code><code>FAL_KEY=paste_your_key_here
</code></code></pre><p>Get your key at <a href="http://fal.ai">fal.ai</a> &#8594; Dashboard &#8594; API Keys.</p><p><strong>Important:</strong> Never paste your API key into the Claude Code chat. Always add it directly into the file.</p><div><hr></div><p><strong>Step 2 &#8212; Build the brand brief</strong></p><p>Create a file called <code>brief.md</code>. Copy this template and fill in every field for your brand:</p><pre><code><code>brand_name: [Your brand name]
product_name: [Your product name]
product_description: [1&#8211;2 sentences. Be specific &#8212; what it is, what makes it different]
product_url: [Brand's website &#8212; Claude reads this to pull real copy, positioning, and tone. Use the actual product page URL, not the homepage]
product_image: [filename of your product photo &#8212; e.g. product.jpg &#8212; drop the image into the same folder as brief.md. Claude uses this as the visual reference so every generated ad shows the actual product]
target_audience: [Specific &#8212; e.g. "female founders 28&#8211;40 running DTC brands"]

primary_color: "[Hex code &#8212; e.g. #4A7C59]"
secondary_color: "[Hex code]"
background_color: "[Hex code]"
font_style: [e.g. clean sans-serif, bold serif, modern minimal]
imagery_style: [e.g. studio product photography, lifestyle, dark moody, bright minimal]
product_placement: [e.g. centered, floating, slight shadow, lifestyle context]
mood: [e.g. confident, premium, playful, aspirational]

ad_formats: [square_1x1, story_9x16, banner_16x9]

copy_angles:
  - angle_1: [Name &#8212; e.g. "speed" &#8212; and a headline idea]
  - angle_2: [Name &#8212; e.g. "quality" &#8212; and a headline idea]
  - angle_3: [Name &#8212; e.g. "simplicity" &#8212; and a headline idea]
  - angle_4: [Name &#8212; e.g. "value" &#8212; and a headline idea]
  - angle_5: [Name &#8212; e.g. "transformation" &#8212; and a headline idea]
</code></code></pre><p>Don&#8217;t rush this. A specific brief produces on-brand ads. A vague brief produces generic ones.</p><div><hr></div><p><strong>Step 3 &#8212; Build the generation script</strong></p><p>In Claude Code, paste this exactly:</p><blockquote><p>&#8220;Read <a href="http://brief.md">brief.md</a> and build a Python script called generate_<a href="http://ads.py">ads.py</a> that does the following: connects to <a href="http://fal.ai">fal.ai</a> using FAL_KEY from .env, reads every field from the brief, generates ad images using GPT Image 2 across all three formats in ad_formats, applies each copy_angle to every format, names every output file as format-copyangle-variant-v1.png, and saves everything to an /output folder. Add a --test flag that runs 5 ads. Add a --full flag that runs all 100.&#8221;</p></blockquote><p>Claude builds the script. Don&#8217;t touch it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://theseanclaude.substack.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><strong>Step 4 &#8212; Test run</strong></p><pre><code><code>python3 generate_ads.py --test
</code></code></pre><p>5 ads generate into /output. Check the naming, quality, and format. If it looks right, move on. If something&#8217;s off, tell Claude Code what to fix before running the full batch.</p><div><hr></div><p><strong>Step 5 &#8212; Full run</strong></p><pre><code><code>python3 generate_ads.py --full
</code></code></pre><p>Let it run. Don&#8217;t touch anything. 100 ads generate, named and organized by format, copy angle, and variant.</p><div><hr></div><p><strong>Step 6 &#8212; Build the dashboard</strong></p><p>In Claude Code, paste this exactly:</p><blockquote><p>&#8220;Read all image files from the /output folder and build a file called dashboard.html. Dark background (#0D0D0D). Display all images in a 4-column CSS grid. Label each image with its filename below it. Add a header that shows the brand name and today&#8217;s date. Make it look like a production tool &#8212; clean, minimal, professional.&#8221;</p></blockquote><p>Builds in under a minute.</p><div><hr></div><p><strong>Step 7 &#8212; Open and review</strong></p><p>In Claude Code, type: <em>&#8220;Open dashboard.html in my browser.&#8221;</em></p><p>Claude opens it for you. Every creative is in there &#8212; labeled by format, copy angle, and variant. Scroll through it.</p><p>When you&#8217;re ready to use them, grab the files from the <code>/output</code> folder on your desktop and drop them into Meta Ads Manager.</p><div><hr></div><p>That&#8217;s the full system. Change the brief, run it again, get 100 ads for a different brand. Takes one session.</p><p>The brief template above is everything you need to get started.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How I Turned Claude Code Into a Full UGC Studio (The System)]]></title><description><![CDATA[Claude Code + genmedia, a CLI created by fal for image and video generation.]]></description><link>https://theseanclaude.substack.com/p/how-i-turned-claude-code-into-a-full</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/how-i-turned-claude-code-into-a-full</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Sat, 09 May 2026 16:00:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Claude Code + genmedia, a CLI created by fal for image and video generation. One terminal window. No browser, no dashboard, no tab switching. You give it a product brief, it generates a full UGC set and drops the files into your folder.</p><p>Here&#8217;s how to set it up.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Step 1 &#8212; Install genmedia</h2><p>Open your terminal and run:</p><pre><code><code>curl &lt;https://genmedia.sh/install&gt; -fsS | bash
</code></code></pre><p>Then connect your fal API key:</p><pre><code><code>genmedia setup
</code></code></pre><p>Get your key at <a href="https://genmedia.sh/?utm_campaign=genmedia-cli&amp;utm_source=instagram&amp;utm_medium=influencer&amp;utm_content=seanclaude_sponsored_wave1">genmedia.sh</a>. Takes 60 seconds.</p><h2>Step 2 &#8212; Install the UGC Marketing skill</h2><p>Run:</p><pre><code><code>genmedia init
</code></code></pre><p>Then take the skill file at the bottom of this post and drop it into your project:</p><pre><code><code>your-project/.claude/skills/ugc-marketing/SKILL.md
</code></code></pre><p>This is what makes Claude Code smart about UGC. It knows which model to use, how to prompt for lifestyle shots, and where to save outputs. Without it you&#8217;re prompting from scratch every time.</p><h2>Step 3 &#8212; Upload your references</h2><p>Upload your character reference:</p><pre><code><code>genmedia upload ./character.png --json
</code></code></pre><p>Upload your product image:</p><pre><code><code>genmedia upload ./product.png --json
</code></code></pre><p>Both return a CDN URL. Save them &#8212; you&#8217;ll use them in the brief.</p><h2>Step 4 &#8212; Write your product brief</h2><p>Create <code>./brief/product-brief.md</code> in your project folder. Include:</p><ul><li><p>Character reference URL</p></li><li><p>Product reference URL</p></li><li><p>Product description &#8212; format, color, no logo required</p></li><li><p>World &#8212; setting, lighting, vibe</p></li><li><p>Shot list &#8212; 8 to 10 specific moments</p></li><li><p>Output &#8212; number of images, model, folder path</p></li></ul><p>The more specific the brief, the better the output. Vague brief = generic images.</p><h2>Step 5 &#8212; Run it</h2><p>Open Claude Code in your project folder and type:</p><pre><code><code>generate the full UGC set from the brief in ./brief/product-brief.md
</code></code></pre><p>Claude reads the brief, loads the skill, and fires one genmedia command per shot. Folder fills up. Done.</p><h2>What you get</h2><p>A full UGC lifestyle set. Consistent character. Consistent product. One window open.</p><p>What used to require a browser, a dashboard, and three tool switches now runs from a single prompt.</p><h2>The UGC Marketing Skill &#8212; copy this into <code>.claude/skills/ugc-marketing/SKILL.md</code></h2><pre><code><code>---
name: ugc-marketing
description: &gt;
  Plan and run UGC and commercial image production with genmedia. Use this
  for UGC lifestyle shots, product photography, ads, e-commerce batches,
  product reveals, background replacement, social formats, and brand-safe
  prompt work.
---

# UGC Marketing with genmedia

Load model-routing alongside this skill for default endpoint choices.
Keep output production-focused. No inflated marketing language, no fake
text in images, no unsupported claims.

## Inputs to collect

- Character: face reference URL, outfit, vibe, expression
- Product: name, format, color, no logo required
- World: setting, lighting, time of day
- Goal: UGC lifestyle, product still, hero shot, social ad
- Shot list: 8&#8211;10 specific moments
- Output: number of images, folder path

## Workflow

1. Upload every reference file first.

genmedia upload ./character.png --json
genmedia upload ./product.png --json

2. Run each shot synchronously.

genmedia run fal-ai/gpt-image-2/edit \\
  --image_urls '["&lt;character_url&gt;","&lt;product_url&gt;"]' \\
  --prompt "&lt;shot description&gt;" \\
  --image_size portrait_4_3 \\
  --quality high \\
  --download "./outputs/ugc/shot{index}.jpeg" \\
  --json

3. Use schema fields exactly. Do not pass guessed flags.

## Model routing

- UGC lifestyle stills: fal-ai/gpt-image-2/edit
- Character consistency: fal-ai/gpt-image-2/edit with image_urls
- Fast drafts: fal-ai/flux-2/klein/9b
- Image editing: fal-ai/nano-banana-pro/edit
- Video: bytedance/seedance-2.0/image-to-video

## Prompt build order

1. Character &#8212; face, outfit, energy, sweat, expression
2. Product &#8212; format, color, position in frame
3. Setting &#8212; location, surface, time of day
4. Lighting &#8212; natural, harsh sun, golden hour, window light
5. Camera &#8212; angle, distance, iPhone selfie feel
6. Tone &#8212; raw, unfiltered, authentic, never staged

## Quality bar

- Character is consistent across all shots
- Product placement is natural, never hero or staged
- No invented brand logos or readable text
- Lighting matches the world defined in the brief
- All outputs downloaded via --download flag
</code></code></pre><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[5 Claude Skills Every Brand Needs]]></title><description><![CDATA[Most brands using Claude are prompting it like a search engine.]]></description><link>https://theseanclaude.substack.com/p/5-claude-skills-every-brand-needs</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/5-claude-skills-every-brand-needs</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Mon, 27 Apr 2026 13:02:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most brands using Claude are prompting it like a search engine. The next session starts from zero. Nothing carries over. The work doesn&#8217;t compound because there&#8217;s no structure underneath it.</p><p>The fix is a system.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Claude Code has a feature called custom commands &#8212; skill files you drop into your project once and Claude executes as a defined workflow. You type one command. Claude reads your brand rules, asks for inputs, and produces a complete deliverable in sequence. Five skills, one pipeline: brief to shot list to image prompts to ad copy to client deliverable. Everything you need is below.</p><div><hr></div><h2>What you&#8217;re building</h2><p>Two files. That&#8217;s the whole setup.</p><p><strong>A CLAUDE.md file</strong> &#8212; your brand rules. Claude Code reads this automatically at the start of every session. Fill it in once with your brand&#8217;s colors, visual mood, product description, tone of voice, and visual always/never rules. Every skill reads the same file. You never re-explain the brand.</p><p><strong>Five skill files</strong> &#8212; custom commands that live in <code>.claude/commands/</code> inside your project folder. One command per workflow, no re-prompting.</p><p>The pipeline:</p><ol><li><p><code>/brand-brief</code> &#8212; product + brief &#8594; campaign creative direction</p></li><li><p><code>/shot-list</code> &#8212; brand brief &#8594; complete shot plan</p></li><li><p><code>/image-prompts</code> &#8212; shot list &#8594; production-ready prompts for NanoBanana</p></li><li><p><code>/ad-variations</code> &#8212; one hero visual &#8594; 10 ad copy variations</p></li><li><p><code>/campaign-pack</code> &#8212; all 5 outputs bundled into one client deliverable</p></li></ol><div><hr></div><h2>Setup</h2><h3>Step 1 &#8212; Create your project folder</h3><p>Create a new folder on your computer. Name it after your brand. This is your Claude Code project &#8212; everything runs from here.</p><p><strong>One step most people skip:</strong> add reference images before you run anything. Find 3&#8211;5 images that show the visual world you want. Save them into the folder and name them ref-1, ref-2, ref-3. Claude Code reads them directly. Without references, outputs are generic. With them, outputs match what you had in mind.</p><h3>Step 2 &#8212; Create your CLAUDE.md</h3><p>Copy the block below, paste it into VS Code or Cursor, and save as <code>CLAUDE.md</code> inside your project folder. Replace every placeholder with your actual brand details.</p><pre><code><code># CLAUDE.md &#8212; Brand Rules
# Replace all values below with your brand details. Claude Code reads this file automatically at the start of every session.

---

## Brand Name

[Your brand name]

---

## Visual Identity

**Primary colors:**
- [Color name]: [hex value]
- [Color name]: [hex value]
- [Color name]: [hex value]

**Secondary colors:**
- [Color name]: [hex value]
- [Color name]: [hex value]

**Visual mood:** [2&#8211;3 words &#8212; e.g. "gritty, nocturnal, worn-in" or "clean, clinical, precise"]

**Aesthetic references:** [2&#8211;3 reference points &#8212; real campaigns, photographers, or lookbooks that show the visual world]

**Visual references (images):**
- ref-1.jpg
- ref-2.jpg
- ref-3.jpg

Save 3&#8211;5 reference images into this project folder and name them ref-1, ref-2, etc.

---

## Product

**What it is:** [One sentence &#8212; category, materials, key visual detail]

**What it does:** [One sentence &#8212; what it delivers for the person using it]

**How it's typically shown:** [One sentence &#8212; how the product appears in campaign content]

---

## Campaign Style

**Always:**
- [Visual rule 1]
- [Visual rule 2]
- [Visual rule 3]

**Never:**
- [Visual rule 1]
- [Visual rule 2]
- [Visual rule 3]

---

## Tone of Voice

**Voice in one sentence:** [How the brand talks &#8212; e.g. "Direct, no warmup, confident without being loud"]

**Always says:** [2&#8211;3 language patterns or word choices the brand uses]

**Never says:** [2&#8211;3 things the brand doesn't say]

---

## Target Audience

**Who they are:** [One sentence]

**What they care about:** [One sentence]

---

## Output Format

**Default aspect ratio:** [e.g. 4:5 for feed]
**Secondary formats:** [e.g. 1:1, 9:16]
**Platform primary:** [e.g. Instagram]
</code></code></pre><h3>Step 3 &#8212; Install the skill files</h3><p>You don&#8217;t need to create any folders manually. For each skill below:</p><ol><li><p>Open Claude Code with your project folder as the working directory</p></li><li><p>Copy the full code block for that skill</p></li><li><p>Paste it into Claude Code and send this message: <strong>&#8220;Create the file </strong><code>.claude/commands/[skill-name].md</code><strong> with the content I just pasted.&#8221;</strong></p></li><li><p>Claude creates the file and the folder structure automatically</p></li></ol><p>Do this once for each of the 5 skills. After that, type the command to run it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>The 5 Skills</h2><div><hr></div><h3>Skill 1 &#8212; <code>/brand-brief</code></h3><p>Campaign creative direction from your product details and brief. Every other skill in this pipeline reads from this output.</p><p><strong>Install as:</strong> <code>.claude/commands/brand-brief.md</code></p><pre><code><code># brand-brief
# Claude Code custom command. When the user types /brand-brief, follow every step below in order. Do not skip steps or combine them.

---

## Step 1 &#8212; Confirm brand rules loaded

Read the CLAUDE.md file in this project folder.

Output a confirmation block in this exact format:

---
**Brand rules loaded**

Brand: [brand name]
Primary colors: [list hex values]
Visual mood: [2&#8211;3 word mood]
Product: [one sentence]
Tone: [2&#8211;3 word voice description &#8212; from CLAUDE.md if defined, otherwise "not specified"]
Target audience: [one sentence if defined, otherwise "not specified"]
---

Then ask: "Does this look right? Type yes to continue, or tell me what to correct."

Wait for the user to confirm before moving to Step 2.

---

## Step 2 &#8212; Get the campaign inputs

Ask the user for the following. Accept all answers at once if they provide them together:

1. Campaign name or working title
2. What this campaign is for &#8212; product launch, seasonal push, brand awareness, restocking a hero SKU, or other
3. Campaign mood or feeling (e.g. "cold and precise", "warm and tactile", "nocturnal and worn-in") &#8212; distinct from the brand's baseline mood if needed
4. Target audience for this specific campaign &#8212; who you're trying to reach and what they care about right now
5. Platforms this campaign will run on &#8212; list all: Instagram feed, Instagram Reels, TikTok, Meta ads, email, other
6. Campaign timeline &#8212; start date, end date, or "ongoing"
7. Any mandatory elements &#8212; specific claims, product features that must appear, anything off-limits

If any of the first five are missing, ask for them before continuing.

---

## Step 3 &#8212; Generate the campaign creative brief

Using the brand rules from CLAUDE.md and the campaign inputs, generate the complete creative brief. Output every section below in full.

---

**CAMPAIGN CREATIVE BRIEF**

**Campaign:** [campaign name]
**Brand:** [brand name]
**Date:** [today's date]

---

**Campaign objective:**
[One sentence &#8212; what success looks like for this campaign. Specific, not general.]

**Target audience (this campaign):**
[2&#8211;3 sentences. Who they are, what they want right now, what would make them stop and pay attention.]

---

**Creative direction:**

**Visual concept:**
[2&#8211;3 sentences. Describe what the campaign looks like &#8212; not a mood board concept, but what a camera would see. Anchored in the brand's palette, mood, and aesthetic rules from CLAUDE.md.]

**Shot type direction:**
List the primary shot types this campaign needs. For each, specify: what it shows, the role it plays (hero / supporting / social), and the platform it's designed for.

- Shot type 1: [what it shows] &#8212; [role] &#8212; [platform]
- Shot type 2: [what it shows] &#8212; [role] &#8212; [platform]
- Shot type 3: [what it shows] &#8212; [role] &#8212; [platform]
[Continue for as many as the campaign requires]

**Tone for this campaign:**
[One sentence &#8212; how the copy and captions should feel. Anchored in the brand's voice from CLAUDE.md, adjusted for this campaign's mood if different.]

---

**Platform specs:**

For each platform listed in the campaign inputs:

**[Platform name]**
- Format: [aspect ratio, file type]
- Primary content type: [photo / video / carousel / story]
- Hook approach: [how to open &#8212; what earns the scroll on this platform]
- Copy length: [character count or guideline]
- CTA direction: [the action you want]

---

**Visual rules for this campaign:**

Always (in addition to brand rules):
- [Campaign-specific visual rule 1]
- [Campaign-specific visual rule 2]

Never (in addition to brand rules):
- [Campaign-specific visual restriction 1]
- [Campaign-specific visual restriction 2]

---

**Production notes:**
[Any practical constraints &#8212; budget signal, team size, whether this is in-studio or location, existing assets that must be incorporated.]

---

After outputting the full brief, ask: "Does this brief look right? Approve to continue to the shot list, or tell me what to adjust."

Wait for the user to confirm before telling them: "Run /shot-list to generate your complete shot plan from this brief."
</code></code></pre><div><hr></div><h3>Skill 2 &#8212; <code>/shot-list</code></h3><p>A complete, structured shot plan from the campaign brief &#8212; hero, lifestyle, detail, ad crops, and social cuts, each specified with scene, framing, and platform destination.</p><p><strong>Install as:</strong> <code>.claude/commands/shot-list.md</code></p><pre><code><code># shot-list
# Claude Code custom command. When the user types /shot-list, follow every step below in order. Do not skip steps or combine them.

---

## Step 1 &#8212; Confirm brand rules and brief

Read the CLAUDE.md file in this project folder.

Then ask: "Paste your campaign brief below, or type 'use last' if you just ran /brand-brief and the brief is still in this session."

If the user pastes a brief, read it in full before continuing.
If the user types 'use last', reference the brief output from the current session.

Output a confirmation block:

---
**Ready to build shot list**

Brand: [brand name]
Campaign: [campaign name]
Visual mood: [mood from brief or CLAUDE.md]
Platforms: [list platforms from brief]
---

Ask: "Does this look right? Type yes to continue."

Wait for confirmation before Step 2.

---

## Step 2 &#8212; Get shot list parameters

Ask the user for the following. Accept all answers at once:

1. Total number of shots needed (or "as many as the campaign requires")
2. Shot categories to include &#8212; choose any combination:
   - Hero shots (product as primary subject, full brand treatment)
   - Lifestyle shots (product in context, environment-forward)
   - Detail shots (close-ups &#8212; texture, material, key visual detail)
   - Ad crops (formatted specifically for paid placement, clean background)
   - Social cuts (short-form or story-format, designed for Reels or TikTok)
3. Any specific shots the user already knows they need

If the user says "all categories," generate shots across all five types. Weight toward hero and lifestyle unless the brief specifies otherwise.

---

## Step 3 &#8212; Generate the shot list

Using the brand rules, campaign brief, and shot parameters, generate the complete shot list.

Format every shot exactly like this:

---
**Shot [number] &#8212; [shot category]**

Scene: [one sentence &#8212; the physical setting. Surface, props if any, environment. Specific, not abstract.]
Product role: [hero / supporting / background]
Key visual detail: [the one thing the camera must show clearly]
Framing: [tight / medium / wide] + [angle: overhead / eye level / low angle / 45-degree]
Platform destination: [which platform(s) this asset is designed for]
Format: [aspect ratio]
Priority: [must-have / nice-to-have]
---

Rules for the shot list:
- Every shot must be distinct &#8212; vary framing, environment, and product role across the list
- Hero shots: product dominant, brand palette visible, no competing elements
- Lifestyle shots: product in a real context, environment adds meaning
- Detail shots: under 18 inches from the subject, show material or craft
- Ad crops: clean, single focal point, works at small sizes
- Social cuts: designed to work in 9:16, product visible in the first frame

After the full shot list, output:

---
**Shot list summary**

Total shots: [number]
Hero: [count]
Lifestyle: [count]
Detail: [count]
Ad crops: [count]
Social cuts: [count]
Must-haves: [count]
Nice-to-haves: [count]
---

Ask: "Does this shot list work? Approve to continue to image prompts, or tell me what to change."

Wait for approval before telling them: "Run /image-prompts to generate production-ready prompts from this shot list."
</code></code></pre><div><hr></div><h3>Skill 3 &#8212; <code>/image-prompts</code></h3><p>One production-ready image prompt per shot &#8212; under 60 words, written for NanoBanana, locked to your brand&#8217;s palette and visual rules.</p><p><strong>Install as:</strong> <code>.claude/commands/image-prompts.md</code></p><pre><code><code># image-prompts
# Claude Code custom command. When the user types /image-prompts, follow every step below in order. Do not skip steps or combine them.

---

## Step 1 &#8212; Confirm brand rules and shot list

Read the CLAUDE.md file in this project folder.

Then ask: "Paste your approved shot list below, or type 'use last' if you just ran /shot-list and the list is still in this session."

If the user pastes a shot list, read it in full before continuing.
If the user types 'use last', reference the shot list output from the current session.

Output a confirmation block:

---
**Ready to generate image prompts**

Brand: [brand name]
Visual mood: [mood from CLAUDE.md]
Primary colors: [hex values]
Shots to convert: [total shot count from shot list]
---

Ask: "Does this look right? Type yes to continue."

Wait for confirmation before Step 2.

---

## Step 2 &#8212; Check for reference images

Ask: "Do you have reference images in your project folder? If yes, name them (ref-1.jpg, ref-2.jpg, etc.) and I'll incorporate them. If not, type 'no references' and I'll build from brand rules only."

If references are named, note them. Use them to inform the visual language of the prompts &#8212; surface quality, light quality, color temperature &#8212; without describing them directly.

---

## Step 3 &#8212; Generate image prompts

Convert each shot from the approved shot list into one image prompt.

Rules for every prompt:
- Under 60 words
- Photorealistic &#8212; describe only what a camera lens would see
- No abstract mood words (no "ethereal", "dreamlike", "luxurious", "editorial") &#8212; replace with physical descriptions
- Reference brand palette hex values or tone words directly in the prompt
- Structure: subject &#8594; lighting (source, direction, quality) &#8594; color (brand palette reference) &#8594; framing &#8594; surface or environment detail &#8594; style note if relevant
- Match the aspect ratio specified in the shot list for each shot

Format each prompt exactly like this:

---
**Prompt [number] &#8212; [shot category from shot list]**
Platform: [platform destination from shot list]
Aspect ratio: [from shot list]

[Full prompt text. Subject. Lighting. Color. Framing. Surface. Under 60 words.]
---

After all prompts are output, ask: "Do any prompts need adjusting? Name the shot number and tell me what to change, or type 'done' to finalize."

Make any requested changes, then output the final prompt set as a clean numbered list with no formatting between them &#8212; ready to copy into NanoBanana or any image generator.

After the final list, tell the user: "Run /ad-variations to generate ad copy from your hero visual, or run /campaign-pack to bundle everything into a client deliverable."
</code></code></pre><div><hr></div><h3>Skill 4 &#8212; <code>/ad-variations</code></h3><p>10 complete ad copy variations &#8212; hook, body, CTA &#8212; each using a different hook type, formatted for the platform you specify.</p><p><strong>Install as:</strong> <code>.claude/commands/ad-variations.md</code></p><pre><code><code># ad-variations
# Claude Code custom command. When the user types /ad-variations, follow every step below in order. Do not skip steps or combine them.

---

## Step 1 &#8212; Confirm brand rules loaded

Read the CLAUDE.md file in this project folder.

Output a confirmation block in this exact format:

---
**Brand rules loaded**

Brand: [brand name]
Product: [one sentence]
Tone: [2&#8211;3 word voice description &#8212; from CLAUDE.md if defined, otherwise "not specified"]
Target audience: [one sentence if defined, otherwise "not specified"]
---

Then ask: "Does this look right? Type yes to continue, or tell me what to correct."

Wait for the user to confirm before moving to Step 2.

---

## Step 2 &#8212; Get the hero visual and brief

Ask the user for the following. Accept all answers at once if they provide them together:

1. Hero visual &#8212; ask them to drag the image into the chat, describe it in one sentence, or reference it by shot number from the shot list
2. What the image shows &#8212; product, setting, key visual detail visible in the frame
3. Campaign goal &#8212; awareness, conversions, add-to-cart, or lead gen
4. Target audience for this specific ad &#8212; who they are, what they want, what frustrates them currently
5. Platform &#8212; Meta (Facebook/Instagram), TikTok, or both
6. Primary CTA &#8212; the one action you want them to take
7. Any mandatory claims or restrictions &#8212; legal disclaimers, specific features that must or cannot appear in copy

If any of the first five are missing, ask for them before continuing.

---

## Step 3 &#8212; Generate 10 ad copy variations

Using the brand rules, the hero visual description, and the campaign brief, generate 10 complete ad copy variations.

Rules for all copy:
- Match the brand's tone from CLAUDE.md exactly &#8212; no generic marketing language
- Every variation must be complete: hook, body, CTA
- Hooks must stop the scroll &#8212; first line earns the second, no warmup, no greeting
- Body copy: one idea per variation, not a feature list
- CTA must match the platform norms and campaign goal

Hook types to distribute across the 10 (use each at least once, vary the rest):
- Contradiction &#8212; says the opposite of what they expect
- Specificity &#8212; a number, a time, a result &#8212; something concrete
- Direct address &#8212; speaks to one person's exact situation
- Result first &#8212; leads with the outcome, not the process
- Social proof &#8212; anchors on behavior or adoption, not testimonials

Format each variation exactly like this:

---
**Variation [number] &#8212; [hook type] &#8212; [platform: Meta / TikTok / Both]**

**Hook:**
[First line &#8212; under 10 words. No punctuation tricks, no emojis.]

**Body:**
[2&#8211;4 sentences. One idea. Specific, not general. Written in the brand's voice from CLAUDE.md.]

**CTA:**
[The action. Platform-appropriate. One line.]

**Character count:** [total character count for hook + body + CTA combined]
---

After all 10 variations, output a summary table:

| # | Hook Type | Platform | Hook Line | CTA |
|---|-----------|----------|-----------|-----|
[Fill in every row]

Ask: "Do you want these formatted for Meta Ads Manager, TikTok Ads Manager, or a CSV export? Or type 'done' to finish."

**If Meta Ads Manager:**
Output each variation with:
Primary Text: [hook + body combined]
Headline: [5 words or under]
Description: [CTA text &#8212; under 25 characters]

**If TikTok Ads Manager:**
Output each variation with:
Ad Text: [hook + body combined, under 100 characters]
Call to Action: [select from: Shop Now / Learn More / Sign Up / Download / Contact Us / Apply Now]

**If CSV:**
Output a markdown table with columns: Variation | Platform | Hook Type | Hook | Body | CTA | Character Count
Tell the user: "Copy this table into Google Sheets and save as CSV. It maps directly to bulk upload templates for both platforms."

**If done:**
Leave the copy as formatted above. Tell the user: "Run /campaign-pack to bundle all outputs into one client deliverable."
</code></code></pre><div><hr></div><h3>Skill 5 &#8212; <code>/campaign-pack</code></h3><p>All four prior outputs bundled into one client deliverable &#8212; brief summary, shot list, prompts, ad copy, and a production checklist.</p><p><strong>Install as:</strong> <code>.claude/commands/campaign-pack.md</code></p><pre><code><code># campaign-pack
# Claude Code custom command. When the user types /campaign-pack, follow every step below in order. Do not skip steps or combine them.

---

## Step 1 &#8212; Confirm brand rules loaded

Read the CLAUDE.md file in this project folder.

Output a confirmation block:

---
**Brand rules loaded**

Brand: [brand name]
Product: [one sentence]
---

Ask: "Does this look right? Type yes to continue."

Wait for confirmation before Step 2.

---

## Step 2 &#8212; Collect the session outputs

Ask the user: "Paste the outputs from this session below &#8212; brand brief, shot list, image prompts, and ad variations. You can paste them all at once or one at a time. Type 'done' when everything is in."

Accept all pasted content. Read and organize it before continuing. If any of the four outputs is missing, note which one and ask: "I don't see [missing output]. Paste it now or type 'skip' to leave that section blank in the pack."

---

## Step 3 &#8212; Generate the campaign pack

Using all provided outputs, generate the complete campaign pack. Output every section in full.

---

**CAMPAIGN PACK**

**Brand:** [brand name]
**Campaign:** [campaign name from brief]
**Prepared:** [today's date]
**Prepared by:** [leave as "(insert brand name" unless the user specifies otherwise]

---

### SECTION 1 &#8212; CAMPAIGN BRIEF SUMMARY

[Condense the full brand brief into a clean 6&#8211;8 line summary:]

**Campaign:** [name]
**Objective:** [one sentence]
**Target audience:** [two sentences max]
**Visual direction:** [two sentences max &#8212; what the campaign looks like]
**Tone:** [one sentence]
**Platforms:** [list]
**Timeline:** [dates or "ongoing"]

---

### SECTION 2 &#8212; SHOT LIST

[Reproduce the full approved shot list exactly as generated by /shot-list. Do not summarize or shorten it.]

---

### SECTION 3 &#8212; IMAGE PROMPTS

[Reproduce the final clean prompt list from /image-prompts. One prompt per shot, numbered, no extra formatting between them.]

---

### SECTION 4 &#8212; AD COPY VARIATIONS

[Reproduce all 10 variations from /ad-variations in full &#8212; hook, body, CTA, character count for each. Include the summary table at the end.]

---

### SECTION 5 &#8212; PRODUCTION CHECKLIST

Generate a production checklist based on everything in the pack. Every item is a specific task, not a category header.

**Pre-production:**
- [ ] Brand rules confirmed in CLAUDE.md
- [ ] Reference images saved to project folder (ref-1, ref-2, ref-3)
- [ ] Shot list approved
- [ ] [Any other pre-production item implied by the brief or shot list]

**Image production:**
- [ ] [One line per shot from the shot list &#8212; "Hero shot 1 &#8212; [scene description]"]

**Ad copy:**
- [ ] 10 ad variations reviewed and top 4&#8211;5 selected for testing
- [ ] Selected variations formatted for [platform(s) from brief]
- [ ] [Any compliance or legal review noted in the brief]

**Delivery:**
- [ ] All image assets exported at [format and resolution from CLAUDE.md]
- [ ] Ad copy formatted for upload &#8212; [Meta / TikTok / both]
- [ ] Campaign pack document delivered to [leave blank for user to fill in]

---

After outputting the full pack, tell the user: "Your campaign pack is complete. Copy the full output into a Google Doc or Notion page and share with your team or client."
</code></code></pre><div><hr></div><h2>How to use it</h2><p>One session. Brief in, full campaign out.</p><p>Each skill runs in sequence &#8212; <code>/brand-brief</code> produces the direction, <code>/shot-list</code> plans the assets, <code>/image-prompts</code> writes production-ready prompts, <code>/ad-variations</code> tests 10 copy angles, <code>/campaign-pack</code> bundles everything. The CLAUDE.md is what makes this reliable &#8212; every skill reads the same brand rules at the start. Swap the file for a different brand and all five skills work for that brand instead.</p><div><hr></div><p>If you want this built for your brand &#8212; custom workflow, your tools, done for you &#8212; fill out this form: <a href="https://app.youform.com/forms/avjlmcgd">https://app.youform.com/forms/avjlmcgd</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to Use Claude Code for Brand Visuals (The Full Setup)]]></title><description><![CDATA[This is a Claude Code setup that takes your brand rules, a campaign brief, and produces a full shot list plus image prompts &#8212; and generates the images directly if you have fal.ai or Gemini connected.]]></description><link>https://theseanclaude.substack.com/p/the-claude-code-setup-i-use-to-build</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/the-claude-code-setup-i-use-to-build</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Wed, 22 Apr 2026 13:03:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is a Claude Code setup that takes your brand rules, a campaign brief, and produces a full shot list plus image prompts &#8212; and generates the images directly if you have fal.ai or Gemini connected. You fill in one file once. After that, you type one command and Claude does the rest. Everything you need is below &#8212; the files, the setup, and how to use it.</p><div><hr></div><h2>What you&#8217;re building</h2><p>Two files. That&#8217;s the whole setup.</p><p><strong>A CLAUDE.md file</strong> &#8212; your brand rules. Claude Code reads this automatically at the start of every session. You fill it in once with your brand&#8217;s colors, visual mood, product description, and what the brand always and never does visually. After that, Claude already knows the brand every time you open the project.</p><p><strong>A skill file (brand-shoot.md)</strong> &#8212; a custom command. You type <code>/brand-shoot</code>, and Claude runs the full workflow in sequence: confirms your brand rules are loaded, asks for your campaign brief, generates a shot list, writes image prompts, and generates the images. One command, five steps, complete shoot.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>The files</h2><h3>File 1: CLAUDE.md</h3><ol><li><p>Create a new folder on your computer &#8212; name it whatever your brand is</p></li><li><p>Copy everything in the block below</p></li><li><p>Open VS Code or Cursor, paste it, and save the file as <code>CLAUDE.md</code> inside that folder</p></li><li><p>Replace every placeholder value with your actual brand details &#8212; colors, mood, product description, visual rules</p></li></ol><p>That folder is your Claude Code project. Everything runs from here.</p><p><strong>One step most people skip:</strong> add reference images to your project folder before running the workflow. Find 3&#8211;5 images that show the look you want &#8212; campaign photos, editorials, anything &#8212; save them into the folder and name them ref-1, ref-2, ref-3. Claude Code reads them directly. Without references the outputs are generic. With them, the outputs actually match what you had in mind.</p><pre><code><code># CLAUDE.md &#8212; Brand Visual Rules
# Replace all values below with your brand details. Claude Code reads this file automatically at the start of every session.

---

## Brand Name

Bloc

---

## Visual Identity

**Primary colors:**
- Off-white: #F0EDE8
- Washed navy: #1A2035
- Faded black: #0D0D0D

**Secondary colors:**
- Concrete grey: #6B6B6B
- Dirty white: #D9D4CC

**Visual mood:** gritty, nocturnal, worn-in

**Aesthetic references:** Supreme campaign photography, Palace lookbooks, St&#252;ssy night shots &#8212; real locations, real light, nothing staged

**Visual references (images):**
- ref-1.jpg
- ref-2.jpg
- ref-3.jpg

Save 3&#8211;5 reference images into your project folder and name them ref-1, ref-2, etc. Claude Code reads them directly from the folder when writing prompts.

---

## Product

**What it is:** Heavyweight streetwear &#8212; graphic hoodies, varsity jackets, oversized tees, outerwear

**What it does:** Bold enough to read from across the street, built to last

**How it's typically shown:** Worn on a real person in a real location &#8212; city streets, parking lots, underpasses, storefronts at night. Chest graphic always legible. Environment adds context, never competes.

---

## Campaign Style

**Always:**
- Nighttime or blue-hour light &#8212; streetlights, neon, headlights
- Person in frame wearing the piece &#8212; chest graphic facing camera
- Real urban locations &#8212; nothing rented or sanitized
- Film grain or low-light texture &#8212; not clean, not polished
- Single subject, single garment per shot

**Never:**
- Studio lighting or white backdrops
- Flat lay or hanger shots
- Daytime bright sunlight
- Multiple people in the same shot
- Lifestyle props unless the brief calls for it

---

## Output Format

**Default aspect ratio:** 4:5 (portrait) for feed posts

**Secondary format:** 1:1 (square) for grid, 9:16 (vertical) for Stories and Reels

**Platform specs:** Instagram primary &#8212; file delivery at 1080px minimum on the short side
</code></code></pre><div><hr></div><h3>File 2: The skill file</h3><p>You don&#8217;t need to create any folders manually. Just do this:</p><ol><li><p>Open Claude Code with your project folder open (the folder where you saved <code>CLAUDE.md</code>)</p></li><li><p>Copy the entire code block below</p></li><li><p>Paste it into Claude Code and send this message: <strong>&#8220;Create the file </strong><code>.claude/commands/brand-shoot.md</code><strong> with the content I just pasted.&#8221;</strong></p></li><li><p>Claude creates the file and the folder structure automatically</p></li><li><p>Type <code>/brand-shoot</code> to run it</p></li></ol><p>That&#8217;s it. Claude handles the setup.</p><pre><code><code># brand-shoot
# Claude Code custom command. When the user types /brand-shoot, follow every step below in order. Do not skip steps or combine them.

---

## Step 1 &#8212; Confirm brand rules loaded

Read the CLAUDE.md file in this project folder.

Output a confirmation block in this exact format:

---
**Brand rules loaded**

Brand: [brand name]
Primary colors: [list hex values]
Visual mood: [2&#8211;3 word mood]
Product: [one sentence]
---

Then ask: "Does this look right? Type yes to continue, or tell me what to correct."

Wait for the user to confirm before moving to Step 2.

---

## Step 2 &#8212; Get campaign brief

Ask the user for the following. Accept all answers at once if they provide them together:

1. Campaign name or working title
2. Feeling or mood for this campaign (e.g. "slow morning", "gift-worthy", "clinical trust")
3. Context or setting (e.g. "bathroom shelf", "outdoor market table", "minimalist kitchen counter")
4. Number of shots needed
5. Formats needed &#8212; list aspect ratios (e.g. 1:1, 4:5, 9:16)

If any of these are missing, ask for them before continuing.

---

## Step 3 &#8212; Generate shot list

Using the campaign brief and the brand rules from CLAUDE.md, generate a structured shot list.

Format each shot exactly like this:

**Shot [number]**
Scene: [one sentence describing the physical scene &#8212; surface, props, environment]
Product role: [hero / supporting / background]
Key surface or prop: [specific material or object]
Framing: [tight / medium / wide] [angle if relevant &#8212; overhead, eye level, low angle]

Generate one shot per number requested. Make every shot distinct &#8212; vary framing, surface, and product role across the list.

After outputting the shot list, ask: "Does this shot list work? Approve to continue, or tell me what to change."

Wait for approval before moving to Step 4.

---

## Step 4 &#8212; Generate image prompts

Convert each approved shot into an image prompt.

Rules for each prompt:
- Under 60 words
- Photorealistic &#8212; describe only what a camera lens would see
- No abstract mood words (no "ethereal", "dreamlike", "magical") &#8212; replace with physical descriptions
- Format: subject &#8594; lighting (source, direction, quality) &#8594; color (reference brand palette hex values or tone words) &#8594; framing &#8594; surface detail &#8594; style reference if relevant

Output format for each prompt:

**Prompt [number]**
[prompt text]

After outputting all prompts, move immediately to Step 5.

---

## Step 5 &#8212; Generate images

Check which image generation tool is available, then follow the matching path.

**Path A &#8212; fal.ai MCP is connected:**
Call fal.ai for each prompt using the `fal-ai/flux-pro` model (fall back to `fal-ai/flux-dev` if pro is unavailable).
Pass each prompt as the `prompt` parameter.
Set `image_size` to match the first aspect ratio specified in the brief (use "square_hd" for 1:1, "portrait_4_3" for 4:5, "portrait_16_9" for 9:16).
Run all prompts. Present each image inline as it completes, labeled with its shot number.

**Path B &#8212; Google Gemini API is connected (no fal.ai MCP):**
Use the Gemini image generation API (Imagen model) to run each prompt.
Present each image inline as it completes, labeled with its shot number.

**Path C &#8212; Neither fal.ai nor Gemini is connected:**
Output all prompts as a clean numbered list. Do not add any other text between the prompts.
After the list, add exactly this note on its own line:

Copy these into NanoBanana, Midjourney, or any image generator. Each prompt is formatted for photorealistic output.
</code></code></pre><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Connect your image generator (pick one)</h2><h3>Option A &#8212; fal.ai</h3><p>Go to fal.ai and create an account. Find your API key in the dashboard under API Keys. In Claude Code, open your project settings and add fal.ai as an MCP server &#8212; paste your API key where it asks for credentials. Once connected, Claude generates images directly inside your session at Step 5. No copy-pasting, no tab switching.</p><h3>Option B &#8212; Google Gemini</h3><p>Go to Google AI Studio at aistudio.google.com and get your API key. In your Claude Code project settings, add it as an environment variable called GEMINI_API_KEY. Claude will use Gemini&#8217;s image generation at Step 5, same inline experience.</p><h3>Option C &#8212; Neither</h3><p>Skip this section entirely. At Step 5, the skill outputs all prompts as a clean numbered list. Paste them into NanoBanana or any image generator. Everything still works &#8212; just one extra manual step.</p><div><hr></div><h2>How to use it</h2><ol><li><p>Open Claude Code</p></li><li><p>Set your project folder &#8212; the one containing <code>CLAUDE.md</code> &#8212; as the working directory</p></li><li><p>Type <code>/brand-shoot</code> and hit enter</p></li><li><p>Claude reads your brand rules and confirms them &#8212; check they look right, type yes to continue</p></li><li><p>Answer the brief questions: campaign name, mood, setting, how many shots, what formats</p></li><li><p>Claude outputs the shot list &#8212; approve it or ask for changes</p></li><li><p>Claude writes the image prompts &#8212; they run automatically into your image generator, or output as a list if nothing is connected</p></li></ol><div><hr></div><p>The whole run takes under 10 minutes. The brand rules stay consistent every time because Claude reads the same file. Swap the <code>CLAUDE.md</code> for a different brand and the skill works for that brand instead.</p><p>If you want this built out for your brand &#8212; custom workflow, your tools, done for you &#8212; fill out this form and I&#8217;ll be in touch: <a href="https://app.youform.com/forms/avjlmcgd">https://app.youform.com/forms/avjlmcgd</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How I Keep the Same AI Face Across Every UGC Video (Free Workflow Inside)]]></title><description><![CDATA[If your AI UGC looks different every video, it&#8217;s not the tool.]]></description><link>https://theseanclaude.substack.com/p/how-i-keep-the-same-ai-face-across</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/how-i-keep-the-same-ai-face-across</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Sun, 19 Apr 2026 19:20:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If your AI UGC looks different every video, it&#8217;s not the tool. It&#8217;s that you&#8217;re generating images instead of building a character.</p><p>There&#8217;s a difference. A character is an asset you own and reuse. A generated image is a one-off you can never reproduce exactly. That&#8217;s why your brand looks like five different people made it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here&#8217;s what I do instead.</p><div><hr></div><p><strong>First, build her in Higgsfield.</strong></p><p>This is where everything starts. You&#8217;re not prompting for a vibe &#8212; you&#8217;re defining a person. Face structure, skin tone, energy, age, the way she carries herself. Get specific. The more locked-in she is at this stage, the more consistent she&#8217;ll be across every single render after this.</p><p>Don&#8217;t rush it. A character that drifts here drifts everywhere.</p><div><hr></div><p><strong>Then run her through the DNA Framework.</strong></p><p>Nanobanana pro holds the face. Enhancor makes it believable.</p><p>This is the step most people skip &#8212; and it&#8217;s why their character looks slightly different every time. Nanobanana pro keeps the facial geometry locked. Enhancor adds the human layer: skin texture, lighting response, the micro-details that make your eye stop questioning whether it&#8217;s real.</p><p>Both tools stay in sync. The identity travels with the character, not just the image. That&#8217;s the whole point.</p><div><hr></div><p><strong>Now move her into a new environment.</strong></p><p>Same character. Different setting, different lighting, different scenario.</p><p>She&#8217;s holding your product. She&#8217;s in a cafe. She&#8217;s looking straight at the camera in a studio. The face doesn&#8217;t change &#8212; only the context does.</p><p>This is what actually makes AI UGC scalable. You&#8217;re not rebuilding her for every brief. You&#8217;re placing her into whatever scene the ad needs.</p><p>The workflow runs in Weavy. <a href="https://app.weavy.ai/flow/hxv4xHD7umrrlyoJIncx0Z?ref=sc&amp;fp_sid=ugc">Open it directly here</a> &#8212; if you&#8217;re not set up yet it&#8217;ll walk you through it.</p><div><hr></div><p><strong>Build her once. Use her forever.</strong></p><p>Every video from here is an iteration, not a rebuild. She becomes a creative asset your audience starts to recognise. That&#8217;s what separates a system from a content grind.</p><div><hr></div><p><strong>Here&#8217;s the full workflow &#8212; free.</strong></p><p>Everything above, step by step. Higgsfield setup, Character sheet, DNA Framework, environment scripting.</p><p><strong><a href="https://app.weavy.ai/flow/hxv4xHD7umrrlyoJIncx0Z?ref=sc&amp;fp_sid=ugc">&#8594; Open the Character Lock Workflow in Weavy</a></strong></p><div><hr></div><p><strong>If you want to take this further &#8212;</strong></p><p>The Character Lock System is one workflow. If you&#8217;re running paid ads and need 50 variations a week, this is what it connects to.</p><p>UGC creators charge $500&#8211;$2K per video. You need volume. The math doesn&#8217;t work.</p><p>The <strong>Paid Ads Creative System</strong> is 6 workflows built in Weavy that handle the whole pipeline &#8212; scripts, characters, variations, batch output, product videos, scene-by-scene builds. One pack, runs everything.</p><p><strong>What&#8217;s inside:</strong></p><ul><li><p><strong>Character Identity System</strong> &#8212; reference photo in, reusable character + blueprint document out</p></li><li><p><strong>AI UGC Generator</strong> &#8212; your character + your script = a talking head video</p></li><li><p><strong>Ad Script Generator</strong> &#8212; product description in, 3 complete UGC scripts out</p></li><li><p><strong>Batch Ad Variation Engine</strong> &#8212; one input, full testing library out</p></li><li><p><strong>Product-to-UGC Transformer</strong> &#8212; product photo in, lifestyle video out, no character needed</p></li><li><p><strong>Scene-by-Scene Builder</strong> &#8212; one script in, full set of clips ready to stitch</p></li></ul><p>One UGC creator video: $500&#8211;$2,000. This pack: $97 once.</p><p><strong><a href="https://stan.store/seanclaude/p/the-paid-ads-creative-system-workflow-pack">&#8594; Get the Paid Ads Creative System &#8212; $97</a></strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Seedance 2.0 Full Prompting Guide (The Structure That Actually Works)]]></title><description><![CDATA[Plus the Claude skill I built that writes them for you]]></description><link>https://theseanclaude.substack.com/p/seedance-20-prompt-guide-how-to-get</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/seedance-20-prompt-guide-how-to-get</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Mon, 13 Apr 2026 17:41:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most people prompting Seedance 2.0 are treating it like an image generator.</p><p>They describe what they want to see. The model gives them something that looks fine. Generic. Nothing you&#8217;d actually use. They regenerate. Still generic. They blame the tool.</p><p>The tool isn&#8217;t the problem.</p><p>Seedance 2.0 is a visual pattern matcher trained on cinematic video data. When you give it a description, it finds the closest pattern it&#8217;s ever seen. Give it something vague &#8212; &#8220;a woman walking through a city at night&#8221; &#8212; and it returns the most average version of that it has.</p><p>The fix isn&#8217;t more detail. It&#8217;s structure.</p><div><hr></div><p><strong>CAMERA &#8594; SUBJECT &#8594; ACTION &#8594; ENVIRONMENT &#8594; LIGHTING &#8594; STYLE</strong></p><p>Six parts. That order. Nothing extra.</p><p><strong>Camera</strong> &#8212; shot type plus one movement. One only. Never stack two.<br>Slow dolly in. Tracking shot. Orbit. Crane up. Static tripod.</p><p><strong>Subject</strong> &#8212; specific and visual.<br>Wrong: &#8220;a woman&#8221;<br>Right: &#8220;a woman in a black leather jacket with silver rings&#8221;</p><p><strong>Action</strong> &#8212; one verb. What physically happens.<br>Wrong: &#8220;dynamic movement&#8221;<br>Right: &#8220;turns slowly toward camera&#8221;</p><p><strong>Environment</strong> &#8212; where it is, plus atmosphere the model can render. Rain, fog, dust, smoke, sparks. Give it particles to work with.</p><p><strong>Lighting</strong> &#8212; the single biggest quality lever. Always name it.<br>Golden hour. Rim light. Volumetric. Low-key side lighting. Neon. Practical lights only.</p><p><strong>Style</strong> &#8212; 2&#8211;3 keywords at the end. Global modifiers.<br>Film grain. Shallow depth of field. Anamorphic lens flare. Warm tones.</p><div><hr></div><p>Word count matters. 50&#8211;70 words for a single shot. 100&#8211;150 words if you&#8217;re using timeline structure. Past 150 and the model starts averaging &#8212; it stops following your prompt and falls back on what it&#8217;s seen most.</p><p>Here&#8217;s an example at 52 words:</p><p><em>Slow dolly in, 85mm lens, shallow depth of field. A faceted perfume bottle sits on a black mirror surface under a single overhead spotlight. Warm gold light refracts through the crystal. Dust motes drift through the beam. Cinematic, rich blacks, bokeh background.</em></p><p>That&#8217;s a cinematic output. &#8220;A perfume bottle with dramatic lighting&#8221; is not.</p><div><hr></div><p>For 10-second videos, you can break the prompt into timestamped segments. The model follows them.</p><pre><code><code>[Global setup &#8212; shot, subject, environment, lighting, style]

[0:00&#8211;0:03] Shot type. Action. One detail.
[0:03&#8211;0:07] Shot type. Development. One detail.
[0:07&#8211;0:10] Shot type. Resolution. Mood word.
</code></code></pre><p>3&#8211;4 segments maximum. 1&#8211;2 sentences each. Global setup goes before the timeline, not inside it. This is the difference between a clip that drifts and one that tells a visual story in 10 seconds.</p><div><hr></div><p>What breaks it:</p><ul><li><p>Two camera movements stacked in one prompt</p></li><li><p>Camera brand names (ARRI, RED mean nothing to the model)</p></li><li><p>Speed percentages (&#8221;30% speed&#8221; is not a parameter it reads)</p></li><li><p>Post-production terms (rotoscope, composite, keyframe)</p></li><li><p>Prompts over 150 words</p></li></ul><p>Run the formula on your next generation. The gap from what you were getting before is usually immediate.</p><div><hr></div><p>I built a Claude skill that writes these prompts for you.</p><p>You give it a brief &#8212; as sparse or detailed as you want &#8212; and it outputs a full structured Seedance prompt, formatted and ready to paste. It covers single shots, timeline sequences, B-roll runs, and product work. Every output includes three specific tweaks to try if the result doesn&#8217;t land.</p><p>Here&#8217;s how to install it.</p>
      <p>
          <a href="https://theseanclaude.substack.com/p/seedance-20-prompt-guide-how-to-get">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Creative Director File (CLAUDE.md Explained)]]></title><description><![CDATA[What This Is]]></description><link>https://theseanclaude.substack.com/p/the-file-that-turns-claude-code-into</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/the-file-that-turns-claude-code-into</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Mon, 06 Apr 2026 17:14:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>What This Is</h2><p>One file. You fill it out once.</p><p>Every time you open Claude Code, it reads this file before doing anything. Your brand identity, your visual world, your output standards&#8212;locked in permanently.</p><p>You stop prompting from scratch every session. Claude already knows who you are.</p><div><hr></div><h2>What You Need</h2><ul><li><p><strong>Claude Code</strong> &#8212; get it at claude.ai/code</p></li><li><p><strong>A code editor</strong> &#8212; VS Code, Cursor, or Antigravity (any of these work)</p></li><li><p><strong>A fal.ai account and API key</strong> &#8212; get it at fal.ai/dashboard/keys</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Setup</h2><p>If you haven&#8217;t installed Claude Code yet, get it at claude.ai/code.</p><p>Once installed:</p><ol><li><p>Create a project folder</p></li><li><p>Open Claude Code in that folder (<code>claude</code> in your terminal)</p></li><li><p>Create a file called <code>CLAUDE.md</code> in the root</p></li><li><p>Copy the template below into it</p></li></ol><p>That&#8217;s it. Claude reads this file at the start of every session.</p><h2>Fill Out the Template</h2><p>Open the CLAUDE.md below. Work through every section. Delete the instruction prompts as you go.</p><p>The more specific you are, the better your output. A vague brief produces a generic image. A specific brief produces a campaign.</p><p>Don&#8217;t rush this. This file is your creative director. Treat it like one.</p><div><hr></div><h2>Generate</h2><p>Once your file is filled out, type in Claude Code:</p><pre><code><code>Generate 5 campaign images from my CLAUDE.md</code></code></pre><p>Claude reads your brief, builds the prompt, calls fal.ai, and saves the images to your project folder.</p><p>That&#8217;s it.</p><div><hr></div><h2>The Rule</h2><p>Every time you want a new shot&#8212;change one thing in your brief and run it again.</p><p>Same brand world, different scene. The identity stays locked. The output keeps improving.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://theseanclaude.substack.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p></p><h2>The Template (Copy This)</h2><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;12b22299-2b3b-435d-bc65-9225b0819b8b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># CREATIVE DIRECTOR
# Fill every section. The more specific you are, the better your output.
# Delete the prompts once you've filled each section in.
---

## CAMPAIGN

**What is this campaign for:**
What product, drop, or project are you shooting? One sentence.

**Campaign objective:**
What should someone feel when they see these images? What do you want them to do?

**Campaign name or internal title:**
Give it a name. Helps Claude stay consistent across sessions.

---

## BRAND

**Brand name:**
Your brand name.

**What the brand stands for:**
What does your brand believe? What's the attitude? What does it feel like to wear or use it?

**Who it's for:**
Age range, lifestyle, what they care about, who else they follow.

**Brands that are doing it right:**
Name 2&#8211;3 brands whose visual world you respect. Claude uses these as reference points.

**What this brand is never:**
What look, feel, or energy is completely wrong for this brand? Be specific.

---

## PRODUCT

**Hero product:**
Exact product name, colourway, material, and any specific details &#8212; logo placement, texture, fit.

**How it appears in the imagery:**
Is it worn? Held? In the background? How prominent is it?

**What the product should feel like in the image:**
Effortless? Considered? Raw? Describe the feeling, not the product.

---

## VISUAL WORLD

**The world this campaign lives in:**
What city, environment, or setting? What does it feel like to be there? Is it busy or empty, raw or polished, day or night?

**Lighting:**
What kind of light? Golden hour, overcast, fluorescent, midday hard sun? Where is it coming from?

**Color palette:**
What colours dominate the frame? What colours are never in frame?

**Texture:**
What surfaces, materials, fabrics define the visual feel?

**What is never in frame:**
Be specific. Tourists? Artificial light? Modern signage? Clean studio backgrounds?

---

## TALENT

**Who is in this campaign:**
Age, energy, attitude. How do they move through the world?

**Physical direction:**
Specific physical details &#8212; complexion, hair, build. The more specific, the more consistent.

**Wardrobe:**
What are they wearing beyond the hero product? What never competes with it?

**How they interact with the camera:**
Direct? Candid? Mid-motion? Do they look at camera or away?

**What they are never doing:**
Posing? Smiling on cue? Touching their hair? List what breaks the character.

---

## SHOT DIRECTION

**Shot types needed:**
Write one shot per entry. For each shot describe:
- What is the character doing and where
- What is in the environment around them
- What camera angle and distance

Example format:
Shot 1 &#8212; [Name]
[Scene description &#8212; what's happening, where, what energy]
Camera: [distance, lens, framing]

Add as many shots as you need.

---

## MOOD REFERENCES

**The one image that defines this entire campaign:**
Describe it in one sentence &#8212; the image that, if you captured it, would make the whole campaign worth it.

**The feeling when you see the strongest image:**
One word or one sentence. What emotion or desire does it produce?

**Photographers or directors whose work resonates:**
Name them. Claude uses these as shorthand for lighting, composition, and energy.

---

## OUTPUT STANDARDS

**Aspect ratio:**
9:16 for Reels. 1:1 for feed. 4:5 for feed portrait.

**Number of images per brief:**
How many variations per shot? 1&#8211;4 recommended.

**Resolution:**
1K for testing. 2K for finals.

**Every image must be:**
List your non-negotiables &#8212; natural light, talent present, environment visible, product readable.

**Every image must never be:**
List your hard rules &#8212; no studio backgrounds, no artificial light, no text overlays.</code></pre></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p>Fill this out completely. The more specific you are, the better your output.</p><p>One file. Campaign-level results.</p><p><em>Built by Sean Claude</em></p>]]></content:encoded></item><item><title><![CDATA[Building a 10-Agent Content System in Claude Code]]></title><description><![CDATA[Brief in. Full content package out. One command.]]></description><link>https://theseanclaude.substack.com/p/the-10-agent-brand-content-system</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/the-10-agent-brand-content-system</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Mon, 30 Mar 2026 02:05:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is the exact system I built to replace a content team.</p><p>Ten Claude Code agents run in sequence&#8212;each one handles a single production role. You give it a brief. It outputs a complete content package: script, visuals, voiceover, caption.</p><p>Nothing manual between them.</p><p>Here&#8217;s how to build it yourself.<br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>What This System Does</h2><p>Most people use Claude Code to answer one question at a time. That&#8217;s not a system&#8212;that&#8217;s a chat window.</p><p>The difference is agents. Each agent is a skill file that tells Claude Code exactly what role it plays, what it reads, what it produces, and what the next agent needs from it. Chain ten of them together and you have a production pipeline that runs on one command.</p><p><strong>The ten roles:</strong></p><ol><li><p><strong>Brief Reader</strong> &#8212; reads your brand brief, extracts context for every agent downstream</p></li><li><p><strong>Script Writer</strong> &#8212; turns the brief into a complete content script</p></li><li><p><strong>Shot Director</strong> &#8212; converts the script into a shot-by-shot production list</p></li><li><p><strong>Prompt Engineer</strong> &#8212; writes generation prompts for every shot</p></li><li><p><strong>Character Generator</strong> &#8212; generates your hook character image</p></li><li><p><strong>B-Roll Generator</strong> &#8212; generates supporting visuals</p></li><li><p><strong>Video Agent</strong> &#8212; animates the character into a clip</p></li><li><p><strong>Voice Agent</strong> &#8212; generates the voiceover</p></li><li><p><strong>Caption Writer</strong> &#8212; writes the platform caption</p></li><li><p><strong>Export Agent</strong> &#8212; packages everything into one delivery folder</p></li></ol><p>One command runs all ten. You get back a folder with everything in it.</p><div><hr></div><h2>Setup</h2><h3>1. Create an Anthropic Account</h3><p>Go to claude.ai and sign up.</p><h3>2. Install Claude Code</h3><p><strong>Mac or Linux</strong> &#8212; open your terminal and run:</p><p>bash</p><pre><code><code>curl -fsSL https://claude.ai/install.sh | bash</code></code></pre><p><strong>Windows</strong> &#8212; open PowerShell and run:</p><p>powershell</p><pre><code><code>irm https://claude.ai/install.ps1 | iex</code></code></pre><p><strong>How to open your terminal:</strong></p><ul><li><p><strong>Mac:</strong> Command + Space &#8594; type Terminal &#8594; hit Enter</p></li><li><p><strong>Windows:</strong> Windows key &#8594; type Command Prompt &#8594; hit Enter</p></li></ul><p>Sign in with your Anthropic account when it opens.</p><h3>3. Check for Node.js</h3><p>In your terminal:</p><p>bash</p><pre><code><code>node --version</code></code></pre><p>If you see a version number, move on. If not, go to nodejs.org, download the LTS version, and install it.</p><h3>4. Create Your Project Folder</h3><p>Create a new folder on your desktop. Name it anything&#8212;&#8221;brand-content-system&#8221; works. Navigate to it in your terminal:</p><p>bash</p><pre><code><code>cd ~/Desktop/brand-content-system</code></code></pre><h3>5. Open Claude Code in That Folder</h3><p>bash</p><pre><code><code>claude</code></code></pre><p>Claude Code opens inside your project folder. This is where you&#8217;ll run everything.</p><h3>6. Install Dependencies</h3><p>bash</p><pre><code><code>npm install dotenv fal-client</code></code></pre><div><hr></div><h2>The Most Important File: Your CLAUDE.md</h2><p>Before any agent runs, Claude Code reads a file called <code>CLAUDE.md</code>. This is your brand brief&#8212;the document every agent inherits context from. The quality of every output depends entirely on what&#8217;s in this file.</p><p>Create a file called <code>CLAUDE.md</code> in your project folder. Use this structure:</p><p>markdown</p><pre><code><code># CLAUDE.md &#8212; Brand Brief

## 1. WHO WE ARE
[Your brand name] does [what you do] for [who you serve]. Our content is about [your angle &#8212; systems, results, proof, etc.]. It is not about [what you're not].

## 2. VISUAL AESTHETIC
[Describe your visual world in 2-3 sentences. What does every frame feel like? What are the non-negotiables?]

Never:
- [Visual rule 1]
- [Visual rule 2]

## 3. TONE OF VOICE
[How does your brand speak? What's the energy?]

Always:
- [Tone rule 1]
- [Tone rule 2]

Never use: [list your banned words or phrases]

## 4. TARGET AUDIENCE
[One paragraph. Who are they, what do they care about, what do they ignore?]

## 5. PRODUCTS OR SERVICES
- [Product 1] &#8212; [one line]
- [Product 2] &#8212; [one line]

## 6. CONTENT GOALS
Every piece of content drives one action: [purchase / sign-up / DM / comment].
```

Fill this in completely before running the pipeline. Vague brief = generic output. Specific brief = content that sounds like your brand.

---</code></code></pre><h2>The Agent Folder Structure</h2><p>Inside your project folder, create this structure:</p><p>.claude/ skills/ agents/ brief-reader.md script-writer.md shot-director.md prompt-engineer.md character-generator.md broll-generator.md video-agent.md voice-agent.md caption-writer.md export-agent.md</p><p>Each file is a skill&#8212;a set of instructions Claude Code follows when that agent runs.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://theseanclaude.substack.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>How to Write an Agent Skill File</h2><p>Every agent file follows the same format. Copy this structure for each one:</p><p>markdown</p><pre><code><code>---
name: [agent-name]
description: [one line &#8212; what this agent does and what it produces]
---

# [AGENT NAME IN CAPS]

Read [input file]. Do the following:

[Exact instructions for what this agent does &#8212; in plain language. Be specific. The more specific you are, the better the output.]

Write the result to [output file]. Confirm when done.</code></code></pre><p>That&#8217;s it. Claude Code reads the file, follows the instructions, and produces the output.</p><p>The key is specificity. &#8220;Write a script&#8221; produces a generic script. &#8220;Write a 30-second reel script in [your brand voice] for [your audience] following this structure: [structure]&#8221; produces something you can actually use.</p><p>Customize each agent to your brand. The brief-reader should know what to extract from your CLAUDE.md. The script-writer should know your format. The caption-writer should know your platform and your voice.</p><p>These are not generic tools&#8212;they are customized to you.</p><p><strong>Where to get them:</strong></p><ul><li><p><strong>fal.ai key:</strong> fal.ai &#8594; Settings &#8594; API Keys</p></li><li><p><strong>ElevenLabs key:</strong> elevenlabs.io &#8594; Profile &#8594; API Key</p></li><li><p><strong>ElevenLabs Voice ID:</strong> elevenlabs.io &#8594; Voices &#8594; click your voice &#8594; copy ID</p></li></ul><p>Never share this file. Never upload it to GitHub.</p><div><hr></div><h2>The Run Command</h2><p>Once your CLAUDE.md is written and your agent files are in place, open Claude Code in your project folder and tell it:</p><p>&#8220;Build me a run-all orchestrator that chains these 10 agents in sequence and runs them one by one from a single command.&#8221;</p><p>Claude Code writes the file for you. You don&#8217;t write any code. Once it confirms it&#8217;s done, run it:</p><p><strong>node run-all.js</strong></p><p>Brief in. Ten agents run. Full content package out in <code>delivery/</code>.</p><div><hr></div><h2>Tools Required</h2><ul><li><p><strong>Claude Code</strong> &#8212; claude.ai/claude-code</p></li><li><p><strong>fal.ai</strong> &#8212; image and video generation</p></li><li><p><strong>ElevenLabs</strong> &#8212; voiceover generation</p></li><li><p><strong>Anthropic API key</strong> &#8212; console.anthropic.com</p></li></ul><div><hr></div><p>The system is yours to build. Every agent is customizable. The CLAUDE.md is your brief. The output is your brand.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Product Campaign System - Ready to Duplicate (Weavy File Included)]]></title><description><![CDATA[Download, duplicate, run. All nodes pre-wired.]]></description><link>https://theseanclaude.substack.com/p/product-campaign-workflow-plug-and</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/product-campaign-workflow-plug-and</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Mon, 02 Mar 2026 02:01:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Here&#8217;s the complete Weavy file.</p><p><strong><a href="https://app.weavy.ai/flow/AE5bPm7Oj5StQmK9mBQCLP">[Download the workflow]</a></strong></p>
      <p>
          <a href="https://theseanclaude.substack.com/p/product-campaign-workflow-plug-and">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Create 3D Product Videos from a Single Photo (Complete Workflow)]]></title><description><![CDATA[Free downloadable Weavy workflow included]]></description><link>https://theseanclaude.substack.com/p/how-to-create-3d-product-videos-from</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/how-to-create-3d-product-videos-from</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Wed, 04 Feb 2026 20:00:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/57b8b59a-1a33-4919-a360-5c432c404b08_2848x1504.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s crazy how fast AI is progressing right now.</p><p>I&#8217;ve been playing around with product content workflows, and what you can do with a single photo is kind of insane.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I can take one model photo, drop it into this system, and generate six completely different 3D product videos. No shoots. No crew. No studio time.</p><p>Just the photo and the workflow.</p><p>Let me show you how it works.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UyJj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UyJj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 424w, https://substackcdn.com/image/fetch/$s_!UyJj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 848w, https://substackcdn.com/image/fetch/$s_!UyJj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 1272w, https://substackcdn.com/image/fetch/$s_!UyJj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UyJj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png" width="144" height="258.032967032967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2609,&quot;width&quot;:1456,&quot;resizeWidth&quot;:144,&quot;bytes&quot;:5574211,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://theseanclaude.substack.com/i/186896772?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UyJj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 424w, https://substackcdn.com/image/fetch/$s_!UyJj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 848w, https://substackcdn.com/image/fetch/$s_!UyJj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 1272w, https://substackcdn.com/image/fetch/$s_!UyJj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6739d8fe-e974-4551-87ef-4dffcb8b5b54_1536x2752.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>The System</h2><p>This entire workflow runs inside Weavy. You provide the model photo and add your products. The system handles everything else.</p><p><strong>Step 1: Character Consistency</strong></p><p>First, the photo runs through a character consistency node.</p><p>This locks the model&#8217;s identity across every shot. Same face, same proportions, same styling.</p><p>Without this, the model drifts between generations. With it, you get perfect consistency across all six videos.</p><p><strong>Step 2: System Prompt for Camera Movements</strong></p><p>Here&#8217;s the part that makes this actually usable: I built a system prompt that analyzes your image and creates camera movements automatically.</p><p>You&#8217;re not manually writing &#8220;slow pan left&#8221; or &#8220;zoom in on product&#8221; six different times.</p><p>The system looks at your image, understands the composition, and generates varied camera movements that work for the shot.</p><p>Dynamic angles. Smooth motion. Professional framing.</p><p>All automated.</p><p><strong>Step 3: Array + Kling Simultaneous Generation</strong></p><p>The system prompt output feeds into an array that runs with Kling simultaneously.</p><p>This means all six videos generate at once. Not one at a time. You&#8217;re not waiting around running prompts manually.</p><p>One click. Six outputs.</p><p><strong>Step 4: Topaz Upscale</strong></p><p>Everything runs through Topaz for the final polish.</p><p>Upscales to professional quality. Sharpens details. Removes artifacts.</p><p>The difference between &#8220;this looks pretty good&#8221; and &#8220;this is ready to deliver to a client.&#8221;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;ceace4a2-624e-4bf1-9a18-36575c69709a&quot;,&quot;duration&quot;:null}"></div><div><hr></div><h2>Why This Actually Works</h2><p>Here&#8217;s the thing: most people are still doing this the hard way.</p><p>They&#8217;re shooting one angle. Running one prompt. Generating one video. Then doing it all over again for the next angle.</p><p>And the model never looks the same between shots.</p><p>This workflow solves all of that:</p><ul><li><p>Character stays identical across every video</p></li><li><p>Camera movements get created automatically</p></li><li><p>All six videos generate at the same time</p></li><li><p>Everything gets polished to professional quality in one pass</p></li></ul><p>You build it once. Then you just run it. One click, six outputs.</p><div><hr></div><h2>What You Can Build</h2><ul><li><p>Full product campaigns from a single model photo</p></li><li><p>E-commerce video content at scale</p></li><li><p>Brand lookbooks with consistent talent</p></li><li><p>Social content that looks like professional shoots</p></li></ul><p>Six cinematic 3D product videos from one photo.</p><p>Fast. Consistent. Professional.</p><div><hr></div><h2>Get the Complete Workflow</h2><p>All nodes pre-wired (Character Consistency &#8594; System Prompt &#8594; Array &#8594; Kling &#8594; Topaz). Ready to duplicate.</p><p><strong><a href="https://app.weavy.ai/flow/DIBU79H2fZDEcABk4CqqHy">[Download the workflow for free here]</a></strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to Shoot Professional Content Without a Camera (AI Workflow]]></title><description><![CDATA[Full workflow breakdown + free downloadable Weavy file at the end.]]></description><link>https://theseanclaude.substack.com/p/how-to-create-cinematic-content-with</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/how-to-create-cinematic-content-with</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Tue, 03 Feb 2026 03:58:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XgVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most AI content is obvious.</p><p>You see it instantly, the plastic skin, the lifeless motion, that flat stock photo aesthetic.</p><p>The problem isn&#8217;t the tools. It&#8217;s that most people generate once in Midjourney and call it done. They skip the steps that actually create depth and professional quality.</p><p>This is the system that fixes it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>The 4-Step System</h2><p><strong>Step 1: Generate Your Base Shot (Midjourney)</strong></p><p>Start in Midjourney. Get your hero frame&#8212;the composition, lighting, and subject you want.</p><p>Focus on:</p><ul><li><p>Strong composition (depth, leading lines, rule of thirds)</p></li><li><p>Cinematic lighting (dramatic, directional, moody)</p></li><li><p>Clear subject (athlete, product, character, whatever you&#8217;re shooting)</p></li><li><p>Environmental context (mountain, city, studio)</p></li></ul><p>This is your foundation. But it&#8217;s flat. You haven&#8217;t built depth yet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XgVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XgVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 424w, https://substackcdn.com/image/fetch/$s_!XgVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 848w, https://substackcdn.com/image/fetch/$s_!XgVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 1272w, https://substackcdn.com/image/fetch/$s_!XgVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XgVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png" width="140" height="249.80392156862746" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:816,&quot;resizeWidth&quot;:140,&quot;bytes&quot;:1888865,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://theseanclaude.substack.com/i/186696809?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XgVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 424w, https://substackcdn.com/image/fetch/$s_!XgVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 848w, https://substackcdn.com/image/fetch/$s_!XgVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 1272w, https://substackcdn.com/image/fetch/$s_!XgVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d781c7-14ed-4ddd-82b0-8a4edecc0a2f_816x1456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Step 2: Create Angles (NanoBanana Pro)</strong></p><p>Drop your Midjourney shot into NanoBanana Pro and generate different camera angles.</p><p>Same shot. Same lighting. Same aesthetic. Multiple perspectives.</p><p>Wide. Medium. Close-up.</p><p>This is what separates amateur content from professional. Single-angle work looks flat. Multi-angle work has depth and pacing.</p><p><strong>Step 3: Add Motion (Kling)</strong></p><p>Feed your shots into Kling for animation.</p><p>Here&#8217;s the thing: Kling needs specific motion prompts. Not &#8220;skier moves down mountain.&#8221;</p><p>More like: &#8220;Smooth tracking shot following skier carving left, snow spraying from edges, subtle camera shake, dynamic forward movement, backlight creating rim lighting.&#8221;</p><p>You need:</p><ul><li><p>Camera movement (tracking, pan, zoom, static)</p></li><li><p>Subject action (carving, jumping, turning)</p></li><li><p>Environmental details (snow spray, wind, fabric movement)</p></li><li><p>Lighting interaction (backlight, shadows, rim light)</p></li><li><p>Timing (smooth and fluid vs. fast and punchy)</p></li></ul><p>The more specific you are, the better the output.</p><p>This is where most people waste credits. Generic prompts = garbage results.</p><p><strong>Step 4: Upscale (Topaz Video AI)</strong></p><p>Run everything through Topaz to get it to broadcast quality.</p><p>Upscale to 1080p or 4K. Sharpen details. Remove compression artifacts.</p><p>This is the final polish that makes it look professional instead of just &#8220;pretty good.&#8221;</p><div><hr></div><h2>Why This Works</h2><p>Most people:</p><ul><li><p>Generate in Midjourney and stop</p></li><li><p>Skip angle variation</p></li><li><p>Use lazy motion prompts</p></li><li><p>Don&#8217;t enhance</p></li></ul><p>This system:</p><ul><li><p>Builds a cinematic foundation</p></li><li><p>Creates depth through angles</p></li><li><p>Uses structured motion prompts</p></li><li><p>Polishes to broadcast quality</p></li></ul><p>Each step matters. Skip one and the quality breaks.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://theseanclaude.substack.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>What You Can Build</h2><ul><li><p>Brand campaigns that look like high-budget productions</p></li><li><p>Product demos with real production value</p></li><li><p>Social content that actually stops the scroll</p></li><li><p>Portfolio work that gets you clients</p></li></ul><p>Fast. No crew. No location permits. Just the system.</p><div><hr></div><h2>The Part Nobody Talks About</h2><p>Here&#8217;s what I wish someone told me when I started: Step 3 is where you&#8217;ll waste the most time and money.</p><p>Kling motion prompts are specific. Really specific. And ChatGPT doesn&#8217;t know how to write them properly.</p><p>I&#8217;ve burned thousands of credits figuring this out. You ask for a prompt, it gives you something generic, you generate, it looks wrong, you try again, burn more credits, still not right.</p><p>The problem isn&#8217;t Kling. It&#8217;s that most AI assistants don&#8217;t understand Kling&#8217;s syntax or motion structure.</p><p>After wasting enough credits, I just built my own GPT trained specifically on what works for Kling 2.6.</p><p>Now instead of guessing, I get proper motion prompts instantly:</p><ul><li><p>Camera movements structured how Kling needs them</p></li><li><p>Subject actions with realistic timing</p></li><li><p>Environmental details that add depth</p></li><li><p>Proper pacing and rhythm</p></li></ul><p>It cut my wasted generations down by like 80%. Way more first-try hits.</p><p><strong><br></strong>If you&#8217;re serious about this workflow, that&#8217;s the piece that&#8217;ll save you the most money and time.</p><p><strong><a href="https://stan.store/seanclaude/p/kling-motion-director-">[Get the Kling GPT Bot]</a><a href="https://stan.store/seanclaude/p/kling-motion-director"><br></a></strong></p><h3><strong>Want the Complete Weavy Workflow?</strong></h3><p>All nodes pre-wired (Midjourney &#8594; NanoBanana &#8594; Kling &#8594; Topaz). Ready to duplicate.</p><p><strong><a href="https://app.weavy.ai/flow/N6oe68LocFp1xZ5wkzRhWf">[Download the workflow here]</a></strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://theseanclaude.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Animation Workflow - Plug & Play (Weavy)]]></title><description><![CDATA[You have the complete strategy from the free post.]]></description><link>https://theseanclaude.substack.com/p/animation-workflow-plug-and-play</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/animation-workflow-plug-and-play</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Sat, 31 Jan 2026 19:56:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You have the complete strategy from the free post.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;beda1562-1ef5-4347-b109-0f59fa2e7561&quot;,&quot;caption&quot;:&quot;Most AI animation looks immediately fake.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to Create Animated Content That Doesn't Look Like AI&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:134674346,&quot;name&quot;:&quot;sean claude&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9515124-617f-417b-86cb-f9c9b3db361c_1080x1080.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-31T19:52:26.451Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!B_IK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F625b092a-fdf3-4fb9-96c2-23ee2bfb6be0_816x1456.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://theseanclaude.substack.com/p/how-to-create-animated-content-that&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:186349978,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6446013,&quot;publication_name&quot;:&quot;sean claude&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iSkd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d992661-a159-4003-a0c9-8f1590f59f17_1080x1080.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>This is the execution layer.</p>
      <p>
          <a href="https://theseanclaude.substack.com/p/animation-workflow-plug-and-play">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Character Consistency: DNA Framework Workflow (Plug & Play Weavy)]]></title><description><![CDATA[Before you use this workflow:]]></description><link>https://theseanclaude.substack.com/p/character-consistency-dna-framework</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/character-consistency-dna-framework</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Thu, 22 Jan 2026 19:16:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Before you use this workflow:</h2><p>If you want the full breakdown of <em>why</em> each step exists and how the DNA Framework maintains consistency across any scene, I recommend reading this first:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;27f032f0-5e47-4a3d-b8f9-6ceea1cce116&quot;,&quot;caption&quot;:&quot;You generate an AI character you love.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to Create 100% Consistent AI Characters&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:134674346,&quot;name&quot;:&quot;sean claude&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9515124-617f-417b-86cb-f9c9b3db361c_1080x1080.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-22T19:13:12.464Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://theseanclaude.substack.com/p/how-to-create-100-consistent-ai-characters&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:185382181,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6446013,&quot;publication_name&quot;:&quot;sean claude&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iSkd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d992661-a159-4003-a0c9-8f1590f59f17_1080x1080.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div>
      <p>
          <a href="https://theseanclaude.substack.com/p/character-consistency-dna-framework">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Complete AI Character Workflow (Weavy + Enhancement Pipeline)]]></title><description><![CDATA[Before you use this workflow:]]></description><link>https://theseanclaude.substack.com/p/complete-ai-character-workflow-weavy</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/complete-ai-character-workflow-weavy</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Wed, 21 Jan 2026 20:34:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Before you use this workflow:</h2><p>If you want the full breakdown of <em>why</em> each step exists and how the system works end-to-end, I recommend reading this first:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0d5ddedd-a453-4a49-a8b4-8b2e7e34794c&quot;,&quot;caption&quot;:&quot;You&#8217;ve seen them in my videos&#8212;AI characters so realistic people genuinely ask if they&#8217;re real.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How I Create AI Characters People Think Are Real&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:134674346,&quot;name&quot;:&quot;sean claude&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9515124-617f-417b-86cb-f9c9b3db361c_1080x1080.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-21T20:30:19.138Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!yQJC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38cec6f4-931f-41cd-84e8-96bab4902171_6144x11008.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://theseanclaude.substack.com/p/how-i-create-ai-characters-people&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:185324844,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6446013,&quot;publication_name&quot;:&quot;sean claude&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iSkd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d992661-a159-4003-a0c9-8f1590f59f17_1080x1080.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>This post contains the exact <strong>Weavy workflow</strong> I use to create photorealistic AI characters &#8212; fully built, wired, and ready to duplicate.</p><p>If you&#8217;ve read the free post, you already understand the <strong>logic, order&#8230;</strong></p>
      <p>
          <a href="https://theseanclaude.substack.com/p/complete-ai-character-workflow-weavy">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Simple Skin Realism Workflow - Plug & Play (Weavy)]]></title><description><![CDATA[This post contains the exact Skin Realism workflow I use inside Weavy &#8212; fully assembled and ready to duplicate.]]></description><link>https://theseanclaude.substack.com/p/the-simple-skin-realism-workflow-7d1</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/the-simple-skin-realism-workflow-7d1</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Fri, 16 Jan 2026 00:55:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This post contains the <strong>exact Skin Realism workflow</strong> I use inside Weavy &#8212; fully assembled and ready to duplicate.</p><p>If you&#8217;ve read <em>The Simple Skin Realism Workflow</em>, this is the same system &#8212; already built.</p>
      <p>
          <a href="https://theseanclaude.substack.com/p/the-simple-skin-realism-workflow-7d1">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Character Lip Sync — Plug-and-Play Weavy Workflow]]></title><description><![CDATA[Before you use this workflow:]]></description><link>https://theseanclaude.substack.com/p/character-lip-sync-plug-and-play</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/character-lip-sync-plug-and-play</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Thu, 15 Jan 2026 01:21:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><br><strong>Before you use this workflow:</strong><br>If you want the full breakdown of <em>why</em> each step exists and how the system works end-to-end, I recommend reading this first:<strong>]</strong></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;fe95d5ba-ef67-4eef-9e2b-6602ed1b7e2e&quot;,&quot;caption&quot;:&quot;Lip sync realism is decided before animation.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Lip Sync Realism Workflow&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:134674346,&quot;name&quot;:&quot;sean claude&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9515124-617f-417b-86cb-f9c9b3db361c_1080x1080.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-15T01:17:55.460Z&quot;,&quot;cover_image&quot;:null,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://theseanclaude.substack.com/p/the-lip-sync-realism-workflow&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:184366562,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6446013,&quot;publication_name&quot;:&quot;sean claude&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iSkd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d992661-a159-4003-a0c9-8f1590f59f17_1080x1080.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div>
      <p>
          <a href="https://theseanclaude.substack.com/p/character-lip-sync-plug-and-play">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Wes Anderson World Builder Workflow]]></title><description><![CDATA[A Plug-and-Play System for Creating Cinematic AI Worlds (Without Guessing)]]></description><link>https://theseanclaude.substack.com/p/the-wes-anderson-world-builder-workflow</link><guid isPermaLink="false">https://theseanclaude.substack.com/p/the-wes-anderson-world-builder-workflow</guid><dc:creator><![CDATA[sean claude]]></dc:creator><pubDate>Fri, 09 Jan 2026 21:05:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05ed!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37716b82-90e3-47df-a5c0-061ce3b65322_1080x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>A Workflow for Creating Cinematic AI Worlds (Without Guessing)</strong></p><blockquote><p><strong>Important:</strong><br>This post includes a plug-and-play Weavy workflow.<br><strong>Read the guide first.</strong> The workflow is designed to work <em>with</em> this system &#8212; not instead of it.</p></blockquote><p>Most people think Wes Anderson&#8211;style AI images come from a clever prompt.</p><p>They don&#8217;t.</p><p>They come from <strong>world-building</strong> &#8212; defining visual rules, then refusing to break them.</p><p>This post walks through the <strong>exact workflow</strong> I use to build cohesive, cinematic AI images that feel like they belong to the same film &#8212; not a random set of outputs.</p><p>This isn&#8217;t about copying Wes Anderson.<br>It&#8217;s about learning how to <strong>lock a world</strong> and stay inside it.</p><div><hr></div><h2>The Core Idea (Read This First)</h2><p>AI visuals fall apart when the model has too much freedom.</p><p>Cinema works when:</p><ul><li><p>the world is defined first</p></li><li><p>characters come second</p></li><li><p>realism is added last</p></li></ul><p>This workflow enforces that order.</p><p>If you skip steps, the world drifts.<br>If the world drifts, nothing feels cinematic.</p><div><hr></div><h2>What You&#8217;re Building</h2><p>By the end of this system, you&#8217;ll have:</p><ul><li><p>a stable cinematic world</p></li><li><p>multiple images that feel like adjacent film frames</p></li><li><p>realism without &#8220;AI plastic&#8221;</p></li><li><p>a repeatable workflow you can reuse for any style</p></li></ul><p>This is not a one-off trick.<br>It&#8217;s a system.</p><div><hr></div><h2>Before You Start: References Are Non-Negotiable</h2><p>You should always begin with <strong>2&#8211;3 reference images minimum</strong>.</p><p>More references = more stability.<br>Weak references = unstable worlds.</p><p>This is not optional.</p>
      <p>
          <a href="https://theseanclaude.substack.com/p/the-wes-anderson-world-builder-workflow">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>