Felo API PlatformFelo API Platform

مواد

HTML اور Opus 5.5 سے motion graphics ویڈیو بنائیں

beat sheet لکھیں، Opus 5.5 سے Felo API کے ذریعے قطعی HTML منظر لکھوائیں، Playwright سے فریم کیپچر کریں اور ffmpeg سے MP4 انکوڈ کریں۔ WorkBuddy، کوڈ رن کرنے والے ChatGPT، Codex، Pi Agent یا Claude Code میں چلتا ہے۔

وقت45 منٹسطحدرمیانہاپ ڈیٹ2026-10-30
کिसके لیےتخلیق کارMotion designerآزاد ڈویلپر

پرامپٹ کاپی کریں

مربع بریکٹ کے فیلڈز بدلیں اور Claude Code، Codex یا ٹرمینل رسائی والے AI میں چسپاں کریں۔ یہ Felo اسکل نصب کرتا ہے، کریڈٹ سے پہلے پوچھتا ہے اور ورک فلو چلاتا ہے۔

[آئیڈیا] پر [دورانیہ] سیکنڈ کی [عمودی / افقی] ویڈیو بنائیں۔
انداز: [انداز]۔ قارئین: [قارئین]۔ آڈیو: [کوئی نہیں / ./audio.mp3 میں لائسنس یافتہ ٹریک / TTS]۔

آپ ٹرمینل والے فولڈر میں [WorkBuddy / کوڈ چلانے والا ChatGPT / Codex / Pi Agent / Claude Code] کے ساتھ کام کر رہے ہیں۔ اگر Node اور ہیڈ لیس براؤزر نہیں چلا سکتے تو رکیں اور مجھے بتائیں، رینڈر ہونے کا ڈراما نہ کریں۔

اس ترتیب سے آگے بڑھیں:
1. درست آغاز اور اختتام کے سیکنڈز والا 3–6 بیٹ اسٹوری بورڈ لکھیں۔
2. HTML مرحلہ: Felo API سے Claude Opus 5.5 کو کال کریں۔ ماڈل ID claude-opus-5-5 اور میری FELO_API_KEY استعمال کریں۔ مجھ سے Claude سبسکرپشن یا دوسری Anthropic کلید نہ مانگیں۔
3. Opus سے ایک خودمختار HTML فائل مانگیں: window.DURATION سیٹ کرے اور async window.seek(t) ظاہر کرے۔ بیرونی اثاثے، CDN، Date.now()، requestAnimationFrame()، CSS ٹرانزیشن یا ٹائمر نہیں۔ ہر بے ترتیب قدر کو seed کریں تاکہ وہی t ہمیشہ وہی فریم بنائے۔
4. t = 0، 25%، 50%، 75% اور آخری فریم پر پیش نظارہ کریں۔ پورا رینڈر کرنے سے پہلے اوور فلو، کٹائی، فونٹ اور محفوظ علاقے جانچیں۔
5. Playwright سے ہر فریم رینڈر کریں، ffmpeg سے H.264 انکوڈ کریں اور آڈیو ٹریک ہو تو mux کریں۔
6. پہلا فریم، آخری فریم اور آخری فائل کا راستہ دکھائیں۔ شائع نہ کریں۔

قواعد:
- کریڈٹ خرچ کرنے سے پہلے Felo API کالز اور تخمینی ٹوکن دکھائیں۔
- صرف میرا دیا متن استعمال کریں، یا گھڑا ہوا placeholder متن واضح طور پر نشان زد کریں۔
- کاپی رائٹ والا مواد، موسیقی، لوگو یا فونٹ استعمال نہ کریں۔ صرف سسٹم فونٹ اور بنائی گئی شکلیں۔
- جب تک میں واضح طور پر لمبا ورژن نہ مانگوں، آخری ویڈیو 30 سیکنڈ سے کم رکھیں۔
- سب کچھ ./video/ میں لکھیں اور چلائی گئی کمانڈز کا خلاصہ دیں۔

کاپی میں تنصیب کے مراحل اور حفاظتی اصول بھی شامل ہیں۔

آپ کو کیا ملتا ہے

ایک رن کی مثال آؤٹ پٹ۔ لائیو جنریشن نہیں۔

نمونہ رینڈر رپورٹ (اقتباس)

رینڈر رپورٹ

منظر: video/scene.html (18 KB) دورانیہ: 12 سیکنڈ · 1080x1920 · 30fps · 360 فریم جانچ: window.DURATION = 12 · seek(t) موجود · بغیر Date.now / rAF / ٹائمر

پیش نظارہ: preview-0ms.png · preview-3000ms.png · preview-6000ms.png · preview-9000ms.png انکوڈنگ: video/video.mp4 (H.264، 360 فریم) آڈیو: video/final.mp4 (AAC، 12.0 سیکنڈ)

درست کالز

ڈویلپرز کے لیے: وہی ورک فلو کوڈ کے طور پر، چلانے کی ترتیب میں۔

اصل API کالز دکھائیں
  1. پہلے beat sheet لکھیں

    دورانیہ اور 3–6 بیٹس مقرر کریں، ہر ایک میں آغاز، اختتام، اسکرین متن اور اہم بصری تبدیلی۔

  2. Opus 5.5 سے HTML منظر بنائیں

    Anthropic SDK کو Felo base URL پر لگائیں، claude-opus-5-5 استعمال کریں اور صرف HTML مانگیں جس میں window.DURATION اور async seek(t) ہو۔

    generate-scene.ts
    import { mkdir, writeFile } from "node:fs/promises";
    import Anthropic from "@anthropic-ai/sdk";
    
    const SYSTEM = `You write a single, self-contained HTML video scene.
    Requirements:
    - 1080x1920 (or 1920x1080), no external assets, system fonts only.
    - set window.DURATION = <seconds>.
    - expose async window.seek(t) that draws the frame for time t.
    - no Date.now(), no requestAnimationFrame(), no CSS transitions, no timers.
    - seed every random value; the same t must always produce the same frame.
    - return only the HTML file, no markdown fences.`;
    
    const brief = `12-second vertical motion graphic about [idea].
    Beats: [0-3s hook], [3-7s point], [7-10s proof], [10-12s CTA].
    Palette: [colors]. Type: system sans. Keep text inside a 64px safe area.`;
    
    const anthropic = new Anthropic({
      apiKey: process.env.FELO_API_KEY,
      baseURL: "https://openapi.felo.ai/api",
    });
    
    const message = await anthropic.messages.create({
      model: "claude-opus-5-5",
      max_tokens: 32000,
      system: SYSTEM,
      messages: [{ role: "user", content: brief }],
    });
    
    const raw = message.content
      .filter((block) => block.type === "text")
      .map((block) => block.text)
      .join("");
    
    const html = raw.replace(/^```(?:html)?\s*/i, "").replace(/```\s*$/, "").trim();
    await mkdir("video", { recursive: true });
    await writeFile("video/scene.html", html);
    console.log(`scene.html: ${html.length} bytes`);

    مثال آؤٹ پٹ

    scene.html: 18432 bytes
  3. قطعیت اور پیش نظارہ جانچیں

    t=0، 25%، 50%، 75% اور آخری فریم پر اسکرین شاٹ لیں، متن اوور فلو، فونٹ اور محفوظ علاقے جانچیں۔

    preview.ts
    import { chromium } from "playwright";
    import { pathToFileURL } from "node:url";
    
    const browser = await chromium.launch();
    const page = await browser.newPage({
      viewport: { width: 1080, height: 1920 },
      deviceScaleFactor: 1,
    });
    
    await page.goto(pathToFileURL("video/scene.html").href);
    await page.waitForFunction(() => typeof (window as any).seek === "function");
    
    const duration = await page.evaluate(() => (window as any).DURATION as number);
    for (const t of [0, duration * 0.25, duration * 0.5, duration * 0.75]) {
      await page.evaluate(async (time) => {
        await (window as any).seek(time);
      }, t);
      await page.screenshot({ path: `video/preview-${Math.round(t * 1000)}ms.png` });
    }
    
    await browser.close();
    console.log(`duration ${duration}s`);

    مثال آؤٹ پٹ

    duration 12s
    video/preview-0ms.png
    video/preview-3000ms.png
    video/preview-6000ms.png
    video/preview-9000ms.png
  4. تمام فریم رینڈر اور انکوڈ

    seek(t) کو t = frame / fps سے بلائیں، فریم کیپچر کریں اور ffmpeg سے H.264 انکوڈ کریں۔

    render.ts
    import { spawn } from "node:child_process";
    import { mkdir, rm } from "node:fs/promises";
    import { pathToFileURL } from "node:url";
    import { chromium } from "playwright";
    
    const FPS = 30;
    
    const browser = await chromium.launch();
    const page = await browser.newPage({
      viewport: { width: 1080, height: 1920 },
      deviceScaleFactor: 1,
    });
    await page.goto(pathToFileURL("video/scene.html").href);
    await page.waitForFunction(() => typeof (window as any).seek === "function");
    
    const duration = await page.evaluate(() => (window as any).DURATION as number);
    const frames = Math.ceil(duration * FPS);
    
    await rm("video/frames", { recursive: true, force: true });
    await mkdir("video/frames", { recursive: true });
    
    for (let frame = 0; frame < frames; frame++) {
      await page.evaluate(async (time) => {
        await (window as any).seek(time);
      }, frame / FPS);
      await page.screenshot({
        path: `video/frames/${String(frame).padStart(5, "0")}.png`,
      });
    }
    await browser.close();
    
    const ffmpeg = spawn("ffmpeg", [
      "-y",
      "-framerate", String(FPS),
      "-i", "video/frames/%05d.png",
      "-c:v", "libx264",
      "-pix_fmt", "yuv420p",
      "-movflags", "+faststart",
      "video/video.mp4",
    ], { stdio: "inherit" });
    
    await new Promise<void>((resolve, reject) => {
      ffmpeg.on("exit", (code) => {
        if (code === 0) resolve();
        else reject(new Error(`ffmpeg exited with ${code}`));
      });
    });
    
    console.log(`${frames} frames -> video/video.mp4`);

    مثال آؤٹ پٹ

    360 frames -> video/video.mp4
  5. آڈیو mux کریں اور پورا دیکھیں

    لائسنس یافتہ ٹریک -c:v copy سے شامل کریں، دورانیہ اور والیوم جانچیں اور شروع سے آخر تک دیکھیں۔

    mux.sh
    ffmpeg -i video/video.mp4 -i video/audio.wav \
      -c:v copy -c:a aac -b:a 192k -shortest \
      video/final.mp4
    
    ffprobe -v error -show_entries format=duration \
      -of default=nw=1:nk=1 video/final.mp4

    مثال آؤٹ پٹ

    12.000000
  6. اسی ماڈل سے تکرار

    صرف غلط فریم اور مطلوب تبدیلی بیان کریں، موجودہ HTML Opus کو دیں اور پورے رینڈر سے پہلے پیش نظارہ دوبارہ چلائیں۔

کیا شامل ہے

  • پہلے لکھا سٹوری بورڈ اور ٹائم لائن
  • Opus 5.5 کا قطعی HTML منظر
  • Playwright فریم رینڈر اسکرپٹ اور ffmpeg انکوڈنگ
  • اختیاری آڈیو ٹریک کے ساتھ آخری MP4
  • فریم بہ فریم جائزہ اور اصلاح لوپ

کیا نہیں کرتا

  • Opus 5.5 کوڈ دیتا ہے، ویڈیو فریم نہیں؛ براؤزر رینڈرر فریم کیپچر کرتا ہے
  • Claude سبسکرپشن نہیں لیکن Felo ماڈل استعمال استعمال کے مطابق بل ہوتا ہے
  • Node، Playwright Chromium اور ffmpeg پھر بھی ضروری
  • بیرونی اثاثے یا CDN نہیں؛ صرف HTML/CSS/SVG/Canvas یا مقامی فائلیں
  • لمبی ویڈیو کے لیے منظر تقسیم درکار؛ یہ ریئل ٹائم اسکرین ریکارڈنگ نہیں
  • روایت اور موسیقی الگ مراحل؛ ورک فلو صرف دیا گیا آڈیو mux کرتا ہے

سوالات

کیا Opus 5.5 سیدھی ویڈیو بناتا ہے؟

نہیں۔ یہ متن اور کوڈ بنا کر HTML منظر لکھتا ہے؛ براؤزر اور ffmpeg اسے فریم اور MP4 بناتے ہیں۔

Claude سبسکرپشن درکار ہے؟

نہیں۔ Felo کلید سے `claude-opus-5-5` کو Felo API پر بلائیں، استعمال کے مطابق بل؛ الگ Claude سبسکرپشن نہیں۔

کن ایجنٹس میں چلتا ہے؟

WorkBuddy، کوڈ رن کرنے والے ChatGPT، Codex، Pi Agent، Claude Code یا کوئی ایجنٹ جو Node اور headless براؤزر چلا سکے۔

seek(t) کیوں؟

فریم کیپچر ریئل ٹائم نہیں: فریم 400، 399 کے بہت بعد کیپچر ہو سکتا ہے، اس لیے ہر فریم t کا خالص فنکشن ہونا چاہیے۔

HyperFrames یا Remotion استعمال ہو سکتے ہیں؟

ہاں لمبی کمپوزیشن یا ڈھانچہ بند پروجیکٹ کے لیے۔ یہ ترکیب ایک HTML رکھتی ہے تاکہ ماڈل کال اور رینڈر لوپ جانچے جا سکیں۔

12 سیکنڈ ویڈیو کی لاگت کتنی ہے؟

پرامپٹ، آؤٹ پٹ ٹوکن اور تکرار پر منحصر۔ Felo ماڈل فی ٹوکن بل کرتا ہے؛ لمبی رینڈر سے پہلے قیمت دیکھیں۔

اپنی موسیقی اور روایت استعمال ہو سکتی ہے؟

ہاں اگر حقوق ہیں۔ پہلے ویڈیو رینڈر کریں، پھر لائسنس یافتہ ٹریک یا اپنا TTS ffmpeg سے mux کریں۔ ورک فلو روایت نہیں بناتا۔

حوالہ جات

وہ ٹیوٹوریلز اور پروجیکٹس جن پر یہ ورک فلو مبنی ہے۔

متعلقہ ورک فلو

اسے اپنا بنائیں

وہی ترکیب، آپ کے اصل انداز کے مطابق۔

HyperFrames یا Remotion پروجیکٹ

لمبی کمپوزیشن کے لیے یہ فریم ورکس استعمال کریں؛ ماڈل کال وہی، صرف رینڈر کمانڈ بدلتی ہے۔

سوشل کے لیے مربع ورژن

beat sheet رکھیں، 1080x1080 پر جائیں اور ٹائپوگرافی اور محفوظ علاقے ایڈجسٹ کریں۔

ایک بریف سے تین ورژن

مختلف رنگ اور تال والے تین منظر بنائیں، پیش نظارے دیکھیں اور صرف بہترین رینڈر کریں۔

اس ترکیب کے پیچھے کے ریفرنس صفحات اور اگلے مراحل۔