คู่มือโดย Péter Nagy

วิธีดึงทรานสคริปต์ YouTube ด้วย API (curl, Python, JavaScript)

ดึงทรานสคริปต์ของวิดีโอ YouTube สาธารณะใดก็ได้ด้วยคำขอ HTTP เดียว ตัวอย่างที่ใช้งานได้จริงใน curl, Python และ JavaScript รูปแบบผลลัพธ์ รหัสข้อผิดพลาด และค่าใช้จ่าย

สรุปวิดีโอ YouTube ทันที

วางลิงก์แล้วรับประเด็นสำคัญพร้อมกดที่เวลาเพื่อข้ามไปดูได้เลย

หากต้องการดึงทรานสคริปต์ YouTube ด้วย API ให้ส่งคำขอ HTTP พร้อม URL หรือ ID ของวิดีโอและ API key แล้วอ่านทรานสคริปต์จากการตอบกลับ คู่มือนี้แสดงคำขอใน curl, Python และ JavaScript โดยใช้ sum.video Transcript API จากนั้นอธิบายรูปแบบ ข้อผิดพลาด และค่าใช้จ่าย

API ส่งอะไรกลับมา

endpoint นี้ส่งคำบรรยายที่มีอยู่แล้วของวิดีโอ YouTube สาธารณะกลับมา ไม่ว่าจะเป็นคำบรรยายที่ผู้สร้างเขียนเองหรือที่ YouTube สร้างอัตโนมัติ มันไม่ถอดเสียงจากเสียงพูด ถ้าวิดีโอไม่มีคำบรรยาย คุณจะได้รับข้อผิดพลาดแทนการเดา (รายละเอียดด้านล่าง)

พื้นฐาน:

  • Endpoint: POST https://sum.video/api/v1/transcript (ใช้ GET ได้เช่นกัน)
  • การยืนยันตัวตน: key ของคุณใน header X-API-Key หรือ Authorization: Bearer <key>
  • อินพุต: url หรือ video_id
  • lang (ไม่บังคับ ค่าเริ่มต้น en)
  • format (ไม่บังคับ): json, text หรือ srt

การตอบกลับบอกภาษาจริงของแทร็กคำบรรยายและบอกว่าสร้างอัตโนมัติหรือไม่ คุณจะได้รู้ว่าควรคาดหวังคุณภาพแค่ไหน

ขั้นที่ 1: สร้าง API key

ลงชื่อเข้าใช้แล้วสร้าง key ในแดชบอร์ด API (/dashboard/api บน sum.video) คุณมี key ที่ใช้งานอยู่ได้สูงสุด 5 อัน ซึ่งช่วยแยก key สำหรับทดสอบออกจาก key สำหรับใช้งานจริง key แรกของคุณมาพร้อมเครดิตฟรี 10 เครดิต พอสำหรับ 5 ทรานสคริปต์ ดังนั้นคุณลองทุกอย่างด้านล่างได้โดยไม่เสียค่าใช้จ่าย

สรุปวิดีโอ YouTube ทันที

วางลิงก์แล้วรับประเด็นสำคัญพร้อมกดที่เวลาเพื่อข้ามไปดูได้เลย

ขั้นที่ 2: ส่งคำขอแรก

curl

curl -X POST https://sum.video/api/v1/transcript \
  -H "X-API-Key: $SUMVIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "lang": "en", "format": "text"}'

เนื่องจากใช้ GET ได้ด้วย คุณจึงทดสอบจากสคริปต์ที่สร้างแค่ URL ได้เช่นกัน แต่ควรส่ง key ใน header เพื่อไม่ให้ไปปรากฏใน log

Python

import os
import requests

resp = requests.post(
    "https://sum.video/api/v1/transcript",
    headers={"X-API-Key": os.environ["SUMVIDEO_API_KEY"]},
    json={"video_id": "dQw4w9WgXcQ", "lang": "en", "format": "text"},
    timeout=30,
)

if resp.status_code == 404:
    print("No captions for this video")
else:
    resp.raise_for_status()
    print(resp.text)

JavaScript (Node 18+ หรือเบราว์เซอร์)

const resp = await fetch("https://sum.video/api/v1/transcript", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.SUMVIDEO_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    video_id: "dQw4w9WgXcQ",
    lang: "en",
    format: "text",
  }),
});

if (resp.status === 404) {
  console.log("No captions for this video");
} else if (!resp.ok) {
  throw new Error(`Request failed: ${resp.status}`);
} else {
  console.log(await resp.text());
}

เก็บ key ไว้ที่เซิร์ฟเวอร์ key ที่อยู่ในโค้ดเบราว์เซอร์ใครก็ตามที่เปิดเครื่องมือนักพัฒนาก็คัดลอกได้

ขั้นที่ 3: เลือกรูปแบบที่เหมาะสม

รูปแบบ สิ่งที่ได้รับ เหมาะที่สุดสำหรับ
json ส่วนต่างๆ แต่ละส่วนมี offset และ duration เป็นวินาที ไทม์สแตมป์ ลิงก์ไปยังช่วงเวลาในวิดีโอ การแบ่งตามเวลา
text ทรานสคริปต์ข้อความธรรมดา prompt ดัชนีค้นหา สรุป
srt เนื้อหาไฟล์คำบรรยาย โปรแกรมตัดต่อวิดีโอ เครื่องมือทำคำบรรยาย

ถ้าวางแผนจะลิงก์ไปยังช่วงเวลาในวิดีโอ ให้ใช้ json และสร้างลิงก์จาก offset ของส่วนนั้น สำหรับส่งให้ LLM text สั้นและง่ายกว่า หากภายหลังต้องการค้นหาในทรานสคริปต์ด้วยตัวเอง ดูวิธีค้นหาในทรานสคริปต์ของวิดีโอ YouTube

ขั้นที่ 4: เลือกภาษา

lang มีค่าเริ่มต้น en ตั้งภาษาที่ต้องการ เช่น de หรือ es การตอบกลับบอกภาษาของแทร็กที่ส่งกลับมาจริง ดังนั้นตรวจสอบแทนที่จะสันนิษฐาน วิดีโอมักมีแทร็กคำบรรยายเพียงแทร็กเดียว และ API ส่งคำบรรยายจริงกลับมา มันจึงไม่แปลให้คุณ

ขั้นที่ 5: จัดการข้อผิดพลาด

วางแผนรับมือสถานการณ์เหล่านี้ตั้งแต่วันแรก:

  • 404 no_transcript: วิดีโอไม่มีคำบรรยาย หรือเป็นไลฟ์สด วิดีโอส่วนตัว หรือวิดีโอที่ถูกลบ ไม่มีอะไรให้ลองใหม่ ข้ามไป หรือขอวิดีโออื่นจากผู้ใช้
  • 402 budget_exceeded: คุณถึงขีดจำกัดเครดิตรายเดือนที่ตั้งไว้แล้ว ดูหัวข้อถัดไป
  • ขีดจำกัดอัตราการเรียก: แต่ละ key อนุญาต 60 คำขอต่อนาที กระจายงานแบบแบตช์ และชะลอเมื่อถูกจำกัด
  • ความล้มเหลวฝั่งเรา: ลองใหม่หลังจากสักครู่ ไม่มีค่าใช้จ่าย

ลูปง่ายๆ ที่ลองใหม่เมื่อเซิร์ฟเวอร์ผิดพลาดและข้ามเมื่อเจอ 404 ครอบคลุมความต้องการใช้งานจริงส่วนใหญ่

ค่าใช้จ่าย

ทุกทรานสคริปต์ราคา 2 เครดิต คำขอที่ไม่ส่งทรานสคริปต์กลับมาหรือล้มเหลวที่ฝั่ง sum.video ไม่มีค่าใช้จ่าย ดังนั้น 404 จะไม่ทำให้ยอดคงเหลือของคุณลดลง ดูยอดคงเหลือด้วย GET /api/v1/credits

เครดิตขายเป็นแพ็กเกจซื้อครั้งเดียวที่ไม่มีวันหมดอายุ:

แพ็กเกจ ราคา ต่อทรานสคริปต์
100 เครดิต $4.49 $0.090
500 เครดิต $13.99 $0.056
2,000 เครดิต $37.99 $0.038
5,000 เครดิต $74.99 $0.030

สมาชิก Pro ยังได้รับเครดิตโบนัสเพิ่ม 100 เครดิตทุกเดือน สำหรับงานหนัก เช่น นำเข้าทั้งช่อง อ่านสถานการณ์ ทรานสคริปต์ YouTube สำหรับแอป RAG ในระดับใหญ่ ซึ่งครอบคลุมการเติมเงินอัตโนมัติและงบประมาณ ดูราคาด้วย

ข้อจำกัดที่ควรรู้ก่อนสร้าง

  • ใช้ได้เฉพาะวิดีโอที่มีคำบรรยาย นี่เป็นสาเหตุหลักของ 404 no_transcript
  • คำบรรยายอัตโนมัติอาจมีข้อผิดพลาด โดยเฉพาะชื่อ สำเนียง และศัพท์เทคนิค
  • API ส่งกลับเฉพาะทรานสคริปต์ ไม่สร้างสรุป หากต้องการสรุป ไทม์สแตมป์ และแชตเกี่ยวกับทรานสคริปต์ ตัวสรุป YouTube ทำได้ และเครื่องมือทรานสคริปต์ เป็นเวอร์ชันไม่ต้องเขียนโค้ดสำหรับวิดีโอเดียว
  • YouTube Data API ทางการไม่ใช่ตัวแทนในกรณีนี้ วิธีดาวน์โหลดคำบรรยายของมันต้องมีสิทธิ์แก้ไขวิดีโอ จึงใช้กับวิดีโอของคุณเองเท่านั้น (เอกสารของ Google)

แหล่งที่มา

คำถามที่พบบ่อย

ดึงทรานสคริปต์ YouTube โดยไม่ใช้ YouTube Data API ทางการได้ไหม

ได้ sum.video Transcript API รับ URL หรือ ID ของวิดีโอแล้วส่งคำบรรยายที่มีอยู่กลับมา โดยไม่ต้องมีโปรเจกต์ Google Cloud วิธีดาวน์โหลดคำบรรยายอย่างเป็นทางการของ Google ต้องมีสิทธิ์แก้ไขวิดีโอ จึงใช้ได้กับวิดีโอของคุณเองเท่านั้น

API ถอดเสียงวิดีโอที่ไม่มีคำบรรยายไหม

ไม่ มันส่งคำบรรยาย YouTube ที่มีอยู่กลับมา ไม่ว่าจะเขียนด้วยมือหรือสร้างอัตโนมัติ วิดีโอที่ไม่มีคำบรรยาย ไลฟ์สด วิดีโอส่วนตัว และวิดีโอที่ถูกลบจะส่ง 404 no_transcript กลับมา และคำขอนั้นไม่มีค่าใช้จ่าย

ทรานสคริปต์หนึ่งรายการราคาเท่าไร

2 เครดิตต่อทรานสคริปต์ แพ็กเกจมีตั้งแต่ 100 เครดิต $4.49 ($0.090 ต่อทรานสคริปต์) ถึง 5,000 เครดิต $74.99 ($0.030 ต่อทรานสคริปต์) และเครดิตไม่มีวันหมดอายุ

มีรูปแบบผลลัพธ์อะไรบ้าง

json (ส่วนที่มี offset และ duration เป็นวินาที), text และ srt ตั้งค่าฟิลด์ format ในคำขอ

จะลองใช้ฟรีได้อย่างไร

API key แรกของคุณมาพร้อมเครดิตฟรี 10 เครดิต หรือ 5 ทรานสคริปต์ สมาชิก Pro ยังได้รับเครดิตโบนัสเพิ่ม 100 เครดิตทุกเดือน

สรุปวิดีโอ YouTube ทันที

วางลิงก์แล้วรับประเด็นสำคัญพร้อมกดที่เวลาเพื่อข้ามไปดูได้เลย

youtube transcript apiคู่มือ apipythonjavascriptcurl

เรื่องอื่นๆ ที่น่าอ่าน

โพสต์ล่าสุด

สรุปวิดีโอ YouTube ทุกคลิปในไม่กี่วินาที

ลองใช้ sum.video