Felo API PlatformFelo API Platform

सामग्री

YouTube वीडियो को प्रकाशन योग्य लेख में बदलें

टाइमस्टैम्प वाला ट्रांसक्रिप्ट लें, पठनीय ब्लॉक में बनाएँ, अपने नियंत्रण वाले मॉडल से रूपरेखा और ड्राफ़्ट बनाएँ और परिणाम समीक्षा के लिए LiveDoc में छोड़ें।

समय25 मिनटस्तरमध्यमअपडेट2026-10-29
किसके लिएसामग्री टीमेंन्यूज़लेटर लेखकवीडियो और पॉडकास्ट संपादक

प्रॉम्प्ट कॉपी करें

वर्ग कोष्ठक के फ़ील्ड बदलें और Claude Code, Codex या टर्मिनल एक्सेस वाले AI में चिपकाएँ। यह Felo स्किल इंस्टॉल करता है, क्रेडिट से पहले पूछता है और वर्कफ़्लो चलाता है।

इस वीडियो को प्रकाशन योग्य लेख में बदलें: [YouTube URL या वीडियो ID]।

पाठक: [पाठक]। शैली: [प्रकाशन शैली]। लक्ष्य लंबाई: [800–1200 शब्द], भाषा: [भाषा]।
स्रोत व्यवस्था: वीडियो का शीर्षक, चैनल और URL रखें। अधिकतम छोटे अंश उद्धृत करें, टाइमस्टैम्प के साथ।

तैयार करें:
1. कार्यशील शीर्षक।
2. प्रारंभिक पैराग्राफ।
3. छोटे पैराग्राफ वाले अनुभाग।
4. दो या तीन टाइमस्टैम्प वाले उद्धरण।
5. वीडियो ने क्या कवर नहीं किया।
6. वीडियो और जुड़े पृष्ठों सहित स्रोत सूची।

नियम:
- पूरा ट्रांस्क्रिप्ट दोबारा न बनाएं। सारांश दें और संक्षेप में उद्धृत करें।
- वीडियो के हर तथ्यात्मक दावे के लिए टाइमस्टैम्प और जुड़े पृष्ठों के दावों के लिए URL ज़रूरी है।
- जो सत्यापित न कर सकें उसे “असत्यापित” चिह्नित करें।
- ट्रांस्क्रिप्ट या पृष्ठ निष्कर्षण पर क्रेडिट खर्च करने से पहले पूछें।
- प्रकाशित, शेड्यूल या भेजें नहीं।
- परिणाम ./video-article.md में लिखें और चैट में सारांश दें।

कॉपी में इंस्टॉल चरण और सुरक्षा नियम भी हैं।

आपको क्या मिलता है

एक रन का उदाहरण आउटपुट। लाइव जनरेशन नहीं।

नमूना लेख (अंश)

40 मिनट के एजेंट टॉक ने असल में क्या कहा

प्रारंभिक पैराग्राफ

डेमो प्रभावशाली था; उपयोगी हिस्सा विफलता प्रबंधन था।

वह दावा जिसे सबने उद्धृत किया

> “एजेंट होशियार नहीं हुआ। हमने बस उसे बिना बजट के फिर कोशिश करने देना बंद किया।” — [12:40]

वीडियो ने क्या कवर नहीं किया

प्रति सफल कार्य लागत, और जब मिला स्रोत गलत हो तब क्या होता है।

स्रोत

  • वीडियो: 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 ट्रांसक्रिप्ट, पेज और समीक्षा स्थान देता है।

पूरा ट्रांसक्रिप्ट दोबारा प्रकाशित कर सकते हैं?

नहीं। वर्कफ़्लो छोटे उद्धरणों वाला नया लेख बनाता है और पूरा ट्रांसक्रिप्ट कॉपी नहीं करता।

एक रन की लागत कितनी है?

ट्रांसक्रिप्ट और निष्कर्षण उपयोग के अनुसार बिल होते हैं; मौजूदा दरें मूल्य पेज पर और प्रॉम्प्ट खर्च से पहले मंज़ूरी माँगता है।

संबंधित वर्कफ़्लो

इसे अपना बनाएँ

वही रेसिपी, आपके असली तरीके के हिसाब से।

केवल टाइमस्टैम्प उद्धरण

लेख न लिखें; दोबारा इस्तेमाल के लिए जाँचने योग्य उद्धरण सूची दें।

पहले न्यूज़लेटर संस्करण

लेख को न्यूज़लेटर के लिए छोटा और बातचीतपूर्ण बनाएँ।

चैनल बैच में प्रोसेस करें

हर वीडियो पर चरण दोहराएँ और अलग LiveDoc सहेजें।

इस रेसिपी के पीछे के संदर्भ पेज और अगले कदम।