LOADING
ai summary and transcript YouTube video
// credit: @ShanMolvyr / @Shann
import https from "https";
import { randomUUID } from "crypto";
const BASE = "metube.io";
const UA =
"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Mobile Safari/537.36";
const _log = (msg) => process.stderr.write(`\r\x1b[K[metube] ${msg}`);
const _done = () => process.stderr.write("\n");
const _req = (method, path, body, extra = {}) =>
new Promise((resolve, reject) => {
const payload = body ? JSON.stringify(body) : null;
const opts = {
hostname: BASE,
path,
method,
headers: {
"User-Agent": UA,
Accept: "application/json, text/plain, */*",
"Accept-Language": "en-US,en;q=0.9",
"Content-Type": "application/json",
Referer: `https://${BASE}/`,
Origin: `https://${BASE}`,
...extra,
},
};
if (payload) opts.headers["Content-Length"] = Buffer.byteLength(payload);
const req = https.request(opts, (res) => {
let raw = "";
res.on("data", (c) => (raw += c));
res.on("end", () => {
try {
resolve(JSON.parse(raw));
} catch {
resolve(raw);
}
});
});
req.on("error", reject);
if (payload) req.write(payload);
req.end();
});
const _sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const _headers = (visitorId) => ({
"x-visitor-id": visitorId,
Cookie: `Next-Locale=en; sy_visitor_id=${visitorId}`,
});
const _get = (path, vid) => _req("GET", path, null, _headers(vid));
const _post = (path, body, vid) => _req("POST", path, body, _headers(vid));
const _pollTask = async (taskId, vid) => {
let i = 0;
while (true) {
const r = await _get(`/api/v1/tasks/${taskId}`, vid).then((x) => x?.data);
if (r?.status === "SUCCESS") return r;
if (r?.status === "FAILED") throw new Error("Task gagal: " + r.error_message);
_log(`Memproses video... (${++i * 4}s)`);
await _sleep(4000);
}
};
const _pollNotes = async (videoId, language, vid) => {
let i = 0;
while (true) {
const r = await _get(
`/api/v1/videos/${videoId}/generated-notes?output_language=${language}&limit=20`,
vid
).then((x) => x?.data);
const pct = r?.active_task?.processing_percent ?? 0;
const msg = r?.active_task?.processing_message ?? "generating...";
if (r?.items?.length > 0 && r?.active_task === null) return r;
_log(`Generating summary... ${pct}% — ${msg}`);
await _sleep(5000);
if (++i > 60) throw new Error("Polling notes timeout");
}
};
const summarize = async (url, language = "en") => {
const vid = randomUUID();
_log("Mengirim request...");
const processRes = await _post(
"/api/v1/videos/process",
{ url, language },
vid
);
if (!processRes?.data?.id) {
_done();
throw new Error("Gagal memproses video: " + JSON.stringify(processRes));
}
const { id: taskId, related_id: videoId, status, parameters } = processRes.data;
if (status !== "SUCCESS") {
_log("Memproses video...");
await _pollTask(taskId, vid);
}
const notes = await _pollNotes(videoId, language, vid);
_log("Mengambil transcript & summary...");
const [chunksRes, summaryRes] = await Promise.all([
_get(`/api/v1/videos/${videoId}/chunks?language=${language}`, vid),
_get(`/api/v1/videos/${videoId}/summary?language=${language}&limit=20`, vid),
]);
_done();
const note = notes.items?.[0];
const transcript =
chunksRes?.data?.video_chunks?.[0]?.chunks?.map((c) => ({
id: c.id,
time_range: c.time_range,
start_ms: c.start_ms,
end_ms: c.end_ms,
text: c.chunk_text,
})) ?? [];
return {
by: "ShanMolvyr",
video_id: videoId,
youtube_video_id: parameters?.youtube_video_id ?? null,
title: summaryRes?.data?.title ?? null,
language,
summary_type: note?.prompt_slug ?? null,
summary_name: note?.prompt_name ?? null,
model_used: note?.model_used ?? null,
content_markdown: note?.content_markdown ?? null,
transcript,
created_at: note?.created_at ?? null,
};
};
const main = async () => {
const [url, lang = "en"] = process.argv.slice(2);
if (!url) {
console.error("Usage: node metube.js <youtube_url> [language]");
process.exit(1);
}
try {
const result = await summarize(url, lang);
console.log(JSON.stringify(result, null, 2));
} catch (err) {
_done();
console.error(JSON.stringify({ error: err.message }, null, 2));
process.exit(1);
}
};
main();usenode metube.js "https://youtu.be/WMfRHf5kjsE?si=TZhUoPpm8Q0yur6w" id node metube.js "https://youtu.be/WMfRHf5kjsE?si=TZhUoPpm8Q0yur6w" en
output{ "by": "ShanMolvyr", "video_id": 4029, "youtube_video_id": "WMfRHf5kjsE", "title": "Feeling Lazy But Need to Be Productive? Here's the Secret to Getting Your Brain Running Again!", "language": "id", "summary_type": "smart_summary", "summary_name": "Smart Summary", "model_used": "deepseek/deepseek-chat-v3-0324", "content_markdown": "### Smart Summary \n\nVideo ini membahas fenomena procrastination dan strategi untuk mengatasinya dengan pendekatan yang berbasis sains. Pembicara memulai dengan menggambarkan situasi umum di mana seseorang memiliki niat kuat untuk menyelesaikan tugas penting, tetapi ketika saatnya tiba, tubuh dan pikiran seolah menolak untuk memulai. Video kemudian menjelaskan akar evolusioner dari kemalasan ini dan memberikan beberapa teknik praktis untuk \"memaksa\" otak agar lebih produktif, bahkan ketika motivasi rendah. \n\n#### [00:00–00:30] Pengenalan tentang perjuangan melawan procrastination \nPembicara membuka dengan pertanyaan retoris kepada penonton tentang pengalaman mereka ketika sudah berjanji pada diri sendiri untuk mengerjakan sesuatu yang penting, tetapi saat akan memulai, tubuh seperti \"membeku\" dan kasur tiba-tiba terlihat lebih menarik daripada apa pun. Contoh konkret yang diberikan adalah kebiasaan menunda-nunda dengan scrolling TikTok hingga larut malam sambil berkata, \"Besok saja.\" Bagian ini penting karena langsung membuat penonton merasa terkoneksi dengan masalah yang dibahas, membangun engagement sejak awal. \n\n#### [00:27–01:12] Mengidentifikasi pola self-sabotage \nPembicara menyambut penonton ke dalam \"klub otak yang suka boikot diri sendiri\" dengan nada humoristik (\"oh no enggak usah panik\"). Ia kemudian mengisyaratkan bahwa akan ada strategi \"ninja\" untuk memaksa otak bekerja, bahkan ketika seluruh sel tubuh menolak. Bagian ini juga menyebutkan bahwa ada penjelasan sains di balik fenomena ini, yang menjadi teaser untuk pembahasan lebih lanjut. Humor digunakan sebagai alat transisi yang efektif untuk mempertahankan perhatian penonton. \n\n#### [01:10–01:42] Akar evolusioner dari kemalasan \nDi sini, pembicara menjelaskan bahwa otak manusia memiliki misi utama untuk bertahan hidup dengan cara paling hemat energi. Amigdala, bagian otak yang berperan seperti \"satpam malas,\" akan langsung memperingatkan ketika ada aktivitas yang membutuhkan effort besar, dengan berkata, \"Eh, tunggu, ini capek nggak? Mending rebahan aja deh.\" Penjelasan ini penting karena menormalisasi procrastination sebagai sesuatu yang alami dan berbasis biologis, bukan sekadar kegagalan moral. \n\n#### [04:17–04:56] Strategi anti-sabotase tingkat lanjut \nPembicara memperkenalkan teknik \"environment design,\" yaitu menata lingkungan sedemikian rupa sehingga memaksa diri untuk produktif. Contoh yang diberikan termasuk meletakkan buku di tempat yang mudah terlihat atau menyiapkan baju olahraga di samping kasur sebelum tidur. Strategi ini bekerja dengan memanfaatkan momen ketika motivasi masih tinggi untuk mempersiapkan \"autopilot\" bagi diri sendiri di saat malas. \n\n#### [04:54–05:34] Alat komitmen dan tekanan sosial \nBagian ini membahas \"The Commitment Device,\" sebuah teknik ekstrem tetapi efektif di mana seseorang membuat komitmen publik, seperti posting di Instagram tentang tujuan hariannya (misalnya, belajar Photoshop selama satu jam setiap hari). Teknik ini memanfaatkan ketakutan akan kegagalan di depan umum sebagai pendorong untuk tetap konsisten. Pembicara menekankan pentingnya mempersiapkan segalanya saat motivasi masih tinggi agar saat kemalasan datang, semuanya sudah siap dijalankan. \n\n#### [08:05–08:35] Membangun otot disiplin mental \nPembicara menjelaskan bahwa perbedaan antara orang yang berhasil dan yang tidak terletak pada kemampuan untuk bangkit setelah gagal, bukan pada tidak pernah gagal sama sekali. Disiplin mental digambarkan seperti otot fisik: semakin sering dilatih, semakin kuat. Pesan ini penting karena mengubah perspektif penonton tentang kegagalan sebagai bagian alami dari proses, bukan akhir dari segalanya. \n\n#### [08:33–09:22] Filosofi \"aksi sebelum motivasi\" \nVideo ditutup dengan \"2-minute rule,\" yaitu memulai sesuatu hanya selama dua menit untuk membangun momentum. Pembicara menekankan bahwa mood biasanya mengikuti setelah aksi dimulai, bukan sebaliknya. Ia juga mengajak penonton untuk mencoba teknik ini dan berbagi hasilnya di kolom komentar, sekaligus mengingatkan bahwa satu video bisa menjadi titik balik bagi seseorang. \n\n### Key Insights \n1. **Procrastination adalah respons alami otak** yang dirancang untuk menghemat energi, bukan tanda kemalasan atau kegagalan moral. \n2. **Environment design** bisa menjadi senjata ampuh untuk memaksa produktivitas dengan memanfaatkan momen motivasi tinggi. \n3. **Komitmen publik** (seperti posting di media sosial) menciptakan tekanan sosial yang memaksa kita untuk konsisten. \n4. **Disiplin mental seperti otot**—semakin sering digunakan, semakin kuat. \n5. **Mulai dengan aksi kecil (2 menit)** seringkali lebih efektif daripada menunggu motivasi datang. \n6. **Kegagalan bukan akhir**, melainkan bagian dari proses yang harus dilalui untuk mencapai kesuksesan. \n\n### Summary Timeline \n\n| Waktu | Topik | Apa yang Terjadi | Mengapa Penting |\n|------------|--------------------------------|---------------------------------------------------------------------------------|---------------------------------------------------------------------------------|\n| 00:00–00:30 | Pengenalan procrastination | Pembicara menggambarkan situasi umum di mana orang menunda pekerjaan penting. | Membangun koneksi emosional dengan penonton. |\n| 00:27–01:12 | Identifikasi self-sabotage | Memperkenalkan \"klub otak yang suka boikot diri sendiri\" dengan humor. | Mempersiapkan penonton untuk solusi berbasis sains. |\n| 01:10–01:42 | Akar evolusioner kemalasan | Penjelasan tentang amigdala sebagai \"satpam malas.\" | Menormalisasi procrastination sebagai hal alami. |\n| 04:17–04:56 | Strategi anti-sabotase | Memperkenalkan \"environment design\" untuk memaksa produktivitas. | Memberikan solusi praktis yang bisa langsung diterapkan. |\n| 04:54–05:34 | Komitmen publik | Teknik \"The Commitment Device\" untuk memanfaatkan tekanan sosial. | Menunjukkan cara ekstrem tetapi efektif untuk tetap konsisten. |\n| 08:05–08:35 | Disiplin mental | Membandingkan disiplin dengan otot yang perlu dilatih. | Mengubah perspektif tentang kegagalan dan kesuksesan. |\n| 08:33–09:22 | Aksi sebelum motivasi | Memperkenalkan \"2-minute rule\" untuk memulai aksi kecil. | Menutup dengan teknik rendah hambatan dan ajakan berinteraksi. |\n\n### Definitions and Concepts \n- **Amigdala**: Bagian otak yang berfungsi seperti \"satpam malas,\" selalu mencari cara untuk menghindari effort berlebihan. \n- **Environment Design**: Teknik menata lingkungan fisik untuk memudahkan tindakan produktif. \n- **The Commitment Device**: Membuat komitmen publik untuk meningkatkan akuntabilitas diri. \n- **2-minute Rule**: Memulai suatu aktivitas hanya selama dua menit untuk membangun momentum. \n\n### Final Note \nVideo ini memberikan pemahaman mendalam tentang mengapa kita cenderung menunda-nunda dan bagaimana mengatasinya dengan strategi berbasis sains. Dari menata lingkungan hingga memanfaatkan tekanan sosial, setiap teknik dirancang untuk \"mengakali\" otak yang secara alami menghindari effort. Pesan utama: mulailah dengan aksi kecil, dan jangan menunggu motivasi datang sendiri.", "transcript": [ { "id": 178737, "time_range": "00:00 - 00:30", "start_ms": 640, "end_ms": 30960, "text": "hayo ngaku deh pernah enggak sih kamu udah niat banget mau ngerjain sesuatu yang penting udah janji sama diri sendiri tapi pas mau mulai body kamu kayak nge-freze otak langsung blank dan tiba-tiba kasur kelihatan lebih menarik dari apapun di dunia ini kayak ada tombol males maksimal yang otomatis kepencet gitu atau kamu bangun pagi udah niat mau produktif tapi begitu lihat laptop atau buku rasanya kayak ada tembok beton di depan mata terus kamu malah scrolling TikTok sampai jam 3.00" }, { "id": 178738, "time_range": "00:27 - 01:12", "start_ms": 27880, "end_ms": 72479, "text": "sore sambil bilang \"Besok aja deh.\" Nah kalau kamu ngangguk-ngangguk sambil nonton ini selamat kamu officially masuk klub otak yang suka boikot diri sendiri oh no enggak usah panik hari ini kita bakal ngebongkar jalan ninja gimana caranya memaksa otak kita buat Mauna ngerjain hal-hal berat bahkan ketika seluruh sel tubuh kita lagi demo dan teriak OGA dan yang lebih keren lagi ternyata ada sains di balik semua drama internal kita ini bagian satu kenapa otak kita jadi musuh jadi gini otak kita tuh sebenarnya punya" }, { "id": 178739, "time_range": "01:10 - 01:42", "start_ms": 70040, "end_ms": 102439, "text": "satu misi utama bertahan hidup dengan cara yang paling hemat energi karena otak kita terutama bagian yang namanya amigdala jangan khawatir ini bukan pelajaran biologi itu kerjanya kayak satpam malas setiap kali kamu mau ngerjain sesuatu yang butuh effort si otak langsung bilang \"Eh tunggu ini bahaya enggak sih capek enggak mending kita rebahan aja deh.\" Aman jadi fenomena malas gerak ini tuh wajar banget Guys makanya pas kamu mau mulai olahraga otak bilang \"Wah ini" }, { "id": 178740, "time_range": "04:17 - 04:56", "start_ms": 257759, "end_ms": 296880, "text": "dengan adanya hadiah yang jelas otak kita jadi lebih termotivasi buat kerja keras demi mendapatkan kesenangan itu anggap aja ini kayak uang lembur buat otak kamu bagian tiga strategi anti sabotase diri nah sekarang kita masuk ke level advance soalnya otak kita tuh kreatif banget bikin alasan buat enggak ngerjain sesuatu jurus pertama environment design ini prinsipnya simpel bikin lingkungan yang maksa kamu produktif misalnya mau" }, { "id": 178741, "time_range": "04:54 - 05:34", "start_ms": 294600, "end_ms": 334479, "text": "rajin baca buku taruh buku di tempat yang paling kelihatan HP taruh jauh-jauh mau olahraga pagi siapkan baju olahraga di samping kasur sebelum tidur ingat kita lagi bertarung sama versi diri sendiri yang paling malas jadi persiapin semuanya waktu kita lagi semangat biar pas lagi malas tinggal autopilot aja jurus kedua The Commitment Device ini agak ekstrem tapi efektif cerita ke orang tentang goal kamu misalnya post di story Instagram \"Minggu ini aku mau belajar Photoshop 1 jam setiap hari nah" }, { "id": 178742, "time_range": "08:05 - 08:35", "start_ms": 485720, "end_ms": 515640, "text": "bikin beda antara orang yang berhasil sama yang enggak adalah mereka yang berhasil itu comeback terus enggak nyerah permanen setelah gagal sekali atau dua kali jadi ingat ya otak kita memang secara natural cenderung ngindarin hal-hal yang susah tapi itu bukan berarti kita harus jadi budak dari kecenderungan itu setiap kali kamu berhasil memaksa diri ngerjain hal berat kamu sebenarnya lagi membangun otot mental yang namanya disiplin dan" }, { "id": 178743, "time_range": "08:33 - 09:22", "start_ms": 513159, "end_ms": 562640, "text": "kayak otot fisik makin sering dilatih makin kuat kuncinya gerak dulu mood nyusul kebanyakan orang nunggu mood bagus dulu baru mulai padahal kenyataannya mood itu datang setelah kamu mulai gerak kamu enggak harus jadi manusia super kamu cuma perlu jadi manusia yang mau mulai ee meskipun cuma 2 menit coba deh minggu ini pakai 2 menit rule buat hal yang selama ini kamu tunda ceritain hasilnya di kolom komentar atau tag temanmu yang butuh dorongan kecil buat mulai kadang satu video bisa jadi titik balik dan kamu gak tahu siapa yang kamu bantu hari ini see you in the next video and jangan lupa subscribe kalau video ini helpful tetap semangat dan jangan kasih kendor sama rasa malas bye" } ], "created_at": "2026-06-27T12:21:46.862667Z" }