Skip to main content
Glama
tokens.md23.8 kB
# Design Token System **Version 2.0** - Production-Ready Token System for MCP-Driven Video Generation ## Overview The chuk-motion design token system provides a comprehensive, structured approach to video styling, motion, layout, and brand customization. This system ensures consistency across all generated videos while enabling platform-specific optimizations and client-specific white-labeling. Design tokens are the atomic building blocks of the design system: ``` Tokens → Themes → Components → Compositions → Videos ``` ### Token Philosophy Design tokens provide several benefits: - **Consistency**: Single source of truth for design decisions - **Reusability**: Tokens can be combined and reused across components - **Maintainability**: Update tokens once, changes propagate everywhere - **Scalability**: Easy to add new themes and variants - **LLM-Friendly**: Structured, discoverable design options ### Token Hierarchy ``` Base Tokens (primitives) ↓ Semantic Tokens (meaningful names) ↓ Component Tokens (component-specific) ↓ Theme Tokens (complete system) ``` --- ## Table of Contents 1. [Typography Tokens](#typography-tokens) 2. [Color Tokens](#color-tokens) 3. [Motion Tokens](#motion-tokens) 4. [Spacing & Safe Areas](#spacing--safe-areas) 5. [Brand Packs](#brand-packs) 6. [Caption Styles](#caption-styles) 7. [Usage Guide](#usage-guide) 8. [MCP Tools](#mcp-tools) --- ## Typography Tokens **Location**: `src/chuk_motion/tokens/typography.py` Typography tokens define the text system optimized for video content at various resolutions. ### Font Families Four font categories for different content types: ```python from chuk_motion.tokens.typography import TYPOGRAPHY_TOKENS font_families = TYPOGRAPHY_TOKENS.font_families ``` #### Display Fonts - **Fonts**: Inter, SF Pro Display, system-ui, sans-serif - **Usage**: Large headings and titles - **Characteristics**: Bold, attention-grabbing #### Body Fonts - **Fonts**: Inter, SF Pro Text, system-ui, sans-serif - **Usage**: Body text, captions, descriptions - **Characteristics**: Readable, clean #### Monospace Fonts - **Fonts**: JetBrains Mono, Fira Code, Monaco, monospace - **Usage**: Code blocks, technical content - **Characteristics**: Fixed-width, developer-friendly #### Decorative Fonts - **Fonts**: Poppins, Montserrat, Raleway, sans-serif - **Usage**: Special emphasis, stylized text - **Characteristics**: Unique, expressive ### Font Sizes Font sizes optimized for three video resolutions: ```python # 1080p (Full HD) - Most common sizes_1080p = TYPOGRAPHY_TOKENS.font_sizes.video_1080p # xs: 24px, sm: 32px, base: 40px, lg: 48px # xl: 64px, 2xl: 80px, 3xl: 96px, 4xl: 120px # 5xl: 180px, 6xl: 240px # 4K (Ultra HD) sizes_4k = TYPOGRAPHY_TOKENS.font_sizes.video_4k # xs: 48px, sm: 64px, base: 80px, lg: 96px # xl: 128px, 2xl: 160px, 3xl: 192px, 4xl: 240px # 5xl: 360px, 6xl: 480px # 720p (HD) sizes_720p = TYPOGRAPHY_TOKENS.font_sizes.video_720p # xs: 18px, sm: 24px, base: 30px, lg: 36px # xl: 48px, 2xl: 60px, 3xl: 72px, 4xl: 90px # 5xl: 135px, 6xl: 180px ``` ### Font Size Scale | Size | 1080p | 4K | 720p | Usage | |------|-------|-----|------|-------| | xs | 24px | 48px | 18px | Small captions | | sm | 32px | 64px | 24px | Regular captions | | base | 40px | 80px | 30px | Body text | | lg | 48px | 96px | 36px | Subheadings | | xl | 64px | 128px | 48px | Headings | | 2xl | 80px | 160px | 60px | Large headings | | 3xl | 96px | 192px | 72px | Title cards | | 4xl | 120px | 240px | 90px | Hero titles | | 5xl | 180px | 360px | 135px | Dramatic displays | | 6xl | 240px | 480px | 180px | Maximum impact | ### Font Weights Standard font weight scale: ```python weights = TYPOGRAPHY_TOKENS.font_weights # thin: 100, extralight: 200, light: 300 # regular: 400, medium: 500, semibold: 600 # bold: 700, extrabold: 800, black: 900 ``` ### Line Heights Optimized for readability: ```python line_heights = TYPOGRAPHY_TOKENS.line_heights # tight: 1.1 - Large headings # snug: 1.25 - Headings # normal: 1.5 - Body text # relaxed: 1.75 - Captions # loose: 2.0 - Special cases ``` ### Text Styles Pre-configured text styles combining multiple properties: ```python text_styles = TYPOGRAPHY_TOKENS.text_styles # Hero Title - Largest, boldest text hero_title = text_styles.hero_title # fontSize: 4xl, fontWeight: black, lineHeight: tight # Title - Large section titles title = text_styles.title # fontSize: 3xl, fontWeight: bold, lineHeight: tight # Heading - Standard headings heading = text_styles.heading # fontSize: 2xl, fontWeight: semibold, lineHeight: snug # Body - Regular content body = text_styles.body # fontSize: base, fontWeight: regular, lineHeight: normal # Caption - Small descriptive text caption = text_styles.caption # fontSize: sm, fontWeight: medium, lineHeight: relaxed ``` --- ## Color Tokens **Location**: `src/chuk_motion/tokens/colors.py` Color tokens define the visual palette for each theme. All colors are tested for readability and visual impact on screen. ### Structure Each color theme includes: - **Primary Colors**: Main brand colors (3-scale progression) - **Accent Colors**: Secondary colors for emphasis (3-scale) - **Gradient**: Linear gradient combining primary and accent - **Background Colors**: Dark, light, and glass variants - **Text Colors**: Optimized for readability on backgrounds - **Semantic Colors**: Success, warning, error, and info states ### Using Color Tokens ```python from chuk_motion.tokens.colors import COLOR_TOKENS # Access specific color tech_primary = COLOR_TOKENS["tech"]["primary"][0] # #0066FF # Get gradient tech_gradient = COLOR_TOKENS["tech"]["gradient"] # Text colors for contrast text_on_dark = COLOR_TOKENS["tech"]["text"]["on_dark"] # #FFFFFF # Semantic colors success_color = COLOR_TOKENS["tech"]["semantic"]["success"] ``` ### Color Scale Each primary and accent color has a 3-step scale: 1. **Base (index 0)**: Default color, most commonly used 2. **Dark (index 1)**: Darker variant for hover states or depth 3. **Darker (index 2)**: Darkest variant for active states ```python # Example: Tech theme blue scale primary_base = COLOR_TOKENS["tech"]["primary"][0] # #0066FF primary_dark = COLOR_TOKENS["tech"]["primary"][1] # #0052CC primary_darker = COLOR_TOKENS["tech"]["primary"][2] # #003D99 ``` ### Available Color Themes | Theme | Primary | Accent | Description | |-------|---------|--------|-------------| | Tech | Blue | Cyan | Modern tech aesthetic | | Finance | Green | Gold | Professional finance | | Education | Purple | Orange | Friendly education | | Lifestyle | Pink | Coral | Warm lifestyle | | Gaming | Neon Green | Neon Purple | High-energy gaming | | Minimal | Gray | Light | Clean monochrome | | Business | Navy | Teal | Professional business | --- ## Motion Tokens **Location**: `src/chuk_motion/tokens/motion.py` Motion tokens standardize animation timing, easing, and choreography across all video content. All motion tokens are now Pydantic models for type safety and validation. ### Duration Tokens Standardized timing values for consistent animation speed. ```python from chuk_motion.tokens.motion import MOTION_TOKENS # Access as Pydantic model attributes MOTION_TOKENS.duration.instant # 0ms (0 frames) MOTION_TOKENS.duration.ultra_fast # 100ms (3 frames @ 30fps) MOTION_TOKENS.duration.fast # 200ms (6 frames) MOTION_TOKENS.duration.normal # 350ms (11 frames) MOTION_TOKENS.duration.medium # 500ms (15 frames) MOTION_TOKENS.duration.slow # 700ms (21 frames) MOTION_TOKENS.duration.slower # 1000ms (30 frames) MOTION_TOKENS.duration.ultra_slow # 1500ms (45 frames) ``` **Each includes**: - `ms`: Milliseconds - `frames_30fps`: Frame count at 30fps - `frames_60fps`: Frame count at 60fps - `seconds`: Duration in seconds - `css`: CSS duration string - `description`: Human-readable description ### Easing Curves 15 predefined timing functions for animation interpolation. ```python # Access easing curves MOTION_TOKENS.easing.linear MOTION_TOKENS.easing.ease_in_out # Ease In (slow start, accelerate) MOTION_TOKENS.easing.ease_in MOTION_TOKENS.easing.ease_in_cubic # Ease Out (fast start, decelerate) MOTION_TOKENS.easing.ease_out MOTION_TOKENS.easing.ease_out_cubic MOTION_TOKENS.easing.ease_out_expo MOTION_TOKENS.easing.ease_out_back # Ease In Out (slow start and end) MOTION_TOKENS.easing.ease_in_out_quart MOTION_TOKENS.easing.ease_in_out_back # Special curves MOTION_TOKENS.easing.bounce MOTION_TOKENS.easing.elastic MOTION_TOKENS.easing.anticipate ``` **Each includes**: - `curve`: Cubic bezier values [x1, y1, x2, y2] - `css`: CSS timing function string - `description`: Animation characteristic - `usage`: Best use cases ### Spring Configurations Physics-based spring animations for natural motion. ```python MOTION_TOKENS.spring_configs.gentle # Soft, floaty (damping: 100, stiffness: 100) MOTION_TOKENS.spring_configs.smooth # Balanced, natural (damping: 50, stiffness: 120) MOTION_TOKENS.spring_configs.bouncy # Playful overshoot (damping: 15, stiffness: 300) MOTION_TOKENS.spring_configs.snappy # Quick, responsive (damping: 30, stiffness: 200) MOTION_TOKENS.spring_configs.stiff # Rigid, precise (damping: 20, stiffness: 300) ``` **Each includes**: - `config`: `{damping, mass, stiffness}` - `feel`: Animation personality - `usage`: Recommended use cases ### Enter Transitions 10 predefined entrance animations. ```python MOTION_TOKENS.enter.fade_in # Simple opacity fade MOTION_TOKENS.enter.fade_up # Fade + slide up MOTION_TOKENS.enter.fade_down # Fade + slide down MOTION_TOKENS.enter.slide_in_left # Slide from left MOTION_TOKENS.enter.slide_in_right # Slide from right MOTION_TOKENS.enter.scale_in # Zoom in with overshoot MOTION_TOKENS.enter.zoom_in # Dramatic zoom MOTION_TOKENS.enter.bounce_in # Bouncy spring entrance MOTION_TOKENS.enter.rotate_in # Rotate + scale MOTION_TOKENS.enter.blur_in # Fade in from blurred ``` ### Exit Transitions 8 predefined exit animations. ```python MOTION_TOKENS.exit.fade_out # Simple fade out MOTION_TOKENS.exit.fade_out_down # Fade + slide down MOTION_TOKENS.exit.fade_out_up # Fade + slide up MOTION_TOKENS.exit.slide_out_left # Slide to left MOTION_TOKENS.exit.slide_out_right # Slide to right MOTION_TOKENS.exit.scale_out # Shrink + fade MOTION_TOKENS.exit.zoom_out # Dramatic zoom out MOTION_TOKENS.exit.pull_back # Pull away with perspective ``` ### Tempo / Narrative Rhythm Control pacing for different content types. ```python MOTION_TOKENS.tempo.sprint # 1.0s beats - TikTok style MOTION_TOKENS.tempo.fast # 1.5s beats - Social media MOTION_TOKENS.tempo.medium # 2.2s beats - Standard explainer MOTION_TOKENS.tempo.slow # 3.5s beats - Technical content MOTION_TOKENS.tempo.cinematic # 4.5s beats - Documentary style ``` **Each includes**: - `beat_duration`: Seconds between visual beats - `frames_30fps`: Frames per beat - `caption_duration`: How long to show captions - `scene_duration_range`: Min/max scene lengths - `feel`: Content personality ### Platform Timing Optimized timing for each platform's algorithm. ```python MOTION_TOKENS.platform_timing.youtube_long_form MOTION_TOKENS.platform_timing.youtube_shorts MOTION_TOKENS.platform_timing.tiktok MOTION_TOKENS.platform_timing.instagram_reel MOTION_TOKENS.platform_timing.linkedin MOTION_TOKENS.platform_timing.presentation ``` **Each includes**: - `hook_duration`: Seconds to grab attention - `scene_change_interval`: Pattern interrupt timing - `caption_display_duration`: Caption hold duration - `cta_timing`: Call-to-action timing - `attention_span`: "ultra_short" | "short" | "medium" | "long" - `recommended_tempo`: Which tempo to use --- ## Spacing & Safe Areas **Location**: `src/chuk_motion/tokens/spacing.py` Comprehensive spacing system with platform-specific safe zones. ### Spacing Scale ```python from chuk_motion.tokens.spacing import SPACING_TOKENS SPACING_TOKENS.spacing.none # 0 SPACING_TOKENS.spacing.xxs # 4px SPACING_TOKENS.spacing.xs # 8px SPACING_TOKENS.spacing.sm # 12px SPACING_TOKENS.spacing.md # 16px (base unit) SPACING_TOKENS.spacing.lg # 24px SPACING_TOKENS.spacing.xl # 32px SPACING_TOKENS.spacing.xxl # 48px SPACING_TOKENS.spacing.xxxl # 64px SPACING_TOKENS.spacing.xxxxl # 80px SPACING_TOKENS.spacing.xxxxxl # 120px ``` ### Safe Areas (Platform-Specific) Critical for avoiding UI overlay collisions. ```python SPACING_TOKENS.safe_area.desktop # 16:9 general SPACING_TOKENS.safe_area.mobile # 9:16 general SPACING_TOKENS.safe_area.youtube_long_form # YouTube desktop player SPACING_TOKENS.safe_area.youtube_shorts # YouTube Shorts SPACING_TOKENS.safe_area.tiktok # TikTok SPACING_TOKENS.safe_area.instagram_reel # Instagram Reels SPACING_TOKENS.safe_area.instagram_story # Instagram Stories SPACING_TOKENS.safe_area.linkedin # LinkedIn feed SPACING_TOKENS.safe_area.twitter # Twitter/X SPACING_TOKENS.safe_area.presentation # Slides/presentations SPACING_TOKENS.safe_area.square # 1:1 format SPACING_TOKENS.safe_area.ultrawide # 21:9 cinematic ``` **Each includes**: - `top, bottom, left, right`: Safe margins in pixels - `critical_zones`: Specific UI overlay zones - `aspect_ratio`: Target aspect ratio - `ui_overlays`: What UI elements to avoid - `description`, `usage`, `notes` #### Example: TikTok Safe Area ```python { "top": 100, # Top bar "bottom": 180, # Bottom controls "left": 24, "right": 80, # Side buttons "critical_zones": { "top_bar": {"top": 0, "height": 100}, "side_controls": {"right": 0, "width": 80, "top": 200, "bottom": 300}, "bottom_info": {"bottom": 0, "height": 180}, "caption_zone": {"bottom": 180, "height": 100, "left": 24, "right": 80}, }, "aspect_ratio": "9:16", "ui_overlays": [ "top info (100px)", "right controls (80px)", "bottom caption + CTA (180px)", ], } ``` ### Border Tokens ```python SPACING_TOKENS.border_radius.none # 0 SPACING_TOKENS.border_radius.xs # 2px SPACING_TOKENS.border_radius.sm # 4px SPACING_TOKENS.border_radius.md # 8px SPACING_TOKENS.border_radius.lg # 12px SPACING_TOKENS.border_radius.xl # 16px SPACING_TOKENS.border_radius.xxl # 24px SPACING_TOKENS.border_radius.xxxl # 32px SPACING_TOKENS.border_radius.full # 9999px (pills) SPACING_TOKENS.border_width.none # 0 SPACING_TOKENS.border_width.thin # 1px SPACING_TOKENS.border_width.base # 2px SPACING_TOKENS.border_width.thick # 4px SPACING_TOKENS.border_width.heavy # 8px SPACING_TOKENS.border_width.ultra # 12px ``` --- ## Brand Packs **Location**: `src/chuk_motion/tokens/brand.py` White-labeling and client-specific customization system. ### Available Brand Packs ```python from chuk_motion.tokens.brand import BRAND_PACKS BRAND_PACKS.default # Clean, professional default BRAND_PACKS.tech_startup # Modern, energetic tech BRAND_PACKS.enterprise # Professional, corporate BRAND_PACKS.creator # Vibrant, personality-driven BRAND_PACKS.education # Clear, approachable ``` ### Using Brand Packs ```python from chuk_motion.tokens.brand import get_brand_pack, merge_brand_pack # Get a brand pack brand = get_brand_pack("tech_startup") # Merge custom overrides custom_brand = merge_brand_pack("tech_startup", { "logo": {"url": "client-logo.png"}, "colors": {"primary": ["#custom-color"]}, }) # List all available packs from chuk_motion.tokens.brand import list_brand_packs packs = list_brand_packs() ``` --- ## Caption Styles **Location**: `src/chuk_motion/tokens/captions.py` Platform-specific caption styling presets. ### Available Caption Styles ```python from chuk_motion.tokens.captions import CAPTION_STYLES CAPTION_STYLES.burst # MrBeast / Ali Abdaal style CAPTION_STYLES.precise # Kurzgesagt style CAPTION_STYLES.headline # LinkedIn headline blocks CAPTION_STYLES.minimal # Clean professional CAPTION_STYLES.neon # Gaming / tech high energy CAPTION_STYLES.classic # Documentary style ``` ### Display Modes - **word_by_word**: One or more words at a time (MrBeast style) - **phrase_by_phrase**: 4-6 words per caption (Kurzgesagt style) - **line_by_line**: Full lines (LinkedIn style) - **full_sentence**: Complete sentences (documentary style) ### Using Caption Styles ```python from chuk_motion.tokens.captions import get_caption_style, get_style_for_platform # Get a caption style style = get_caption_style("burst") # Get recommended style for platform recommended = get_style_for_platform("tiktok") # Returns "burst" # List all styles from chuk_motion.tokens.captions import list_caption_styles styles = list_caption_styles() ``` --- ## Usage Guide ### For Component Development ```python # Import tokens from chuk_motion.tokens.motion import MOTION_TOKENS from chuk_motion.tokens.spacing import SPACING_TOKENS # Use in component - convert Pydantic model to dict entrance = spring({ "frame": relativeFrame, "fps": fps, "config": MOTION_TOKENS.spring_configs.smooth.config.model_dump(), }) # Apply safe area safe_area = SPACING_TOKENS.safe_area.tiktok.model_dump() margin_top = safe_area["top"] ``` ### For MCP Server Integration ```python from chuk_motion.tokens.brand import get_brand_pack from chuk_motion.tokens.captions import get_style_for_platform from chuk_motion.tokens.spacing import SPACING_TOKENS # Get platform-specific settings platform = "tiktok" brand = get_brand_pack("tech_startup") caption_style = get_style_for_platform(platform) safe_area = SPACING_TOKENS.safe_area[platform].model_dump() # Generate video with these settings video = generate_video( brand_pack=brand, caption_style=caption_style, safe_area=safe_area, ) ``` ### Token Manager for Import/Export ```python from chuk_motion.tokens.token_manager import TokenManager from chuk_virtual_fs import AsyncVirtualFileSystem # Initialize vfs = AsyncVirtualFileSystem() manager = TokenManager(vfs) # Export tokens await manager.export_typography_tokens("my_typography.json") await manager.export_color_tokens("my_colors.json") await manager.export_motion_tokens("my_motion.json") await manager.export_spacing_tokens("my_spacing.json") # Export all tokens at once await manager.export_all_tokens("my_tokens_dir") # Import tokens await manager.import_typography_tokens("custom_typography.json") await manager.import_color_tokens("custom_colors.json", merge=True) # Get custom tokens custom_font = manager.get_typography_token("font_families", "custom_font") custom_color = manager.get_color_token("custom_theme", "primary") ``` --- ## MCP Tools ### Typography Token Tools - `remotion_list_typography_tokens()` - List all typography tokens - `remotion_get_font_families()` - Get available font family definitions - `remotion_get_font_sizes(resolution)` - Get font sizes for specific resolution - `remotion_get_text_style(style_name)` - Get specific text style preset ### Color Token Tools - `remotion_list_color_tokens()` - List all color tokens for all themes - `remotion_get_theme_colors(theme_name)` - Get colors for specific theme - `remotion_get_color_value(theme_name, color_type, index)` - Get specific color value ### Motion Token Tools - `remotion_list_motion_tokens()` - List all motion design tokens - `remotion_get_spring_configs()` - Get all spring animation configurations - `remotion_get_spring_config(spring_name)` - Get specific spring configuration - `remotion_get_easing_curves()` - Get all easing curve definitions - `remotion_get_easing_curve(easing_name)` - Get specific easing curve - `remotion_get_durations()` - Get all duration presets - `remotion_get_duration(duration_name)` - Get specific duration preset - `remotion_get_animation_presets()` - Get all animation presets - `remotion_get_youtube_optimizations()` - Get YouTube optimization guidelines ### Token Management Tools - `remotion_export_typography_tokens(file_path)` - Export typography tokens - `remotion_import_typography_tokens(file_path)` - Import typography tokens - `remotion_export_color_tokens(file_path, theme_name)` - Export color tokens - `remotion_import_color_tokens(file_path)` - Import color tokens - `remotion_export_motion_tokens(file_path)` - Export motion tokens - `remotion_import_motion_tokens(file_path)` - Import motion tokens - `remotion_export_all_tokens(output_dir)` - Export all token types --- ## Best Practices 1. **Always use tokens** instead of hardcoded values 2. **Use Pydantic models** - Access tokens as attributes (e.g., `MOTION_TOKENS.duration.normal`) 3. **Convert to dicts when needed** - Use `.model_dump()` for JSON serialization 4. **Resolution-aware typography** - Choose font sizes based on video resolution 5. **Consistent motion** - Use motion tokens for consistent animation feel 6. **Platform-specific safe areas** - Always apply safe areas for target platform 7. **Theme consistency** - Stick to one theme's tokens throughout a video ### Pydantic Model Usage ```python # Access tokens as Pydantic model attributes duration = MOTION_TOKENS.duration.normal # Access nested properties damping = MOTION_TOKENS.spring_configs.smooth.config.damping # Convert to dict for JSON serialization duration_dict = MOTION_TOKENS.duration.normal.model_dump() # Convert entire model to dict all_motion = MOTION_TOKENS.model_dump() ``` --- ## Token Quick Reference ``` Typography: TYPOGRAPHY_TOKENS.font_families.[display|body|monospace|decorative] TYPOGRAPHY_TOKENS.font_sizes.[video_1080p|video_4k|video_720p].[xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl] TYPOGRAPHY_TOKENS.font_weights.[thin|regular|medium|semibold|bold|extrabold|black] TYPOGRAPHY_TOKENS.text_styles.[hero_title|title|heading|body|caption] Color: COLOR_TOKENS[theme_name]["primary"|"accent"|"gradient"|"background"|"text"|"semantic"] Motion: MOTION_TOKENS.duration.[instant|ultra_fast|fast|normal|medium|slow|slower|ultra_slow] MOTION_TOKENS.easing.[linear|ease|ease_in|ease_out|ease_in_out|bounce|elastic|...] MOTION_TOKENS.spring_configs.[gentle|smooth|bouncy|snappy|stiff] MOTION_TOKENS.enter.[fade_in|fade_up|slide_in_left|scale_in|zoom_in|bounce_in|...] MOTION_TOKENS.exit.[fade_out|slide_out_left|scale_out|zoom_out|pull_back|...] MOTION_TOKENS.tempo.[sprint|fast|medium|slow|cinematic] MOTION_TOKENS.platform_timing.[youtube_long_form|tiktok|instagram_reel|...] Spacing: SPACING_TOKENS.spacing.[none|xxs|xs|sm|md|lg|xl|xxl|xxxl|...] SPACING_TOKENS.safe_area.[desktop|mobile|youtube_shorts|tiktok|instagram_reel|...] SPACING_TOKENS.border_radius.[none|xs|sm|md|lg|xl|xxl|xxxl|full] Brand: BRAND_PACKS.[default|tech_startup|enterprise|creator|education] Captions: CAPTION_STYLES.[burst|precise|headline|minimal|neon|classic] ``` --- ## Source Files - Typography tokens: `src/chuk_motion/tokens/typography.py` - Color tokens: `src/chuk_motion/tokens/colors.py` - Motion tokens: `src/chuk_motion/tokens/motion.py` - Spacing tokens: `src/chuk_motion/tokens/spacing.py` - Brand packs: `src/chuk_motion/tokens/brand.py` - Caption styles: `src/chuk_motion/tokens/captions.py` - Token manager: `src/chuk_motion/tokens/token_manager.py` --- **Last Updated**: November 2025 **Version**: 2.0.0 **Status**: Production Ready

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrishayuk/chuk-mcp-remotion'

If you have feedback or need assistance with the MCP directory API, please join our Discord server