Felo API PlatformFelo API Platform

কনটেন্ট

YouTube ভিডিওকে প্রকাশযোগ্য নিবন্ধে বদলান

টাইমস্ট্যাম্পসহ ট্রান্সক্রিপ্ট নিন, পাঠযোগ্য ব্লকে সাজান, আপনার নিয়ন্ত্রিত মডেল দিয়ে রূপরেখা ও খসড়া বানান এবং ফলাফল পর্যালোচনার জন্য LiveDoc-এ রাখুন।

সময়২৫ মিনিটস্তরমধ্যমহালনাগাদ2026-10-29
কাদের জন্যকনটেন্ট দলনিউজলেটার লেখকভিডিও ও পডকাস্ট সম্পাদক

প্রম্পট কপি করুন

বর্গ বন্ধনীর ঘরগুলো বদলে Claude Code, Codex বা টার্মিনাল অ্যাক্সেসসহ AI-তে পেস্ট করুন। এটি Felo স্কিল ইনস্টল করে, ক্রেডিটের আগে জিজ্ঞাসা করে ও ওয়ার্কফ্লো চালায়।

এই ভিডিওকে প্রকাশযোগ্য নিবন্ধে রূপান্তর করুন: [YouTube URL বা ভিডিও ID]।

পাঠক: [পাঠক]। সুর: [প্রকাশনা শৈলী]। লক্ষ্য দৈর্ঘ্য: [৮০০–১২০০ শব্দ], ভাষা: [ভাষা]।
উৎস ব্যবস্থাপনা: ভিডিওর শিরোনাম, চ্যানেল ও URL রাখুন। সর্বোচ্চ সংক্ষিপ্ত অংশ উদ্ধৃত করুন, টাইমস্ট্যাম্পসহ।

তৈরি করুন:
1. কার্যকরী শিরোনাম।
2. সূচনা অনুচ্ছেদ।
3. সংক্ষিপ্ত অনুচ্ছেদের বিভাগ।
4. দুই বা তিনটি টাইমস্ট্যাম্পযুক্ত উদ্ধৃতি।
5. ভিডিও কী কভার করেনি।
6. ভিডিও ও লিঙ্কযুক্ত পৃষ্ঠাসহ উৎস তালিকা।

নিয়ম:
- সম্পূর্ণ ট্রান্সক্রিপ্ট পুনরুৎপাদন করবেন না। সারসংক্ষেপ দিন এবং সংক্ষেপে উদ্ধৃত করুন।
- ভিডিওর প্রতিটি তথ্যগত দাবির জন্য টাইমস্ট্যাম্প এবং লিঙ্কযুক্ত পৃষ্ঠার দাবির জন্য URL প্রয়োজন।
- যা যাচাই করতে পারেননি তা “অযাচাইকৃত” হিসেবে চিহ্নিত করুন।
- ট্রান্সক্রিপ্ট বা পৃষ্ঠা নিষ্কাশনে ক্রেডিট খরচের আগে জিজ্ঞাসা করুন।
- প্রকাশ, সময়সূচি বা পাঠানো কিছুই করবেন না।
- ফলাফল ./video-article.md-এ লিখুন এবং চ্যাটে সারসংক্ষেপ দিন।

কপিতে ইনস্টল ধাপ ও নিরাপত্তা নিয়মও আছে।

আপনি কী পান

একটি রানের উদাহরণ আউটপুট। লাইভ জেনারেশন নয়।

নমুনা নিবন্ধ (অংশ)

৪০ মিনিটের এজেন্ট টকের আসলে কী বলা হলো

সূচনা অনুচ্ছেদ

ডেমো চমকপ্রদ ছিল; কাজের অংশ ছিল ব্যর্থতা সামলানো।

যে দাবি সবাই উদ্ধৃত করেছে

> “এজেন্ট আরও বুদ্ধিমান হয়নি। আমরা শুধু বাজেট ছাড়া আবার চেষ্টা করতে দেওয়া বন্ধ করেছি।” — [১২:৪০]

ভিডিও যা কভার করেনি

প্রতি সফল কাজের খরচ, এবং পাওয়া উৎস ভুল হলে কী হয়।

উৎস

  • ভিডিও: https://www.youtube.com/watch?v=...
  • লিংক করা বেঞ্চমার্ক: https://example.com/benchmark

সঠিক কল

ডেভেলপারদের জন্য: একই ওয়ার্কফ্লো কোড হিসেবে, চালানোর ক্রমে।

আসল API কল দেখান
  1. টাইমস্ট্যাম্পসহ ট্রান্সক্রিপ্ট নিন

    লক্ষ্য ভাষার সাবটাইটেলের জন্য YouTube Subtitling ব্যবহার করুন এবং প্রতিটি লাইনের শুরু ও সময়কাল রাখুন।

    article.ts
    const BASE = "https://openapi.felo.ai";
    const headers = {
      Authorization: `Bearer ${process.env.FELO_API_KEY}`,
      "Content-Type": "application/json",
    };
    
    async function felo<T>(path: string, body?: unknown): Promise<T> {
      const res = await fetch(`${BASE}${path}`, {
        method: body ? "POST" : "GET",
        headers,
        body: body ? JSON.stringify(body) : undefined,
      });
      if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
      return res.json() as Promise<T>;
    }
    
    type Transcript = {
      data: {
        title: string;
        contents: { text: string; start: number; duration: number }[];
      };
    };
    
    export async function fetchTranscript(videoId: string, language = "en") {
      const query = new URLSearchParams({
        video_code: videoId,
        language,
        with_time: "true",
      });
      const { data } = await felo<Transcript>(`/v2/youtube/subtitling?${query}`);
      if (data.contents.length === 0) throw new Error("This video has no subtitles");
      return data;
    }

    উদাহরণ আউটপুট

    {
      "title": "How we rebuilt onboarding",
      "contents": [
        { "text": "Welcome back to the channel.", "start": 0.32, "duration": 4.1 }
      ]
    }
  2. পাঠযোগ্য ব্লক বানান

    বিষয় অনুযায়ী ভাগ করুন, ভরাট শব্দ বাদ দিন এবং টাইমস্ট্যাম্প রাখুন।

    article.ts
    const toClock = (seconds: number) => {
      const minutes = Math.floor(seconds / 60);
      const rest = Math.floor(seconds % 60);
      return `${String(minutes).padStart(2, "0")}:${String(rest).padStart(2, "0")}`;
    };
    
    export function toBlocks(
      contents: Transcript["data"]["contents"],
      window = 60,
    ) {
      const grouped = new Map<number, string[]>();
      for (const line of contents) {
        const bucket = Math.floor(line.start / window) * window;
        grouped.set(bucket, [...(grouped.get(bucket) ?? []), line.text.trim()]);
      }
      return [...grouped]
        .map(([start, lines]) => `[${toClock(start)}] ${lines.join(" ")}`)
        .join("\n\n");
    }

    উদাহরণ আউটপুট

    [00:00] Welcome back to the channel. Today we are talking about onboarding.
    
    [01:00] The first thing we changed was the welcome screen.
  3. উদ্ধৃত উৎস নিন

    Web Fetch দিয়ে ভিডিওতে বলা পৃষ্ঠা পড়ুন এবং লিংক ও তথ্য যোগ করুন।

    article.ts
    type ExtractData = { data: { content: string } };
    
    export async function fetchSources(urls: string[]) {
      return Promise.all(
        urls.slice(0, 5).map(async (url) => {
          const page = await felo<ExtractData>("/v2/web/extract", {
            url,
            output_format: "markdown",
            with_readability: true,
          });
          return { url, content: page.data.content };
        }),
      );
    }

    উদাহরণ আউটপুট

    [
      {
        "url": "https://example.com/reference",
        "content": "# Reference\n\nExtracted page text…"
      }
    ]
  4. রূপরেখা তারপর খসড়া

    আগে Model API থেকে রূপরেখা চান, তারপর রূপরেখা অনুযায়ী ছোট উদ্ধৃতি ও টাইমস্ট্যাম্পসহ নিবন্ধ লিখুন।

    article.ts
    const MODEL_API = "https://openapi.felo.ai/api/v1";
    
    type Completion = {
      choices: { message: { content: string } }[];
      usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number };
    };
    
    async function complete(model: string, prompt: string): Promise<Completion> {
      const res = await fetch(`${MODEL_API}/chat/completions`, {
        method: "POST",
        headers,
        body: JSON.stringify({ model, messages: [{ role: "user", content: prompt }] }),
      });
      if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
      return res.json() as Promise<Completion>;
    }
    
    export async function draftArticle(title: string, transcript: string) {
      const outline = await complete(
        "claude-haiku-5-5",
        "Outline a short article from this transcript. Return only headings.\n\n" + transcript,
      );
      const article = await complete(
        "claude-sonnet-5-5",
        `Write the article "${title}" from the transcript. Follow the outline and keep [mm:ss] on direct quotes.\n\nOutline:\n${outline.choices[0].message.content}\n\nTranscript:\n${transcript}`,
      );
      return {
        outline: outline.choices[0].message.content,
        article: article.choices[0].message.content,
        usage: article.usage,
      };
    }

    উদাহরণ আউটপুট

    {
      "outline": "1. The problem\n2. What changed\n3. What we learned",
      "article": "## The problem\n\nWhen we…",
      "usage": { "prompt_tokens": 4120, "completion_tokens": 640, "total_tokens": 4760 }
    }
  5. পর্যালোচনার জন্য LiveDoc-এ রাখুন

    খসড়া ও উদ্ধৃতি LiveDoc-এ রাখুন এবং সম্পাদককে সংশোধন ও অনুমোদনের জন্য দিন।

    article.ts
    type LiveDocData = { data: { short_id: string } };
    type ResourceData = { data: { id: string } };
    
    export async function saveDraft(
      title: string,
      result: { outline: string; article: string },
    ) {
      const doc = await felo<LiveDocData>("/v2/livedocs", {
        name: `Article draft: ${title}`,
        description: "Draft generated from a video transcript",
      });
    
      await felo<ResourceData>(`/v2/livedocs/${doc.data.short_id}/resources/doc`, {
        title: "Draft",
        content: result.article,
      });
    
      await felo<ResourceData>(`/v2/livedocs/${doc.data.short_id}/resources/doc`, {
        title: "Outline",
        content: result.outline,
      });
    
      return doc.data.short_id;
    }

    উদাহরণ আউটপুট

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

যা আছে

  • টাইমস্ট্যাম্পসহ YouTube ট্রান্সক্রিপ্ট
  • ভিডিওতে উদ্ধৃত পৃষ্ঠা Markdown-এ
  • Model API থেকে রূপরেখা ও খসড়া
  • পর্যালোচনার জন্য LiveDoc-এ খসড়া

যা করে না

  • পুরো ট্রান্সক্রিপ্ট নয়; শুধু ছোট উদ্ধৃতি ও পুনর্লিখন
  • ভিডিওতে সাবটাইটেল দরকার
  • প্রকাশের আগে অধিকার ও উদ্ধৃতি সীমা যাচাই করুন
  • মডেল রূপরেখা ও খসড়া বানায়; চূড়ান্ত সিদ্ধান্ত সম্পাদকের
  • স্বয়ংক্রিয়ভাবে প্রকাশ বা অনুবাদ করে না

প্রশ্ন

ভিডিওতে সাবটাইটেল লাগবে?

হ্যাঁ। ওয়ার্কফ্লো সাবটাইটেল থেকে শুরু হয়; না থাকলে বলা কথার অনুমান না করে থামে।

পডকাস্টকে নিবন্ধ বানানো যায়?

এই ওয়ার্কফ্লো YouTube-এর জন্য। পডকাস্টে আগে ট্রান্সক্রিপ্ট তৈরি করুন এবং একই লেখার নিয়ম ব্যবহার করুন।

অন্য ভাষায় লেখা যায়?

হ্যাঁ। লক্ষ্য ভাষা বলুন; উদ্ধৃতি মূল ভাষায় অনুবাদসহ থাকে।

নিবন্ধ কে লেখে?

যে AI এজেন্টে প্রম্পট পেস্ট করেন সে খসড়া লেখে; Felo ট্রান্সক্রিপ্ট, পৃষ্ঠা ও পর্যালোচনা জায়গা দেয়।

পুরো ট্রান্সক্রিপ্ট পুনঃপ্রকাশ করা যায়?

না। ওয়ার্কফ্লো ছোট উদ্ধৃতিসহ নতুন নিবন্ধ বানায় এবং পুরো ট্রান্সক্রিপ্ট কপি করে না।

এক রানের খরচ কত?

ট্রান্সক্রিপ্ট ও নিষ্কাশন ব্যবহার অনুযায়ী বিল হয়; বর্তমান হার মূল্য পৃষ্ঠায় এবং প্রম্পট খরচের আগে অনুমোদন চায়।

সম্পর্কিত ওয়ার্কফ্লো

কনটেন্ট

দৈনিক AI সংবাদ সারাংশ প্রকাশ করুন যা দল সত্যিই পড়ে

উৎসসহ সারাংশ নিন, X-এ অনুশীলনকারী আলোচনা যোগ করুন, একটি ভিডিও ট্রান্সক্রিপ্ট নিন, সংস্করণ Markdown-এ বানান এবং LiveDoc-এ সংরক্ষণ করুন।

ওয়ার্কফ্লো খুলুন
অফিস

গবেষণা পৃষ্ঠাকে উপস্থাপনায় বদলান

পৃষ্ঠা নিষ্কাশ করুন, LiveDoc প্রসঙ্গ হিসেবে রাখুন, PPT Task API দিয়ে ডেক বানাতে দিন এবং প্রস্তুত লিংক না পাওয়া পর্যন্ত জিজ্ঞাসা করুন।

ওয়ার্কফ্লো খুলুন
সহায়তা

আপনার নিজের নথি থেকে সহায়তা প্রশ্নের উত্তর দিন

LiveDoc তৈরি করুন, হেল্প সেন্টার ও অভ্যন্তরীণ runbook লোড করুন, টিকিটের উত্তর দেওয়া অংশ আনুন এবং মডেলকে শুধু সেই প্রমাণ থেকে উত্তর দিতে দিন।

ওয়ার্কফ্লো খুলুন

নিজের মতো করুন

একই রেসিপি, আপনি যেভাবে সত্যিই সরবরাহ করেন সেভাবে।

শুধু টাইমস্ট্যাম্প উদ্ধৃতি

নিবন্ধ লিখবেন না; পুনঃব্যবহারের জন্য যাচাইযোগ্য উদ্ধৃতি তালিকা দিন।

আগে নিউজলেটার সংস্করণ

নিবন্ধকে নিউজলেটারের জন্য ছোট ও কথোপকথনধর্মী করুন।

চ্যানেল ব্যাচে প্রসেস

প্রতি ভিডিওতে ধাপ পুনরাবৃত্তি করুন এবং আলাদা LiveDoc রাখুন।

এই রেসিপির পেছনের রেফারেন্স পৃষ্ঠা ও পরবর্তী ধাপ।