Konten
Ubah video YouTube menjadi artikel yang bisa diterbitkan
Ambil transkrip bertimestamp, bentuk menjadi blok mudah dibaca, buat kerangka dan draf dengan model yang Anda kendalikan, lalu tinggalkan hasilnya di LiveDoc untuk ditinjau.
Salin prompt
Ganti kolom dalam kurung siku lalu tempel ke Claude Code, Codex, atau AI dengan akses terminal. Ia memasang skill Felo, bertanya sebelum memakai kredit, dan menjalankan alur kerja.
Ubah video ini menjadi artikel yang layak terbit: [URL YouTube atau ID video]. Audiens: [pembaca]. Nada: [gaya publikasi]. Panjang target: [800–1200 kata] dalam [bahasa]. Penanganan sumber: pertahankan judul, kanal, dan URL video. Kutip paling banyak bagian pendek, dengan stempel waktu. Hasilkan: 1. Judul kerja. 2. Paragraf pembuka. 3. Bagian dengan paragraf pendek. 4. Dua atau tiga kutipan dengan stempel waktu. 5. Apa yang tidak dibahas video. 6. Daftar sumber dengan video dan halaman yang tertaut. Aturan: - Jangan mereproduksi transkrip lengkap. Ringkas dan kutip singkat. - Setiap klaim faktual dari video membutuhkan stempel waktu; klaim dari halaman tertaut membutuhkan URL. - Tandai sebagai “Belum terverifikasi” semua yang tidak bisa kamu cek. - Tanya dulu sebelum memakai kredit untuk transkrip atau ekstraksi halaman. - Jangan menerbitkan, menjadwalkan, atau mengirim apa pun. - Tulis hasilnya ke ./video-article.md dan ringkas di chat.
Salinan juga menyertakan langkah pemasangan dan aturan keamanan.
Yang Anda dapatkan
Contoh keluaran dari satu eksekusi. Bukan pembuatan langsung.
Apa yang sebenarnya dikatakan talk agen 40 menit
Paragraf pembuka
Demonnya mengesankan; bagian bergunanya adalah penanganan kegagalan.
Klaim yang semua orang kutip
> “Agennya tidak jadi lebih pintar. Kami hanya berhenti membiarkannya mencoba ulang tanpa anggaran.” — [12:40]
Yang tidak dicakup video
Biaya per tugas berhasil, dan apa yang terjadi saat sumber yang diambil salah.
Sumber
- Video: https://www.youtube.com/watch?v=...
- Benchmark tertaut: https://example.com/benchmark
Panggilan persisnya
Untuk developer: alur kerja yang sama sebagai kode, sesuai urutan eksekusi.
Tampilkan panggilan API asli
Ambil transkrip bertimestamp
Gunakan YouTube Subtitling untuk subtitle bahasa target dan simpan waktu mulai serta durasi tiap baris.
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; }Contoh keluaran
{ "title": "How we rebuilt onboarding", "contents": [ { "text": "Welcome back to the channel.", "start": 0.32, "duration": 4.1 } ] }Bentuk blok mudah dibaca
Bagi per tema, buang kata pengisi, dan pertahankan timestamp.
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"); }Contoh keluaran
[00:00] Welcome back to the channel. Today we are talking about onboarding. [01:00] The first thing we changed was the welcome screen.
Ambil sumber yang disebut
Dengan Web Fetch baca halaman yang disebut di video dan tambahkan tautan serta fakta.
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 }; }), ); }Contoh keluaran
[ { "url": "https://example.com/reference", "content": "# Reference\n\nExtracted page text…" } ]Buat kerangka lalu draf
Minta kerangka ke Model API dulu, lalu tulis artikel mengikuti kerangka dengan kutipan singkat dan timestamp.
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, }; }Contoh keluaran
{ "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 } }Tinggalkan di LiveDoc untuk tinjauan
Simpan draf dan kutipan di LiveDoc lalu serahkan ke editor untuk koreksi dan persetujuan.
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; }Contoh keluaran
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Termasuk
- Transkrip YouTube bertimestamp
- Halaman yang disebut video dalam Markdown
- Kerangka dan draf dari Model API
- LiveDoc berisi draf untuk tinjauan
Yang tidak dilakukan
- Tidak menyalin seluruh transkrip; hanya kutipan singkat dan penulisan ulang
- Video harus punya subtitle
- Periksa hak dan batas kutipan sebelum terbit
- Model membuat kerangka dan draf; keputusan akhir ada pada editor
- Tidak menerbitkan atau menerjemahkan otomatis
Pertanyaan
Apakah video harus punya subtitle?
Ya. Alur dimulai dari subtitle; jika tidak ada, ia berhenti alih-alih menebak ucapan.
Bisa mengubah podcast menjadi artikel?
Alur ini untuk YouTube. Untuk podcast, siapkan transkrip dulu dan pakai aturan penulisan yang sama.
Bisa menulis dalam bahasa lain?
Bisa. Sebutkan bahasa target; kutipan tetap dalam asli dengan terjemahan bila perlu.
Siapa yang menulis artikel?
Agent AI tempat Anda menempel prompt menulis draf; Felo menyediakan transkrip, halaman, dan ruang tinjauan.
Boleh menerbitkan ulang seluruh transkrip?
Tidak. Alur membuat artikel baru dengan kutipan singkat dan tidak menyalin transkrip penuh.
Berapa biaya satu eksekusi?
Transkrip dan ekstraksi ditagih sesuai pemakaian; tarif saat ini di halaman harga dan prompt meminta persetujuan sebelum mengeluarkan biaya.
Alur kerja terkait
Terbitkan ringkasan berita AI harian yang benar-benar dibaca tim
Dapatkan ringkasan bersumber, tambahkan diskusi praktisi di X, ambil transkrip video, susun edisi Markdown, dan arsipkan di LiveDoc.
Buka alur kerjaKantorUbah halaman riset menjadi presentasi
Ekstrak halaman, simpan sebagai konteks LiveDoc, biarkan PPT Task API membangun deck, dan tanyakan sampai tautan selesai.
Buka alur kerjaDukunganJawab pertanyaan dukungan dari dokumentasi Anda sendiri
Buat LiveDoc, muat pusat bantuan dan runbook internal, ambil bagian yang menjawab tiket, dan biarkan model menjawab hanya dari bukti itu.
Buka alur kerjaSesuaikan
Resep yang sama, disesuaikan dengan cara Anda benar-benar mengirim.
Hanya kutipan bertimestamp
Tidak menulis artikel; berikan daftar kutipan yang bisa diperiksa untuk dipakai ulang.
Versi newsletter dulu
Ringkas artikel menjadi versi lebih pendek dan santai untuk newsletter.
Proses satu kanal secara batch
Ulangi langkah per video dan simpan LiveDoc terpisah.
Lanjut
Halaman referensi di balik resep ini dan langkah berikutnya.