whatsapp-video-mockup
# WhatsApp Video Skill
What this skill does
# WhatsApp Video Skill
Create animated WhatsApp-style chat videos using Remotion. Perfect for X, TikTok, Instagram Reels.
## Features
- ๐ฑ Realistic iPhone frame with Dynamic Island
- ๐ฌ WhatsApp dark mode UI (accurate colors, bubbles, timestamps)
- ๐ Auto-scrolling as messages extend
- ๐ค Large, readable fonts (optimized for mobile viewing)
- ๐ต Message notification sounds
- โจ Spring animations on message appearance
- โจ๏ธ Typing indicator ("..." bubbles)
- ๐ Link preview cards
- โ
Read receipts (blue checkmarks)
- **Bold** and `code` formatting support
## Default Settings
- **Aspect ratio:** 4:5 (1080ร1350) - optimal for X/Instagram feed
- **No intro/outro** - starts and ends with the chat
- **2x fonts** - readable on mobile devices
- **Auto-scroll** - keeps all messages visible
## Prerequisites
This skill requires the **Remotion Best Practices** skill:
```bash
npx skills add remotion-dev/skills -a claude-code -y -g
```
## Quick Start
```bash
cd ~/Projects/remotion-test
```
Edit the conversation in `src/WhatsAppVideo.tsx`, then render:
```bash
npx remotion render WhatsAppDemo out/my-video.mp4 --concurrency=4
```
## How to Create a New Video
### 1. Define Your Messages
Edit the `ChatMessages` component in `src/WhatsAppVideo.tsx`:
```tsx
// Incoming message (from assistant)
<Message
text="Your message text here"
isOutgoing={false}
time="8:40 AM"
delay={125} // Frame when message appears (30fps)
/>
// Outgoing message (from user)
<Message
text="Your outgoing message"
isOutgoing={true}
time="8:41 AM"
delay={200}
showCheck={true}
/>
// Typing indicator (shows "..." bubbles)
<TypingIndicator delay={80} duration={45} />
```
### 2. Timing Guide
- **30 fps** = 30 frames per second
- `delay={30}` = appears at 1 second
- `delay={60}` = appears at 2 seconds
- `duration={45}` = lasts 1.5 seconds
**Typical flow:**
1. First message: `delay={20}` (~0.7s)
2. Typing indicator: `delay={80}`, `duration={45}`
3. Response: `delay={125}` (after typing ends)
4. Next typing: `delay={175}`, `duration={45}`
5. Next response: `delay={220}`
### 3. Adjust Scrolling
In `ChatMessages`, update the scroll interpolation based on your message count:
```tsx
const scrollAmount = interpolate(
frame,
[scrollStart, scrollStart + 60, messageFrame, lastFrame],
[0, firstScroll, firstScroll, finalScroll],
{ extrapolateLeft: "clamp", extrapolateRight: "clamp" }
);
```
Increase scroll values if messages overflow.
### 4. Text Formatting
Messages support:
- **Bold**: `**bold text**`
- `Code`: backticks around text
- Line breaks: `\n` in the string
- Emojis: just use them directly ๐ฌ
### 5. Customizing the Header
In `ChatHeader` component, change:
- Name: `Pokey ๐ก` โ your assistant name
- Status: `online`
- Avatar emoji
### 6. Update Duration
In `Root.tsx`, set `durationInFrames` to match your video length:
- Count frames until last message appears + ~100 frames buffer
- At 30fps: 450 frames = 15 seconds
### 7. Render
```bash
# Standard render
npx remotion render WhatsAppDemo out/video.mp4 --concurrency=4
# Higher quality
npx remotion render WhatsAppDemo out/video.mp4 --codec h264 --crf 18
# Preview in browser
npm run dev
```
## Platform Dimensions
Edit `Root.tsx` to change dimensions:
| Platform | Dimensions | Aspect Ratio | Use Case |
|----------|------------|--------------|----------|
| **X/Instagram feed** | 1080ร1350 | 4:5 | Default, most visible |
| **X/TikTok/Reels** | 1080ร1920 | 9:16 | Full vertical |
| **X square** | 1080ร1080 | 1:1 | Universal |
| **YouTube/X landscape** | 1920ร1080 | 16:9 | Horizontal |
## Project Structure
```
~/Projects/remotion-test/
โโโ src/
โ โโโ WhatsAppVideo.tsx # Main video component
โ โโโ Root.tsx # Composition config
โโโ public/
โ โโโ sounds/
โ โโโ pop.mp3 # Message received
โ โโโ send.mp3 # Message sent
โโโ out/ # Rendered videos
```
## Sound Effects
Sounds are triggered with Sequence:
```tsx
<Sequence from={125}>
<Audio src={staticFile("sounds/pop.mp3")} volume={0.5} />
</Sequence>
```
## Tips
1. **Preview while editing**: Run `npm run dev` to see changes live
2. **Frame-by-frame**: Use timeline scrubber to check timing
3. **Keep messages concise**: Long messages may need scroll adjustment
4. **Test on mobile**: Check readability at actual size
## Asking Pokey to Generate
Just describe the conversation:
- "WhatsApp video: me asking you to [X]"
- "Make a chat video showing [conversation]"
Pokey will write the messages, set timing, render, and send the MP4.
Related in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.