Treści
Zamień wideo z YouTube w publikowalny artykuł
Pobierz transkrypt ze znacznikami czasu, ułóż w czytelne bloki, zrób outline i szkic modelem, który kontrolujesz, i zostaw wynik w LiveDoc do przeglądu.
Skopiuj prompt
Podmień pola w nawiasach kwadratowych i wklej do Claude Code, Codex albo AI z dostępem do terminala. Instaluje skill Felo, pyta przed wydaniem kredytów i uruchamia workflow.
Zamień ten film w artykuł gotowy do publikacji: [URL YouTube lub ID filmu]. Odbiorcy: [czytelnicy]. Ton: [styl publikacji]. Docelowa długość: [800–1200 słów] w języku [język]. Obsługa źródeł: zachowaj tytuł, kanał i URL filmu. Cytuj najwyżej krótkie fragmenty, ze znacznikami czasu. Przygotuj: 1. Tytuł roboczy. 2. Lead. 3. Sekcje z krótkimi akapitami. 4. Dwa lub trzy cytaty ze znacznikami czasu. 5. Czego film nie obejmował. 6. Listę źródeł z filmem i powiązanymi stronami. Zasady: - Nie odtwarzaj całej transkrypcji. Streszczaj i cytuj krótko. - Każde twierdzenie faktograficzne z filmu wymaga znacznika czasu; twierdzenia ze stron linkowanych wymagają URL. - Oznaczaj jako „Niezweryfikowane” wszystko, czego nie udało się sprawdzić. - Pytaj przed zużyciem kredytów na transkrypcję lub ekstrakcję stron. - Nie publikuj, nie planuj i niczego nie wysyłaj. - Zapisz wynik w ./video-article.md i podsumuj go w czacie.
Kopia zawiera też kroki instalacji i zasady bezpieczeństwa.
Co otrzymujesz
Przykładowy wynik jednego uruchomienia. Nie generowanie na żywo.
Co naprawdę powiedział 40-minutowy talk o agentach
Lead
Demo robiło wrażenie; użyteczna była obsługa błędów.
Twierdzenie, które wszyscy cytowali
> „Agent nie stał się mądrzejszy. Po prostu przestaliśmy pozwalać mu ponawiać bez budżetu.” — [12:40]
Czego wideo nie objęło
Kosztu udanego zadania i tego, co się dzieje, gdy pobrane źródło jest błędne.
Źródła
- Wideo: https://www.youtube.com/watch?v=...
- Linkowany benchmark: https://example.com/benchmark
Dokładne wywołania
Dla deweloperów: ten sam workflow jako kod, w kolejności wykonania.
Pokaż rzeczywiste wywołania API
Pobierz transkrypt ze znacznikami czasu
Użyj YouTube Subtitling dla napisów w języku docelowym i zachowaj początek oraz czas trwania każdej linii.
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; }Przykładowy wynik
{ "title": "How we rebuilt onboarding", "contents": [ { "text": "Welcome back to the channel.", "start": 0.32, "duration": 4.1 } ] }Ułóż w czytelne bloki
Podziel według tematów, usuń wypełniacze i zachowaj znaczniki czasu.
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"); }Przykładowy wynik
[00:00] Welcome back to the channel. Today we are talking about onboarding. [01:00] The first thing we changed was the welcome screen.
Pobierz cytowane źródła
Przez Web Fetch przeczytaj strony wymienione w wideo i dodaj linki oraz fakty.
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 }; }), ); }Przykładowy wynik
[ { "url": "https://example.com/reference", "content": "# Reference\n\nExtracted page text…" } ]Zrób outline, potem szkic
Najpierw poproś Model API o outline, potem napisz artykuł według outline, z krótkimi cytatami i znacznikami czasu.
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, }; }Przykładowy wynik
{ "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 } }Zostaw w LiveDoc do przeglądu
Zapisz szkic i cytaty w LiveDoc i przekaż redaktorowi do poprawy i zatwierdzenia.
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; }Przykładowy wynik
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Co zawiera
- Transkrypt YouTube ze znacznikami czasu
- Strony cytowane w wideo jako Markdown
- Outline i szkic z Model API
- LiveDoc ze szkicem do przeglądu
Czego nie robi
- Bez kopiowania całego transkryptu; tylko krótkie cytaty i przepisanie
- Wideo musi mieć napisy
- Sprawdź prawa i limit cytatu przed publikacją
- Model robi outline i szkic; decyzja końcowa należy do redaktora
- Nie publikuje ani nie tłumaczy automatycznie
Pytania
Czy wideo musi mieć napisy?
Tak. Workflow zaczyna od napisów; jeśli ich brak, zatrzymuje się zamiast zgadywać wypowiedź.
Czy podcast można zamienić w artykuł?
Ten workflow jest dla YouTube. Dla podcastu przygotuj najpierw transkrypt i użyj tych samych zasad pisania.
Czy można pisać w innym języku?
Tak. Wskaż język docelowy; cytaty zostają w oryginale z tłumaczeniem, gdy trzeba.
Kto pisze artykuł?
Agent AI, do którego wklejasz prompt, pisze szkic; Felo dostarcza transkrypt, strony i miejsce przeglądu.
Czy można opublikować cały transkrypt?
Nie. Workflow tworzy nowy artykuł z krótkimi cytatami i nie kopiuje całego transkryptu.
Ile kosztuje jedno uruchomienie?
Transkrypt i ekstrakcja stron są rozliczane według użycia; aktualne stawki na stronie cen, a prompt pyta o zgodę przed wydaniem.
Powiązane workflowy
Publikuj codzienny digest AI, który zespół naprawdę czyta
Weź podsumowanie ze źródłami, dodaj rozmowy praktyków na X, pobierz transkrypt wideo, złóż wydanie w Markdown i zarchiwizuj w LiveDoc.
Otwórz workflowBiuroZamień stronę badawczą w prezentację
Wyekstrahuj stronę, zapisz jako kontekst LiveDoc, pozwól PPT Task API zbudować deck i pytaj, aż link będzie gotowy.
Otwórz workflowWsparcieOdpowiadaj na pytania wsparcia z własnej dokumentacji
Utwórz LiveDoc, wczytaj centrum pomocy i wewnętrzny runbook, pobierz fragmenty odpowiadające ticketowi i pozwól modelowi odpowiadać tylko z tych dowodów.
Otwórz workflowDostosuj
Ta sama receptura, dopasowana do tego, jak naprawdę dostarczasz.
Tylko cytaty ze znacznikami czasu
Nie pisz artykułu; dostarcz listę cytatów do sprawdzenia i ponownego użycia.
Najpierw wersja newsletterowa
Skróć artykuł i zrób go bardziej swobodnym dla newslettera.
Przetwarzaj kanał wsadowo
Powtórz kroki dla każdego wideo i zapisuj osobne LiveDocs.
Idź dalej
Strony referencyjne za tą recepturą i kolejne kroki.