Контент
Превратите видео 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 agent, в который вы вставили промпт; Felo даёт транскрипт, страницы и рабочее пространство для ревью.
Можно перепечатать весь транскрипт?
Нет. Процесс создаёт новую статью с короткими цитатами и не копирует транскрипт целиком.
Сколько стоит запуск?
Транскрипт и извлечение страниц оплачиваются по факту использования; актуальные тарифы на странице цен, промпт просит одобрение до трат.
Связанные процессы
Выпускайте ежедневный AI-дайджест, который команда действительно читает
Получите подборку новостей с источниками, добавьте обсуждения практиков в X, загрузите один транскрипт видео, соберите выпуск в Markdown и сохраните его в LiveDoc.
Открыть рабочий процессОфисПревратите исследовательскую страницу в презентацию
Извлеките страницу, сохраните её как контекст LiveDoc, затем дайте PPT Task API собрать deck и опрашивайте задачу до готовой ссылки.
Открыть рабочий процессПоддержкаОтвечайте на вопросы поддержки по своей документации
Создайте LiveDoc, загрузите справочный центр и внутренний runbook, найдите фрагменты, отвечающие на тикет, и позвольте модели отвечать только по этим доказательствам.
Открыть рабочий процессАдаптируйте под себя
Тот же рецепт, подстроенный под ваш реальный процесс.
Только цитаты с таймкодами
Не пишите статью, а выдайте список проверяемых цитат для вторичного использования.
Сначала версия для рассылки
Сделайте более короткую и разговорную версию для рассылки.
Обработайте канал пакетно
Повторите шаги для каждого видео и сохраните отдельные LiveDoc.
Продолжить
Справочные страницы этого рецепта и куда двигаться дальше.