ทีละขั้นตอน: สร้าง YouTube Research Agent ด้วย Claude Code
หากคุณเคยใช้เวลาช่วงบ่ายไปกับการดูวิดีโอต่างๆ ใน YouTube อย่างไม่ตั้งใจ จนลืมไปว่าวิดีโอไหนที่ควรบันทึกไว้ คุณไม่ได้อยู่คนเดียว ลองจินตนาการถึงผู้ช่วยที่ไม่รู้จักเหน็ดเหนื่อย ซึ่งสามารถค้นหาวิดีโอที่ดีที่สุด สรุปเนื้อหา ดึงคำพูดสำคัญ ระบุช่วงเวลาที่น่าสนใจ และคืนแหล่งที่มาได้ตามต้องการ—อย่างรวดเร็ว นั่นคือสิ่งที่ YouTube research agent สามารถทำได้ ในคู่มือทีละขั้นตอนนี้ เราจะสร้าง YouTube research agent ที่ใช้งานได้จริงด้วย Claude Code ซึ่งออกแบบมาสำหรับครีเอเตอร์ นักวิเคราะห์ นักเรียน และผู้เรียนที่ต้องการข้อมูลที่สำคัญมากกว่าสิ่งรบกวน
เราจะใช้วิธีการที่ใช้งานได้จริงและตรงไปตรงมา: สถาปัตยกรรม โค้ด พรอมต์ และมาตรการป้องกัน ตลอดเส้นทาง เราจะทำการเลือกแบบเฉพาะเจาะจงที่คุณสามารถสลับเปลี่ยนได้ในภายหลัง เมื่อถึงตอนท้าย คุณจะมีเอเจนต์ที่ทำงานได้ ซึ่งสามารถค้นหา YouTube รวบรวมบทความ ถอดความ คิดอย่างมีเหตุผลจากวิดีโอหลายรายการ และสร้างบทสรุปงานวิจัยที่ชัดเจน
สิ่งที่เรากำลังสร้าง (และเหตุผลที่สำคัญ)
- เป้าหมาย: YouTube research agent ที่สามารถ:
- จัดอันดับผลลัพธ์ตามความเกี่ยวข้อง/การมีส่วนร่วม
- ดึงบทความ ถอดความ (คำบรรยายอัตโนมัติหรือบุคคลที่สาม)
- แบ่งส่วนและฝังเนื้อหาเพื่อการดึงข้อมูล
- ใช้ Claude Code เพื่อสังเคราะห์ข้อมูลเชิงลึกจากวิดีโอหลายรายการ
- สร้างบันทึกที่มีโครงสร้าง: สรุป ข้อโต้แย้ง ช่วงเวลา คำพูด และการอ้างอิง
- คำหลักหลัก: "การสร้าง YouTube research agent ด้วย Claude Code"
- รูปแบบ: บทช่วยสอนทีละขั้นตอนพร้อมโค้ดและพรอมต์ที่สามารถเรียกใช้ได้
- ผลลัพธ์: สรุปงานวิจัยในรูปแบบ Markdown + JSON สำหรับการใช้งานเชิงโปรแกรม
เหตุผลที่สำคัญ: YouTube เป็นฐานความรู้สาธารณะที่ใหญ่ที่สุดของคำพูด บทเรียน การสาธิต และการอภิปราย แต่ก็มีข้อมูลที่ไร้สาระมากมาย การสร้าง YouTube research agent ด้วย Claude Code ช่วยให้คุณได้เปรียบ: คุณสามารถรวบรวมข้อมูลเชิงลึกจากวิดีโอหลายสิบรายการได้ในไม่กี่นาที ไม่ใช่หลายชั่วโมง
ภาพรวมสถาปัตยกรรม
เราจะทำให้เวอร์ชันแรกเรียบง่ายและแข็งแกร่ง
- อินพุต: คำค้นคว้า (เช่น "สถาปัตยกรรมเอเจนต์ LLM 2025") ข้อจำกัดเพิ่มเติม (ช่วงวันที่ ช่อง ระยะเวลา)
- การค้นหา YouTube: YouTube Data API v3 (หรือ SerpAPI fallback)
- บทความ ถอดความ: YouTube Transcript API; fallback เป็น ASR (เช่น Whisper) เมื่อไม่พร้อมใช้งาน
- การแบ่งส่วน: การแบ่งส่วนที่คำนึงถึงประโยค (ประมาณ 800–1,200 โทเค็น)
- การฝัง: ใช้โมเดลการฝังในเครื่องหรือแบบโฮสต์ (เช่น
text-embedding-3-large, nomic-embed-text หรือ bge-large)
- Vector Store:
FAISS ในเครื่องเพื่อความเร็ว สามารถสลับไปใช้ Pinecone, Weaviate หรือ Qdrant ได้
- การให้เหตุผล: Claude Code สำหรับการจัดระเบียบ การใช้เครื่องมือ การสังเคราะห์ และการดำเนินการโค้ดภายในลูปที่มีการควบคุม
- เอาต์พุต: รายงาน Markdown + ดัชนี JSON พร้อมการอ้างอิง ช่วงเวลา และคะแนน
โฟลว์ข้อมูล: Query → Search → Fetch metadata → Transcript → Chunk → Embed → Retrieve top‑K → Claude Code synthesis → Report
ข้อกำหนดเบื้องต้นและการตั้งค่า
- คีย์ API:
YOUTUBE_API_KEY, ANTHROPIC_API_KEY (สำหรับ Claude Code)
- ทางเลือก:
OPENAI_API_KEY หรือการฝังในเครื่อง
google-api-python-client, youtube-transcript-api
faiss-cpu, numpy, pandas, tiktoken (หรือ sentencepiece)
requests, pydantic, tenacity
pip install google-api-python-client youtube-transcript-api faiss-cpu numpy pandas requests pydantic tenacity anthropic tiktoken
ตัวแปรสภาพแวดล้อม:
export YOUTUBE_API_KEY=YOUR_YT_KEY
export ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
ขั้นตอนที่ 1: การค้นหา YouTube พร้อมตัวกรอง
เราจะค้นหา YouTube และคืนข้อมูลเมตาที่มีโครงสร้าง: ชื่อ ช่อง วันที่เผยแพร่ ระยะเวลา จำนวนการดู (ถ้ามี) และ videoId
# file: yt_search.py
from googleapiclient.discovery import build
import os
YOUTUBE_API_KEY = os.environ — channel, date\n\n"
"---\n"
"JSON schema: {\"claims\":[{\"claim\":str,\"support\":[{\"video_id\":str,\"start\":float,\"end\":float}]}]}\n"
)
def call_claude(goal: str, passages: list[dict]):
passages_str = "\n\n".join(
f"[rank {p['rank']} | score {p['score']:.3f}] (vID={p.get('video_id','?')}, {p.get('start',0):.1f}-{p.get('end',0):.1f})\n{p['text']}"
for p in passages
)
msg = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1800,
temperature=0.2,
system=SYSTEM_PROMPT,
messages=[
{"role": "user", "content": USER_TEMPLATE.format(goal=goal, passages=passages_str)}
])
return msg.content[0].text
เคล็ดลับในการแจ้งเตือนเมื่อสร้าง YouTube research agent ด้วย Claude Code:
- ขอเอาต์พุตที่มีโครงสร้างในรูปแบบที่มนุษย์อ่านได้และเครื่องอ่านได้
- บังคับใช้การอ้างอิงที่มีการประทับเวลา
- ส่งเสริมการเปิดเผยความไม่แน่นอนและข้อขัดแย้ง
ขั้นตอนที่ 6: การรวมทุกอย่างเข้าด้วยกัน
มาเชื่อมต่อ query → search → transcripts → chunks → embeddings → retrieve → synthesize
# file: run_agent.py
from yt_search import search_youtube
from transcripts import fetch_transcript
from chunking import transcript_to_docs
from embeddings import VectorStore
from orchestrator import call_claude
from datetime import datetime
def build_corpus(query: str, max_videos=8):
results = search_youtube(query, max_results=max_videos)
corpus_docs = []
for r in results:
tx = fetch_transcript(r["video_id"]) or []
if not tx:
continue
docs = transcript_to_docs(tx)
for d in docs:
d.update({
"video_id": r["video_id"],
"title": r["title"],
"channel": r["channel"],
"url": r["url"],
})
corpus_docs.extend(docs)
return corpus_docs
def research(query: str, k=12):
corpus = build_corpus(query)
if not corpus:
return "No transcripts available."
vs = VectorStore
vs.add(corpus)
passages = vs.search(query, k=k)
md = call_claude(query, passages)
timestamp = datetime.utcnow.isoformat
return f"<!-- generated {timestamp} UTC -->\n\n" + md
if __name__ == "__main__":
print(research("LLM agents for YouTube research"))
YouTube research agent เวอร์ชันพื้นฐานนี้พร้อม Claude Code จะค้นหา ดึงข้อมูล และสังเคราะห์ข้อมูลเชิงลึกจากวิดีโอหลายรายการพร้อมการอ้างอิง อัปเกรดการฝังและเพิ่มแคชเพื่อให้พร้อมใช้งานจริง
การอัปเกรดเจ็ดอย่างเพื่อให้ยอดเยี่ยม
- การฝังที่ดีขึ้นและการค้นหาแบบไฮบริด
- สลับไปใช้การฝังคุณภาพสูงและเพิ่มการค้นหาคำหลัก BM25 ไฮบริดให้การเรียกคืนที่มากขึ้นสำหรับคำเฉพาะกลุ่มและความแม่นยำที่ดีขึ้นสำหรับหัวข้อที่เป็นนามธรรม
- ขยายเครื่องมือสำหรับข้อมูลเมตาที่สมบูรณ์ยิ่งขึ้น
- ดึงความคิดเห็น อัตราส่วนชอบ/ไม่ชอบ และอำนาจของช่อง เพิ่มตัวจัดอันดับใหม่ (cross‑encoder) สำหรับผู้สมัคร 100 อันดับแรก
- ใช้ Claude Code เพื่อเสนอแผนการวิจัย: คำถามย่อย สมมติฐาน และการตรวจสอบความครอบคลุม ดำเนินการซ้ำๆ จนกว่าจะถึงเกณฑ์ความครอบคลุม
- การติดตามหลักฐานและหลักฐานคัดค้าน
- สำหรับแต่ละข้อโต้แย้ง ให้บันทึกข้อมูลสนับสนุนและข้อมูลที่ขัดแย้งกัน นำเสนอทั้งสองอย่างในรายงาน เพิ่มคะแนนความน่าเชื่อถือ
- ใช้การตรวจจับฉากผ่านคำบรรยายหรือการกำหนดเวลาคำพูดของ Whisper สรุปแต่ละส่วนก่อนการสังเคราะห์ส่วนกลางเพื่อหลีกเลี่ยงการเจือจางบริบท
- จัดเก็บบทความ ถอดความ การฝัง และรายงานต่อคำค้นหา นำกลับมาใช้ใหม่เมื่อผู้ใช้ปรับแต่งตัวกรอง เพิ่มการลดข้อมูลซ้ำซ้อนตาม ID วิดีโอ
- รูปแบบการส่งออกและการจัดส่ง
- ส่งออก Markdown, PDF และ JSON ส่งอีเมลหรือ Slack แสดงช่วงเวลาเป็นการคลิกได้
?t=mmss ลิงก์
พรอมต์ที่คุณสามารถนำกลับมาใช้ใหม่ได้
ใช้เทมเพลตเหล่านี้ขณะสร้าง YouTube research agent ด้วย Claude Code
ระบบ: คุณคือตัวแทนวิจัยที่พิถีพิถัน สังเคราะห์จากบทความ ถอดความ YouTube หลายรายการ อ้างอิงแบบอินไลน์ด้วย [vID @ mm:ss] และรวมส่วนแหล่งที่มาพร้อม URL คืนทั้งสรุป Markdown และ payload JSON ของการอ้างสิทธิ์พร้อมการสนับสนุนที่มีการประทับเวลา
ผู้ใช้: เป้าหมายการวิจัย: {topic}
ข้อจำกัด: เน้นที่ {audience or scope}; ชอบแหล่งที่มาภายใน {date range}; รวมข้อขัดแย้ง
ข้อความที่เลือก (จัดอันดับ):
{retrieved_passages}
เอาต์พุต: สรุป → ข้อมูลเชิงลึกหลัก (หัวข้อย่อย) → คำพูดที่น่าสังเกต (พร้อมช่วงเวลา) → ข้อขัดแย้งและช่องว่าง → แหล่งที่มา จากนั้น JSON {"claims": ...}
มาตรการป้องกันและจริยธรรม
- เคารพสิทธิ์ของผู้สร้าง: เชื่อมโยงไปยังวิดีโอต้นฉบับและหลีกเลี่ยงการเผยแพร่บทความ ถอดความตามตัวอักษรจำนวนมาก
- โปร่งใส: แสดงว่าการอ้างสิทธิ์มาจากที่ใดโดยใช้ช่วงเวลาและ ID วิดีโอ
- หลีกเลี่ยงการสรุปมากเกินไป: รักษารายละเอียดปลีกย่อย แจ้งเมื่อคำบรรยายสร้างขึ้นโดยอัตโนมัติและมีแนวโน้มที่จะมีสัญญาณรบกวน
- จัดการหัวข้อที่ละเอียดอ่อนอย่างระมัดระวัง: เน้นความไม่แน่นอนและแสวงหาแหล่งที่มาที่หลากหลาย
การแก้ไขปัญหา: ปัญหาและการแก้ไขทั่วไป
- Fallback เป็น Whisper ลองภาษาอื่น ตรวจสอบว่าวิดีโอถูกบล็อกในภูมิภาคหรือไม่
- อัปเกรดการฝัง เพิ่ม BM25 เพิ่มการทับซ้อนของ chunk ปรับแต่งพารามิเตอร์ top‑K
- บังคับใช้ schema การอ้างอิงที่เข้มงวด ลงโทษการอ้างสิทธิ์ที่ไม่ได้รับการสนับสนุน กำหนดให้ช่วงเวลาที่แน่นอนที่แสดงใน chunk ที่ดึงมา
- แคชอย่างจริงจัง ลด
max_results คำขอแบทช์ เพิ่ม back‑off ด้วย tenacity
- สรุปแต่ละส่วน จำกัดโทเค็นสูงสุด ใช้พรอมต์การวางแผนพร้อมโครงร่างที่ชัดเจน
การวัดคุณภาพ
- Precision@K ของ chunk ที่ดึงมาเทียบกับชุดที่มีป้ายกำกับ
- อัตราความน่าเชื่อถือ: สัดส่วนของการอ้างสิทธิ์พร้อมการสนับสนุนที่มีการประทับเวลาที่ตรวจสอบได้
- ความครอบคลุม: จำนวนวิดีโอที่เกี่ยวข้องที่ไม่ซ้ำกันที่อ้างอิง
- เวลาแฝง: เวลาตั้งแต่ query ถึงรายงาน
ตัวอย่าง: การวิจัย "Vector Databases Explained"
- Query: "vector databases explained for developers 2025"
- ตัวกรอง: วิดีโอหลังปี 2023 ระยะเวลา 6–30 นาที
- ผลลัพธ์: เอเจนต์อ้างอิง 6 วิดีโอ เน้นข้อดีข้อเสียของ HNSW เทียบกับ IVF‑PQ อภิปรายต้นทุน/การเรียกคืน และเชื่อมโยงไปยังเกณฑ์มาตรฐาน ส่วนข้อขัดแย้งเปรียบเทียบการอ้างสิทธิ์ของผู้ขายกับผลลัพธ์โอเพนซอร์ส
อย่างไรก็ตาม: การทำให้สิ่งนี้เป็นอัตโนมัติภายในเวิร์กโฟลว์ของคุณ
หากคุณทำงานกับเอกสารและโค้ด การทำให้ไมล์สุดท้ายเป็นอัตโนมัติก็คุ้มค่า CLI ขนาดเล็กสามารถเรียกใช้ query ตอนกลางคืนและวางสรุป Markdown ลงในฐานความรู้ของคุณได้ คุณยังสามารถเชื่อมต่อกับเทมเพลตปัญหาสำหรับการวิจัย sprint ได้
สิ่งที่ควรทราบ: หากเวิร์กโฟลว์ของคุณอยู่ในแถบด้านข้างของเบราว์เซอร์หรือผู้ช่วย AI อยู่แล้ว เครื่องมือต่างๆ เช่น Sider.AI สามารถปรับปรุงวงจรการวิจัยให้มีประสิทธิภาพมากขึ้น—เลือกหัวข้อ เรียกใช้การค้นหา จับภาพบทความ ถอดความ และร่างสรุปที่ขับเคลื่อนด้วย Claude ในที่ที่คุณทำงาน สิ่งนี้สามารถประหยัดการสลับบริบทและทำให้การสร้าง YouTube research agent ด้วย Claude Code เป็นประโยชน์มากยิ่งขึ้นสำหรับทีม ประเด็นสำคัญ
- การสร้าง YouTube research agent ด้วย Claude Code เป็นวิธีที่มีประโยชน์สูงในการเปลี่ยนวิดีโอให้เป็นสรุปที่นำไปปฏิบัติได้
- สแต็กขั้นต่ำ: YouTube API + บทความ ถอดความ + การแบ่งส่วน + การฝัง + FAISS + การสังเคราะห์ Claude
- เส้นทางการอัปเกรด: การค้นหาแบบไฮบริด การจัดอันดับใหม่ ลูปการวางแผน และการติดตามการอ้างอิงที่เข้มงวด
- เริ่มต้นอย่างง่าย วัดความน่าเชื่อถือ และทำซ้ำเพื่อให้ได้ความน่าเชื่อถือ
ขั้นตอนต่อไป
- ใช้โมเดลการฝังจริงและการดึงข้อมูลแบบไฮบริด
- เพิ่มขั้นตอนการจัดอันดับใหม่และเมตริกคุณภาพ
- สร้างงานตามกำหนดเวลาเพื่อรีเฟรชหัวข้อทุกสัปดาห์
- บรรจุเป็น CLI และ UI เว็บแบบเบา
คำถามที่พบบ่อย
Q1:ฉันจะเริ่มต้นสร้าง YouTube research agent ด้วย Claude Code ได้อย่างไร
เริ่มต้นด้วยการค้นหา YouTube ดึงบทความ ถอดความ แบ่งส่วนเนื้อหา ฝังลงใน vector store และใช้ Claude Code เพื่อสังเคราะห์ผลลัพธ์ คู่มือด้านบนมีโค้ดทีละขั้นตอนเพื่อประกอบไปป์ไลน์ที่ใช้งานได้
Q2:ไลบรารีใดที่ดีที่สุดสำหรับ YouTube research agent
ใช้ YouTube Data API สำหรับการค้นหา youtube-transcript-api สำหรับคำบรรยาย FAISS สำหรับการค้นหาเวกเตอร์ และ Anthropic SDK เพื่อเรียก Claude Code คุณสามารถสลับการฝังด้วย OpenAI, Nomic หรือ BGE ได้
Q3:ฉันจะรับประกันการอ้างอิงและช่วงเวลาที่ถูกต้องได้อย่างไร
รักษาสัญญาณเริ่มต้น/สิ้นสุดไว้ระหว่างการแบ่งส่วนและกำหนดให้ Claude Code อ้างอิง [video_id @ mm:ss] ตรวจสอบว่าช่วงเวลาที่อ้างอิงมีอยู่ใน chunk ที่ดึงมาก่อนเผยแพร่
Q4:ฉันสามารถใช้เอเจนต์นี้สำหรับวิดีโอส่วนตัวหรือวิดีโอที่ไม่แสดงรายการได้หรือไม่
ได้ หากคุณสามารถเข้าถึงและดึงบทความ ถอดความ หรือเรียกใช้ ASR ในเครื่อง (เช่น Whisper) ได้ เคารพสิทธิ์เสมอและหลีกเลี่ยงการเผยแพร่เนื้อหาที่มีลิขสิทธิ์
Q5:ฉันจะปรับขนาด YouTube research agent นี้สำหรับทีมได้อย่างไร
เพิ่มแคช vector store ที่ใช้ร่วมกัน คิวงาน และการรันตามกำหนดเวลา ผสานรวมกับ Slack หรือ wiki และพิจารณาผู้ช่วยบนเบราว์เซอร์ เช่น Sider.AI เพื่อปรับปรุงเวิร์กโฟลว์ของนักวิจัย