Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问clear审计未展示

director-agent董事 Agent 人

Agent Skill

director-agent 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

423

周安装

18

GitHub Stars

公开资料未说明

下载量

148
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:director-agent(董事 Agent 人)
来源仓库:https://github.com/psh355q-ui/szdi57465yt
仓库路径:skills/director-agent
安装命令:
npx skills add psh355q-ui/szdi57465yt --skill "director-agent"
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

AgentSkills.tonpx skills
npx skills add psh355q-ui/szdi57465yt --skill "director-agent"

简介

director-agent 用于发现并安装其他 AI 代理技能。

  • 适用于 Codex、Claude、Cursor、Gemini CLI 中的技能集成场景。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装。
  • 使用前应验证技能来源安全性与网络访问权限。
  • 建议检查原始仓库是否有持续维护与版本更新记录。

SKILL.md

name
director-agent
description
Final video assembly coordinator. Matches scripts with character images, orchestrates scene transitions, timing, effects, and creates rendering-ready storyboard JSON for HeyGen/Pika/D-ID video generation platforms.
license
Proprietary
compatibility
Requires Story Writer and Character Designer outputs, video rendering API
metadata
author
ai-trading-system
version
1.0
category
video-production
agent_role
director

Director Agent - 영상 감독 (MeowStreet Wars)

Role

대본 + 캐릭터 이미지 + 효과 → 최종 Storyboard.json 생성. 렌더링 엔진에 바로 투입 가능한 완성품!

Core Capabilities

1. Final Assembly

Components Integration

# Input from other agents
script = StoryWriterAgent.output  # 대본
characters = CharacterDesignerAgent.output  # 캐릭터 이미지
news_context = NewsCollectorAgent.output  # 뉴스 컨텍스트

# Assembly
storyboard = assemble_storyboard(script, characters, news_context)

Quality Checks

  • Duration: 총 길이 30-60초 이내
  • Scene Count: 쇼츠 기준 2-4개
  • Character Availability: 모든 캐릭터 이미지 생성 완료
  • Dialogue Sync: 대사 길이와 duration 매칭

2. Scene Composition

Layout Templates

Template 1: Debate (1:1 대결)

{
  "layout": "split_screen",
  "character_positions": {
    "left": {"ticker": "NVDA", "size": "50%", "align": "center"},
    "right": {"ticker": "TSLA", "size": "50%", "align": "center"}
  },
  "camera": "medium_shot"
}

Template 2: Celebration/Crying (솔로)

{
  "layout": "full_screen",
  "character_positions": {
    "center": {"ticker": "AAPL", "size": "80%", "align": "center"}
  },
  "camera": "closeup"
}

Template 3: Group (3개 이상)

{
  "layout": "grid",
  "character_positions": {
    "top_left": {"ticker": "AAPL", "size": "33%"},
    "top_right": {"ticker": "MSFT", "size": "33%"},
    "bottom_center": {"ticker": "GOOGL", "size": "33%"}
  },
  "camera": "wide_shot"
}

3. Timing & Pacing

def calculate_scene_timing(dialogue: List[Dict]) -> float:
    """Calculate scene duration based on dialogue"""
    
    total_duration = 0
    
    for line in dialogue:
        # Korean: ~2 characters per second
        # English: ~3 words per second
        text_length = len(line['text'])
        
        if is_korean(line['text']):
            duration = text_length / 2
        else:
            duration = len(line['text'].split()) / 3
        
        # Add reading buffer (20%)
        duration *= 1.2
        
        # Add emotion pause
        if line['emotion'] in ['CRYING', 'DESPERATE']:
            duration += 1.0  # Extra pause for effect
        
        total_duration += duration
    
    return total_duration

4. Effects & Transitions

Visual Effects

EFFECTS_LIBRARY = {
    "price_up": {
        "particles": "coins_falling",
        "overlay": "green_upward_arrow",
        "glow": "success_aura"
    },
    "price_down": {
        "particles": "tears_dropping",
        "overlay": "red_downward_arrow",
        "background": "dark_vignette"
    },
    "neutral": {
        "overlay": "stock_ticker_banner"
    }
}

Transitions

TRANSITIONS = {
    "cut": {"duration": 0},  # Instant
    "fade": {"duration": 0.5},
    "slide": {"duration": 0.3, "direction": "left"},
    "zoom": {"duration": 0.4}
}

Sound Effects (SFX)

SFX_LIBRARY = {
    "happy": ["success_fanfare.mp3", "coins_clinking.mp3"],
    "sad": ["sad_violin.mp3", "crying.mp3"],
    "action": ["whoosh.mp3", "impact.mp3"],
    "transition": ["page_turn.mp3"]
}

5. Background Assets

BACKGROUNDS = {
    "stock_chart_board": "assets/backgrounds/trading_floor.png",
    "han_river_bridge": "assets/backgrounds/han_river.png",
    "moon": "assets/backgrounds/to_the_moon.png",
    "trading_room": "assets/backgrounds/war_room.png",
    "generic": "assets/backgrounds/gradient_blue.png"
}

Decision Framework

Step 1: Validate Inputs
  - Script 존재 확인
  - 모든 character images 준비 확인
  - News context 유효성 확인

Step 2: Scene Assembly
  FOR each scene in script:
    - Match characters to images
    - Calculate timing
    - Select layout template
    - Add effects based on sentiment

Step 3: Timing Optimization
  total_duration = sum(scene_durations)
  
  IF total_duration > 60:
    → Compress scenes (remove pauses)
  
  IF total_duration < 30:
    → Add pauses or intro/outro

Step 4: Quality Check
  - All images loaded?
  - Dialogue within time limits?
  - Transitions smooth?
  - Effects appropriate?

Step 5: Generate Storyboard JSON
  storyboard = {
    "title": ...,
    "scenes": [...],
    "total_duration": ...,
    "assets": {...}
  }

Step 6: Rendering Metadata
  Add platform-specific parameters:
    - HeyGen: avatar_id, voice_id
    - Pika: style_preset, motion_settings
    - D-ID: presenter_id, driver_settings

Output Format

{
  "title": "떡락한 엔비디아 vs 날아오르는 테슬라",
  "description": "Tech 섹터의 희비가 엇갈리는 하루",
  "aspect_ratio": "9:16",
  "target_platform": "youtube_shorts",
  "total_duration_sec": 45,
  "frame_rate": 30,
  "resolution": "1080x1920",
  
  "metadata": {
    "date": "2025-12-21",
    "tickers": ["NVDA", "TSLA"],
    "theme": "sector_rotation",
    "humor_level": "high"
  },
  
  "assets": {
    "characters": {
      "NVDA": {
        "image_url": "https://cdn.example.com/nvda_sad.png",
        "voice_id": "korean_male_01"
      },
      "TSLA": {
        "image_url": "https://cdn.example.com/tsla_happy.png",
        "voice_id": "korean_male_02"
      }
    },
    "backgrounds": {
      "stock_board": "assets/backgrounds/trading_floor.png",
      "han_river": "assets/backgrounds/han_river.png"
    },
    "sfx": {
      "sad_violin": "assets/sfx/sad_violin.mp3",
      "success_fanfare": "assets/sfx/fanfare.mp3"
    }
  },
  
  "scenes": [
    {
      "scene_id": 1,
      "duration_sec": 10,
      "start_time": 0,
      "end_time": 10,
      
      "background": {
        "type": "image",
        "src": "assets/backgrounds/trading_floor.png",
        "filter": "none"
      },
      
      "layout": "split_screen",
      
      "characters": [
        {
          "ticker": "NVDA",
          "image_url": "https://cdn.example.com/nvda_sad.png",
          "position": "left",
          "size": "50%",
          "animation": "fade_in",
          "animation_duration": 0.5
        },
        {
          "ticker": "TSLA",
          "image_url": "https://cdn.example.com/tsla_happy.png",
          "position": "right",
          "size": "50%",
          "animation": "fade_in",
          "animation_duration": 0.5
        }
      ],
      
      "dialogue": [
        {
          "character": "NVDA",
          "text": "야옹... 오늘 -5.2%...",
          "emotion": "SAD",
          "voice_id": "korean_male_01",
          "start_time": 1.0,
          "duration": 3.0,
          "volume": 0.8
        },
        {
          "character": "TSLA",
          "text": "ㅋㅋㅋ 나는 +3.4% 돔황챠!",
          "emotion": "HAPPY",
          "voice_id": "korean_male_02",
          "start_time": 4.5,
          "duration": 3.0,
          "volume": 0.9
        }
      ],
      
      "effects": [
        {
          "type": "text_overlay",
          "text": "NVDA -5.2%",
          "position": "bottom_left",
          "color": "#FF0000",
          "font_size": 24,
          "animation": "slide_in_down",
          "start_time": 1.0,
          "duration": 2.0
        },
        {
          "type": "text_overlay",
          "text": "TSLA +3.4%",
          "position": "bottom_right",
          "color": "#00FF00",
          "font_size": 24,
          "animation": "slide_in_down",
          "start_time": 4.5,
          "duration": 2.0
        },
        {
          "type": "particle",
          "name": "sad_rain",
          "target": "NVDA",
          "start_time": 1.0,
          "duration": 8.0
        },
        {
          "type": "particle",
          "name": "confetti",
          "target": "TSLA",
          "start_time": 4.5,
          "duration": 5.0
        }
      ],
      
      "sfx": [
        {
          "file": "assets/sfx/sad_violin.mp3",
          "start_time": 1.0,
          "duration": 3.0,
          "volume": 0.3
        },
        {
          "file": "assets/sfx/success_fanfare.mp3",
          "start_time": 4.5,
          "duration": 2.0,
          "volume": 0.5
        }
      ],
      
      "transition_out": {
        "type": "fade",
        "duration": 0.5
      }
    },
    
    {
      "scene_id": 2,
      "duration_sec": 25,
      "start_time": 10,
      "end_time": 35,
      
      "background": {
        "type": "image",
        "src": "assets/backgrounds/han_river.png",
        "filter": "dark_overlay"
      },
      
      "layout": "full_screen_duet",
      
      "characters": [
        {
          "ticker": "NVDA",
          "image_url": "https://cdn.example.com/nvda_crying.png",
          "position": "left",
          "size": "60%",
          "animation": "shake"
        },
        {
          "ticker": "TSLA",
          "image_url": "https://cdn.example.com/tsla_flying.png",
          "position": "top_right",
          "size": "40%",
          "animation": "float_up"
        }
      ],
      
      "dialogue": [
        {
          "character": "NVDA",
          "text": "AI 거품론 때문에... 나 한강 가야 할 것 같아...",
          "emotion": "CRYING",
          "voice_id": "korean_male_01",
          "start_time": 11.0,
          "duration": 5.0
        },
        {
          "character": "TSLA",
          "text": "나는 화성 갈끄니까~! 로봇택시 규제 완화!",
          "emotion": "ARROGANT",
          "voice_id": "korean_male_02",
          "start_time": 17.0,
          "duration": 5.0
        },
        {
          "character": "NVDA",
          "text": "야옹야옹야옹!!!",
          "emotion": "DESPERATE",
          "voice_id": "korean_male_01",
          "start_time": 23.0,
          "duration": 3.0
        },
        {
          "character": "TSLA",
          "text": "존버 못하면 한강이지~ ㅋㅋㅋ",
          "emotion": "MOCKING",
          "voice_id": "korean_male_02",
          "start_time": 27.0,
          "duration": 4.0
        }
      ],
      
      "effects": [
        {
          "type": "overlay",
          "name": "rain",
          "opacity": 0.5,
          "start_time": 10,
          "duration": 25
        },
        {
          "type": "text_overlay",
          "text": "한강 다리",
          "position": "top_center",
          "font_size": 18,
          "start_time": 11,
          "duration": 3
        },
        {
          "type": "particle",
          "name": "rocket_trail",
          "target": "TSLA",
          "start_time": 17,
          "duration": 8
        }
      ],
      
      "sfx": [
        {
          "file": "assets/sfx/crying.mp3",
          "start_time": 11,
          "duration": 12,
          "volume": 0.4
        },
        {
          "file": "assets/sfx/rocket_launch.mp3",
          "start_time": 17,
          "duration": 3,
          "volume": 0.6
        }
      ],
      
      "transition_out": {
        "type": "zoom",
        "duration": 0.4
      }
    },
    
    {
      "scene_id": 3,
      "duration_sec": 10,
      "start_time": 35,
      "end_time": 45,
      
      "background": {
        "type": "image",
        "src": "assets/backgrounds/war_room.png",
        "filter": "none"
      },
      
      "layout": "centered",
      
      "characters": [
        {
          "ticker": "BOTH",
          "image_url": "https://cdn.example.com/group_waving.png",
          "position": "center",
          "size": "70%",
          "animation": "wave"
        }
      ],
      
      "dialogue": [
        {
          "character": "NARRATOR",
          "text": "오늘도 주식판은 전쟁이다냥!",
          "emotion": "ENERGETIC",
          "voice_id": "korean_narrator",
          "start_time": 36,
          "duration": 4
        },
        {
          "character": "ALL",
          "text": "냥개미들 화이팅!",
          "emotion": "CHEERFUL",
          "voice_id": "korean_chorus",
          "start_time": 41,
          "duration": 2
        }
      ],
      
      "effects": [
        {
          "type": "text_overlay",
          "text": "다음 영상도 기대하세냥~!",
          "position": "bottom_center",
          "font_size": 20,
          "color": "#FFFF00",
          "start_time": 41,
          "duration": 3
        }
      ],
      
      "sfx": [
        {
          "file": "assets/sfx/applause.mp3",
          "start_time": 41,
          "duration": 4,
          "volume": 0.5
        }
      ],
      
      "transition_out": {
        "type": "fade_to_black",
        "duration": 1.0
      }
    }
  ],
  
  "rendering_config": {
    "engine": "heygen",
    "voice_synthesis": "elevenlabs",
    "music_track": "assets/music/upbeat_bg.mp3",
    "music_volume": 0.2,
    "export_format": "mp4",
    "bitrate": "8000k"
  }
}

Guidelines

Do's ✅

  • Timing 정확: 대사와 duration 완벽 매칭
  • 효과 적절: 과하지 않게, 내용 보완용
  • 전환 부드럽게: Jarring한 cut 최소화
  • 품질 체크: 모든 asset 로드 확인

Don'ts ❌

  • 60초 초과 금지 (쇼츠 기준)
  • 너무 많은 효과 금지 (집중도 하락)
  • 대사 겹침 금지
  • 미완성 scene 포함 금지

Integration

Rendering Platform APIs

HeyGen

import requests

async def render_with_heygen(storyboard: Dict) -> str:
    """Render video using HeyGen API"""
    
    api_key = os.getenv('HEYGEN_API_KEY')
    
    response = requests.post(
        'https://api.heygen.com/v1/video/generate',
        headers={'X-Api-Key': api_key},
        json={
            'title': storyboard['title'],
            'scenes': convert_to_heygen_format(storyboard['scenes']),
            'aspect_ratio': storyboard['aspect_ratio']
        }
    )
    
    video_id = response.json()['video_id']
    
    # Poll for completion
    video_url = await wait_for_video(video_id)
    
    return video_url

Performance Metrics

  • Assembly Time: < 5초
  • Storyboard Validation: 100% (모든 필수 필드)
  • Rendering Success Rate: > 95%
  • Average Video Generation Time: 2-5분 (platform dependent)

Version History

  • v1.0 (2025-12-21): Initial release with HeyGen/Pika integration

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

31.5%
按下载量换算47

windsurf

23.56%
按下载量换算35

trae

16.4%
按下载量换算24

OpenCode

11.25%
按下载量换算17

Codex

7.48%
按下载量换算11

Antigravity

3.37%
按下载量换算5

安全审计

暂无安全审计结果可展示。

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills