Контент
Перетворіть YouTube-відео на статтю, готову до публікації
Візьміть транскрипт із таймкодами, перетворіть його на читабельні блоки, зробіть структуру й чернетку моделлю, яку контролюєте, і залиште результат у LiveDoc для перевірки.
Скопіювати промпт
Замініть поля в квадратних дужках і вставте в Claude Code, Codex або AI з доступом до термінала. Він встановить скіл Felo, запитає перед витратою кредитів і запустить процес.
Перетвори це відео на статтю, готову до публікації: [URL YouTube або 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
Візьміть транскрипт із таймкодами
Використайте 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 } ] }Перетворіть на читабельні блоки
Розділіть за темами, приберіть слова-заповнювачі й збережіть таймкоди.
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.
Візьміть цитовані джерела
Через 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…" } ]Зробіть структуру, потім чернетку
Спершу попросіть структуру в 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 } }Залиште в 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, отримайте уривки, що відповідають тікету, і дозвольте моделі відповідати лише з цих доказів.
Відкрити робочий процесАдаптуйте
Той самий рецепт, підлаштований під те, як ви насправді працюєте.
Лише цитати з таймкодами
Не пишіть статтю; дайте список цитат для перевірки й повторного використання.
Спершу версія для розсилки
Скоротіть статтю й зробіть її розмовнішою для розсилки.
Обробіть канал пакетно
Повторіть кроки для кожного відео й зберігайте окремі LiveDocs.
Далі
Довідкові сторінки за цим рецептом і наступні кроки.