تصور کنید به یک هوش مصنوعی بگویید ویدیویی از یک روباه در برف بسازد و سپس تنها با عبارت «شب کن»، محیط را تغییر کنید، بدون اینکه جای روباه، درختها یا زاویه دوربین ذرهای جابهجا شود. این سطح از کنترل دقیق و تکرارشونده اکنون از طریق ابزاری به نام omni-skill-claude که در ۲۳ جولای ۲۰۲۶ منتشر شد، مستقیماً در ترمینال در دسترس است.
بیشتر جریانهای کاری تولید ویدیو در حال حاضر «بدون وضعیت» یا Stateless هستند؛ یعنی مدل لحظهای که کلیپ را میسازد، صحنه را فراموش میکند. برای تغییر یک جزئیات کوچک، شما معمولاً مجبورید کل توصیفات (Prompt) را دوباره بنویسید و امیدوار باشید که مدل دچار توهم (Hallucination) نشود و کاراکتر یا نورپردازی را به طور تصادفی تغییر ندهد. (راوی: معمولاً همین اتفاق میافتد و مدلها توهم میزنند).
این پروژه با متصل کردن Claude Code به مدل gemini-omni-flash-preview (Omni Flash) از طریق پروتکل زمینهٔ مدل (Model Context Protocol یا MCP) این مشکل را حل کرده است. همانطور که در تحلیل قبلی ما دربارهی استفاده توسعهدهندگان از لاگهای ترنسکریپت برای نقشهبرداری از ابزارها در Claude Code اشاره کردیم، این یکپارچهسازی فراتر از مشاهده است و به خلق فعال و حالتمند (Stateful) میرسد. این رویکرد تکاملی در زمینه تحلیل و پردازش ویدیوها توسط مدلهای زبانی است، مشابه آنچه در راهکار claude-real-video برای بهینهسازی تماشای ویدیوها توسط مدلها مشاهده کردیم.

مکانیسم مدیریت وضعیت (Statefulness)
هستهی این سیستم، Gemini Interactions API است که به عنوان نقطه اتصال حالتمند عمل میکند. بر اساس مستندات فنی، وقتی کاربر با دستور store=True از طریق فراخوانی client.interactions.create(...) یک ویدیو میسازد، API یک interaction_id برمیگرداند. این شناسه در واقع دستگیرهای (Handle) است برای دسترسی به بستر بصری (Visual Context) که روی سرورهای گوگل ذخیره شده است.
با ارسال این previous_interaction_id در درخواستهای بعدی، مدل صحنه موجود را بازیابی میکند. کاربران میتوانند دستورات اصلاحی کوتاهی مثل «برف شدید اضافه کن» بدهند، در حالی که مدل نورپردازی، ثبات شخصیت و زبان دوربین را حفظ میکند.
این امر تغییری بنیادین در جریان کاری ایجاد میکند. بهجای نوشتن یک پرامپت بدون وضعیت و طولانی مانند «نمای تعقیبی از یک روباه قرمز که در ساعت طلایی در برف تازه میدود، درختان توس، خورشید پایین، عمق میدان کم و حالا در شب با بارش برف شدید»، کاربر به سادگی مینویسد: «آن را در شب با برف شدید قرار کن». بقیه جزئیات توسط بستر ذخیرهشده (Stored Context) مدیریت میشود. این قابلیت تبدیل محیطهای ساده به یک استودیوی تولیدی، یادآور قابلیت Video Remix گوگل در Photos است که اجازه میدهد خاطرات تصویری به سرعت بازطراحی شوند.
پنج حالت تولید چندوجهی
مدل Omni Flash میتواند ترکیبی از متن، تصاویر کدگذاریشده به صورت base64 و اسناد ویدیویی را بپذیرد. عبارت «Omni» به همین توانایی مدل در پردازش ورودیهای چندوجهی (Multimodal) واقعی در یک درخواست واحد اشاره دارد. ورودی یک درخواست واحد میتواند یک رشته متنی ساده باشد یا لیستی از بخشهای تایپشده: بخشهای متنی، بخشهای تصویر base64-encoded و بخشهای اسناد که به ویدیویی آپلود شده از طریق Gemini File API اشاره میکنند.
سرور MCP با نام omni-video-agent هشت ابزار خاص را برای مدیریت این ورودیها ارائه میدهد:
- تبدیل متن به ویدیو (
generate_video): تولید کلیپهای با نسبت تصویر ۱۶:۹ (افقی) یا ۹:۱۶ (عمودی) از طریق پرامپتها. این تنها ابزاری است که پارامترaspect_ratioرا میپذیرد؛ ویرایشهای حالتمند (Stateful) نسبت تصویر را از تولید اولیه به ارث میبرند. نتایج با پیشوندgen_*.mp4ذخیره میشوند. - متحرکسازی تصویر (
animate_image): خواندن یک تصویر محلی (png/jpg/jpeg/webp)، کدگذاری آن به base64 و استفاده از یک پرامپت حرکتی برای زنده کردن تصویر ثابت (مثلاً «گروه لبخند بزنند و برای دوربین دست تکان دهند»). نتایج با پیشوندanimated_*.mp4ذخیره میشوند. - درونیابی فریم کلیدی (
interpolate_images): دریافت دو تصویر فریم کلیدی و یک پرامپت انتقال برای خلق تصاویر میانی، مانند «یک تایملپس نرم از طلوع تا غروب خورشید». نتایج با پیشوندinterpolation_*.mp4ذخیره میشوند. - تولید با ثبات سوژه (
generate_with_subjects): استفاده از لیستی از تصاویر مرجع افراد یا اشیاء به همراه یک پرامپت صحنه برای اطمینان از اینکه آن سوژههای خاص دقیقاً طبق دستور ظاهر و عمل کنند. نتایج با پیشوندsubject_*.mp4ذخیره میشوند. - بازطراحی سبک ویدیو (
edit_user_video): این تنها ابزاری است که از Gemini File API به عنوان ورودی استفاده میکند. این ابزار یک ویدیوی محلی را آپلود میکند، تا ۵ دقیقه برای پردازش منتظر میماند (Poll) و سپس یک تغییر سبک اعمال میکند، مثلاً «آن را به سبک انیمیشن پیکسار تبدیل کن». نتایج با پیشوندuser_edit_*.mp4ذخیره میشوند.
پیادهسازی فنی و تحویل
این سرور با استفاده از FastMCP (یک اپلیکیشن تک-فایلی در server.py) ساخته شده و به صورت یک فرآیند محلی با پروتکل JSON-RPC روی stdio عمل میکند. به دلیل اینکه تولید ویدیو در این مدل همگام (Synchronous) است، سرعت کمی دارد (فراخوانی تا زمان آماده شدن ویدیو مسدود میشود) و هزینه بر اساس هر تولید محاسبه میشود، سرور برای جذب و مدیریت این پیچیدگیها طراحی شده است.
برای جلوگیری از شکست در ارسال دادهها به دلیل محدودیت حجم Payload، سیستم از دو حالت تحویل استفاده میکند:
- Inline: حالت پیشفرض که ویدیو به صورت base64 بازمیگردد. این حالت برای کلیپهای کوتاه مناسب است.
- URI: برای هر خروجی بزرگتر از حدود ۴ مگابایت استفاده میشود. ویدیو روی Google File API قرار میگیرد و سرور تا زمانی که وضعیت آن
ACTIVEشود منتظر میماند و سپس فایل را دانلود میکند.
هر فراخوانی ابزار، یک گزارش متنی شامل مسیر ذخیره محلی (با فرمت <prefix>_<unix-timestamp>.mp4) و شناسه تعامل (Interaction ID) برای زنجیرهسازی در ویرایش بعدی برمیگرداند. خطاها نیز با رشتههایی که با علامت 🔴 شروع میشوند بازگردانده میشوند تا عامل (Agent) بتواند آنها را بخواند و واکنش نشان دهد.
یکپارچهسازی با Claude Code
این پروژه تنها یک سرور نیست، بلکه یک «مهارت» (Skill) است. در حالی که MCP «دستهای» ابزار (Tools) را فراهم میکند، این مهارت «حافظه عضلانی» را میسازد. این ساختار شامل یک فایل Markdown (SKILL.md) و منابع bundled است که به Claude جریان کاری بهینه را میآموزد:
- پرامپتنویسی سینمایی: مهارت به عامل دستور میدهد که روی چیدمان صحنه، اکشن سوژه، حرکت دوربین (مانند «tracking shot» یا «slow zoom»)، نورپردازی و جزئیات سبک تمرکز کند. در اینجا دقت و جزئیات بر توصیفات مبهم ترجیح داده شده است.
- ویرایش افزایشی: به Claude آموزش داده شده که در پرامپتهای
edit_videoتنها تغییرات را توصیف کند، نه اینکه کل صحنه را دوباره شرح دهد. - زنجیرهسازی شناسهها: به عامل تاکید شده که همیشه آخرین شناسه تعامل را زنجیره کند. ویرایش بر اساس یک شناسه قدیمی باعث میشود جلسه به طور بیصدا از یک وضعیت قدیمی «دوشاخه» (Fork) شود که یک باگ ظریف و آزاردهنده ایجاد میکند.
- مدیریت منابع: توصیه شده برای کلیپهای طولانی یا با حرکت زیاد از
delivery='uri'استفاده کند و پیش از آپلود محتوای عمومی در یوتیوب، از کاربر اجازه بگیرد.
برای تکمیل این مجموعه، ابزار upload_to_youtube با استفاده از YouTube Data API v3 اضافه شده است. این ابزار نیازمند یک تنظیم یکباره OAuth (از طریق client_secrets.json در دایرکتوری کاری) است و یک token.pickle را کش میکند. برای جلوگیری از افشای تصادفی محتوا، پیشفرض آن روی privacy_status='private' و category_id='22' (مردم و وبلاگها) تنظیم شده است. اگر وابستگیهای نرمافزاری موجود نباشند، ابزار دقیقاً دستور pip install مورد نیاز را گزارش میکند. همچنین ابزار get_help() برای بازگرداندن کاتالوگ کامل ابزارها، راهنمای حالتهای تحویل و راهنمای پرامپتنویسی سینمایی ارائه شده است.
مسیرهای استقرار و نصب
این یکپارچهسازی چهار مسیر متمایز نصب را برای محیطهای مختلف توسعهدهنده فراهم میکند:
۱. بازارچه پلاگین: سریعترین مسیر از طریق دستور /plugin marketplace add xbill9/omni-skill-claude و سپس /plugin install omni-video@omni-skill-claude. این روش به طور خودکار سرور را ثبت کرده و GEMINI_API_KEY را از محیط (Environment) میخواند.
۲. شبیهسازی و بوتاسترپ: کاربران مخزن (Repo) را کلون کرده و ./init.sh را اجرا میکنند. این اسکریپت وابستگیها را نصب کرده، سرور را در .mcp.json ثبت میکند و کلید API را درخواست میکند (که در ~/gemini.key ذخیره میشود). با تایپ /mcp در Claude Code میتوان حضور omni-video-agent را تایید کرد.
۳. نصب پروژه-محور: با استفاده از make init TARGET=/path/to/your/project مهارت در پوشه .mcp.json پروژه کپی شده و ورودیهای محلی مدیریت میشوند. این روش در صورت موجود بودن از ~/gemini.key استفاده میکند.
۴. داکر: یک Dockerfile تصویری شامل سرور و وابستگیها میسازد. اجرا از طریق docker run --rm -i -e GEMINI_API_KEY -v "$PWD:$PWD" -w "$PWD" xbill9/omni-video-agent نیازمند Mount کردن دایرکتوری کاری است تا کانتینر بتواند تصاویر محلی را بخواند و ویدیوها را روی دیسک میزبان ذخیره کند. توجه داشته باشید که OAuth یوتیوب باید در میزبان مدیریت شود زیرا کانتینرها مرورگر ندارند.
اثبات عملکرد (Dogfooding)
پروژه از استراتژی سختگیرانه «Dogfooding» استفاده کرده است؛ یعنی استفاده از محصول برای خلق خود محصول. ویدیوی دموی مرتبط با این یکپارچهسازی، کاملاً درون یک جلسه Claude Code با استفاده از همین مهارت ساخته شده است.
به عنوان مثال، فراخوانی اولیه generate_video یک نمای تعقیبی فوتورئالیستیک از روباه در برف (gen_1784824947.mp4) با درختان توس و نور خورشید پایین ایجاد کرد. این کار نیازمند یک پرامپت دقیق با تعیین حرکت دوربین و نور بود. سپس یک فراخوانی edit_video با استفاده از شناسه تعامل v1_Chdja1... نورپردازی را به نور ماه تغییر داد و برف شدید اضافه کرد (edit_1784825027.mp4).
رسیدهای بصری و شناسهها
یک مشاهده فنی از لاگها نشان میدهد که این شناسههای تعامل در نیمه اول یکسان هستند. تبار جلسه (Session Lineage) در خود شناسه قابل مشاهده است؛ پیشوند مشترک نشاندهندهی بستر ذخیرهشدهای است که هر دو نوبت (Turn) به آن تعلق دارند، در حالی که «دنباله» متفاوت، نشاندهندهی نوبت خاص است.
هر دو کلیپ تقریباً ۲.۶ مگابایت بودند که زیر سقف ۴ مگابایتی حالت Inline است، اما برای اطمینان از پایداری، از delivery='uri' استفاده شد. دارایی نهایی سپس با ابزار upload_to_youtube و با وضعیت privacy_status='unlisted' به یوتیوب ارسال شد و چرخه از پرامپت تا URL منتشر شده را بدون خروج از ترمینال کامل کرد. تصویر کاور پروژه نیز دقیقاً از ثانیه دوم کلیپ اول (gen_1784824947.mp4) گرفته شده است.
عیبیابی و نکات کاربردی
برای کسانی که سرور را مستقر میکنند، چند واقعیت عملی وجود دارد. اگر /mcp سرور را لیست نکرد، ریاستارت کردن Claude Code در دایرکتوری پروژه معمولاً مشکل را حل میکند. چون کلاینت Gemini در لحظه اجرا ساخته میشود، نبود API Key باعث توقف فرآیند پیش از ارسال پیام خوشآمدگویی پروتکل میشود؛ کاربران باید source set_env.sh را اجرا کرده یا کلید را دستی اکسپورت کنند.
برای نتایج سینمایی، مهارت پیشنهاد میکند بهجای توصیفات مبهم، روی ضربآهنگهای (Beats) خاص تمرکز کنید. کاربران تشویق میشوند ویرایشهای مرتبط را در یک پرامپت دقیق تجمیع کنند تا زمانبر بودن و هزینه تولیدات همگام مدیریت شود. در صورت شکست ابزار، سرور رشتههای خوانای 🔴 را برمیگرداند که عامل میتواند آنها را پردازش کرده و برای کاربر توضیح دهد.
تحلیل: گذار به سوی مجموعههای خلاقانه عاملمحور (Agentic)
این توسعه نشاندهندهی حرکت به دور از ماهیت «دستگاه قمار» در تولیدات هوش مصنوعی است (جایی که کاربر فقط پرامپت میزند و امیدوار است نتیجه خوب شود). با بستهبندی یک API حالتمند در یک سرور MCP، توسعهدهنده یک چتبات را به یک کنسول کارگردانی تبدیل میکند. این رویکرد شباهت زیادی به پروژه FableCut دارد که از فایلهای JSON برای تبدیل عاملهای هوش مصنوعی به تدوینگران ویدیو استفاده میکند تا کنترل دقیقتری بر خروجی بصری ایجاد شود.
برای خواننده، این بدان معناست که مانع تولید ویدیو با کیفیت بالا دیگر «شانس مهندسی پرامپت» نیست، بلکه توانایی پالایش تکرارشونده یک دیدگاه است. این امر استاندارد MCP را به عنوان لولهکشی حیاتی برای نسل بعدی عاملهای هوش مصنوعی که نیاز به دستکاری رسانههای پیچیده و با پهنای باند بالا دارند، تایید میکند.
در آینده، نظارهگر باشید که چگونه سایر مجموعههای خلاقانه — مانند Figma یا Adobe — ممکن است MCP را برای اجازه دادن به عاملها جهت انجام ویرایشهای حالتمند روی فایلهای لایهبندی شده پروژه (مشابه کاری که Omni Flash با فریمهای ویدیو میکند) به کار گیرند.




گفتگو