สร้าง AI Agent สกัดและสังเคราะห์ Book Highlights: เปลี่ยนโน้ตอ่านหนังสือเป็น Book Summary อัจฉริยะใน Obsidian ด้วย Python + Ollama
เปลี่ยนไฮไลต์และโน้ตย่อยจากการอ่านหนังสือให้กลายเป็น Book Summary ที่ทรงคุณค่าด้วย AI Agent ออฟไลน์ส่วนตัวที่จะสกัด Core Key Takeaways, Actionable Insights และเชื่อมโยงเข้ากับระบบ Second Brain แบบ Local 100%
สำหรับผู้ที่รักการอ่านและมุ่งมั่นพัฒนาตัวเอง ปัญหาใหญ่ที่เรามักจะพบเจอร่วมกันหลังจากอ่านหนังสือจบไปหลายสิบเล่ม คือ "อ่านแล้วลืม" หรือ "ไฮไลต์ไว้แต่ไม่ได้นำมาใช้จริง"
หลายคนใช้ e-Reader อย่าง Kindle หรือจดบันทึกโควทเด็ดๆ ไว้ในแอปพลิเคชันอย่าง Obsidian ทว่าไฮไลต์เหล่านั้นมักถูกทิ้งไว้ในคลังโน้ตกลายเป็นขยะดิจิทัล (Digital Hoarding) เพราะการกลับมานั่งอ่านไฮไลต์ทีละบรรทัดเพื่อเรียบเรียงสรุปใหม่ต้องใช้พลังสมองและเวลาอย่างมาก
นี่คือจุดที่ Cognitive Automation จะเข้ามาปฏิรูปการเรียนรู้ของคุณ ในบทความนี้ เราจะมาสร้าง AI Agent ส่วนตัว ด้วย Python และ Ollama ที่จะทำหน้าที่อ่านไฟล์ไฮไลต์และข้อความที่คุณโน้ตไว้ขณะอ่านหนังสือ นำมาสกัดแก่นความคิด (Core Thesis), ประเด็นสำคัญ (Key Takeaways) และข้อปฏิบัตินำไปใช้จริง (Actionable Insights) แล้วสร้างเป็น Book Summary อัจฉริยะ บันทึกลง Obsidian Vault ของคุณแบบ Local 100% ปลอดภัย ไร้ค่าใช้จ่าย API รายเดือน
ทำไมต้องสังเคราะห์ Book Highlights ด้วย Local AI?
การใช้ AI สรุปหนังสือไม่ใช่เรื่องใหม่ แต่การทำผ่านระบบ Local-first AI ให้ประโยชน์ที่เหนือกว่าการใช้งาน Cloud AI ทั่วไป:
- ความเป็นส่วนตัวของความคิดและความรู้สึก (Total Privacy): ในโน้ตการอ่านหนังสือ เรามักแทรกความคิดเห็นส่วนตัว ความรู้สึก หรือเป้าหมายชีวิตลงไป การประมวลผลออฟไลน์บนเครื่องตัวเองทำให้มั่นใจว่าความรู้สึกและตัวตนของคุณจะไม่ถูกส่งออกไปภายนอก
- การจัดรูปแบบที่ตรงกับ Second Brain ของคุณ: คุณสามารถออกแบบ Prompt ให้ Agent เขียนโครงสร้าง Markdown, ใส่ Tag, และสร้าง Bi-directional Links (
[[Note Name]]) ให้เข้ากับคลัง Obsidian ของคุณได้เป๊ะๆ - ประมวลผลหนังสือได้ไม่จำกัด (Unlimited Processing): ไม่ว่าคุณจะมีไฮไลต์จากหนังสือ 5 เล่ม หรือ 100 เล่ม คุณก็สามารถรันสคริปต์สังเคราะห์ได้เรื่อยๆ โดยไม่ต้องกังวลเรื่อง Token Count หรือค่าบริการ Cloud
โครงสร้างการทำงานของ AI Book Summary Agent
ระบบถูกวางแบบแผนให้ทำงานอย่างกระชับและเป็นขั้นตอนดังนี้:
[ Obsidian Highlight Note ] --> [ Python Script ] --> [ Local Ollama LLM ] --> [ Structured Book Summary ]
(ไฮไลต์ดิบจากการอ่าน) (อ่านไฟล์ & ส่ง Prompt) (สังเคราะห์ความคิด) (โน้ตสรุปใน Obsidian)
- Input Stage: อ่านไฟล์ไฮไลต์ดิบ (เช่น ไฮไลต์ที่ส่งมาจาก Kindle หรือโน้ตย่อยจากการอ่าน) ในโฟลเดอร์
Reading/Highlights/ - Analysis Stage: ส่งเนื้อหาไฮไลต์เข้าสู่ Ollama โดยใช้ Prompt ที่ออกแบบให้คิดแบบ Executive Editor
- Output Stage: นำผลลัพธ์ที่ได้มาสร้างเป็นไฟล์ Book Summary โครงสร้างสวยงาม บันทึกลงโฟลเดอร์
Reading/Summaries/ใน Obsidian พร้อมใช้งานทันที
สเปกและเครื่องมือที่ต้องใช้
- Python 3.8+ (ไม่ต้องติดตั้ง Standard Library เพิ่มเติม)
- Ollama (เปิดใช้งาน service อยู่ที่
http://localhost:11434) - LLM Model: แนะนำ
gemma2หรือllama3.1(ดาวน์โหลดด้วยคำสั่งollama pull gemma2) - Obsidian Vault: โฟลเดอร์เก็บโน้ตของคุณ
โค้ด Python สำหรับสร้าง AI Book Summary Agent
สร้างไฟล์ book_summary_agent.py ในคอมพิวเตอร์ของคุณ แล้วคัดลอกโค้ดด้านล่างนี้ไปวาง:
import os
import json
import urllib.request
from datetime import datetime
# --- ตั้งค่าตำแหน่งโฟลเดอร์ Obsidian ---
# เปลี่ยนพาร์ทด้านล่างนี้ให้ตรงกับโฟลเดอร์ Obsidian Vault ของคุณ
OBSIDIAN_VAULT_DIR = os.path.expanduser("~/ObsidianVault")
HIGHLIGHTS_DIR = os.path.join(OBSIDIAN_VAULT_DIR, "Reading", "Highlights")
SUMMARIES_DIR = os.path.join(OBSIDIAN_VAULT_DIR, "Reading", "Summaries")
# ตั้งค่าโมเดล Ollama ที่ต้องการใช้
OLLAMA_MODEL = "gemma2"
OLLAMA_URL = "http://localhost:11434/api/generate"
PROMPT_TEMPLATE = """
คุณคือผู้เชี่ยวชาญด้านการสังเคราะห์ความรู้และการจัดทำ Book Summary ระดับโลก
หน้าที่ของคุณคืออ่านไฮไลต์และข้อความบันทึกจากการอ่านหนังสือด้านล่างนี้ แล้วสังเคราะห์ออกมาเป็นโครงสร้าง Book Summary ภาษาไทยที่ทรงคุณค่า
[ไฮไลต์และบันทึกดิบ]:
{raw_highlights}
โปรดจัดทำรายงานสรุปตามโครงสร้างดังต่อไปนี้อย่างเคร่งครัด:
1. **แก่นความคิดหลัก (Core Thesis):** อธิบายแนวคิดหลักของหนังสือเล่มนี้ใน 2-3 ประโยค
2. **3-5 ประเด็นสำคัญ (Key Takeaways):** สรุปสาระสำคัญ พร้อมคำอธิบายสั้นๆ ที่เข้าใจง่าย
3. **การนำไปปฏิบัติจริง (Actionable Insights):** สิ่งที่ผู้อ่านสามารถนำไปลงมือทำได้ทันที (Action Items) 3 ข้อ
4. **โควททรงพลัง (Memorable Quote):** คัดเลือกโควทที่ทรงพลังที่สุด 1-2 ข้อความจากไฮไลต์
5. **แท็กที่เกี่ยวข้อง (Suggested Tags):** เสนอแนะ Tag ภาษาอังกฤษ 3-5 แท็ก (รูปแบบ #tag)
ตอบเป็นภาษาไทยที่กระชับ อ่านง่าย และเขียนอยู่ในรูปแบบ Markdown
"""
def query_ollama(prompt):
payload = {
"model": OLLAMA_MODEL,
"prompt": prompt,
"stream": False
}
data = json.dumps(payload).encode('utf-8')
req = urllib.request.Request(OLLAMA_URL, data=data, headers={'Content-Type': 'application/json'})
try:
with urllib.request.urlopen(req) as response:
result = json.loads(response.read().decode('utf-8'))
return result.get('response', '')
except Exception as e:
print(f"❌ เกิดข้อผิดพลาดในการเชื่อมต่อ Ollama: {e}")
return None
def process_book_highlights(filename):
input_path = os.path.join(HIGHLIGHTS_DIR, filename)
if not os.path.exists(input_path):
print(f"❌ ไม่พบไฟล์: {input_path}")
return
with open(input_path, 'r', encoding='utf-8') as f:
raw_highlights = f.read()
book_name = os.path.splitext(filename)[0]
print(f"📖 กำลังสังเคราะห์ Book Summary สำหรับหนังสือ: {book_name}...")
prompt = PROMPT_TEMPLATE.format(raw_highlights=raw_highlights)
ai_response = query_ollama(prompt)
if not ai_response:
print("❌ ไม่สามารถสร้างสรุปได้")
return
# สร้างโฟลเดอร์ปลายทางหากยังไม่มี
os.makedirs(SUMMARIES_DIR, exist_ok=True)
today_str = datetime.now().strftime("%Y-%m-%d")
output_filename = f"Summary - {book_name}.md"
output_path = os.path.join(SUMMARIES_DIR, output_filename)
file_content = f"""---
title: "Summary: {book_name}"
date: "{today_str}"
type: "book-summary"
source_note: "[[{book_name}]]"
---
# 📚 Book Summary: {book_name}
> สังเคราะห์อัตโนมัติด้วย Local AI Agent เมื่อ {today_str}
{ai_response}
---
*บันทึกอัตโนมัติเข้าสู่ระบบ Second Brain จากไฟล์ไฮไลต์ดิบ `[[{filename}]]`*
"""
with open(output_path, 'w', encoding='utf-8') as f:
f.write(file_content)
print(f"✅ บันทึก Book Summary เรียบร้อยแล้วที่: {output_path}")
if __name__ == "__main__":
# ตัวอย่างการใช้งาน: อ่านไฟล์ Atomic-Habits-Highlights.md ในโฟลเดอร์ Reading/Highlights
target_file = "Atomic-Habits-Highlights.md"
# หากยังไม่มีไฟล์ตัวอย่าง ระบบจะสร้างไฟล์ทดสอบให้โดยอัตโนมัติ
os.makedirs(HIGHLIGHTS_DIR, exist_ok=True)
sample_path = os.path.join(HIGHLIGHTS_DIR, target_file)
if not os.path.exists(sample_path):
sample_data = """
- พฤติกรรมของเราเปลี่ยนไปตามสภาพแวดล้อม การเปลี่ยนสภาพแวดล้อมง่ายกว่าการฝืนใช้แรงปรารถนา (Willpower)
- กฎ 4 ข้อของการสร้างนิสัย: ทำให้อยู่ในสายตา, ทำให้ดึงดูดใจ, ทำให้ทำได้ง่าย, ทำให้รู้สึกพึงพอใจทันที
- การปรับปรุงตัวเองวันละ 1% รวมกัน 1 ปี คุณจะเก่งขึ้น 37 เท่า (Compound Effect)
- อย่าโฟกัสที่เป้าหมาย (Goals) ให้โฟกัสที่ระบบ (Systems) เพราะเป้าหมายบอกทิศทาง แต่ระบบทำให้เกิดความก้าวหน้า
- Identity-based habits: การเปลี่ยนนิสัยที่ยั่งยืนที่สุดคือการเปลี่ยนความเชื่อเกี่ยวกับตัวตนของคุณเอง
"""
with open(sample_path, 'w', encoding='utf-8') as f:
f.write(sample_data)
print(f"📝 สร้างไฟล์ไฮไลต์ตัวอย่างที่: {sample_path}")
process_book_highlights(target_file)
วิธีการนำไปใช้งานจริง
- เตรียมไฟล์ไฮไลต์: นำไฮไลต์จากการอ่านหนังสือของคุณไปวางไว้ในโฟลเดอร์
Reading/Highlights/ของ Obsidian (ตั้งชื่อไฟล์ เช่นAtomic-Habits-Highlights.md) - รัน Ollama Service: ตรวจสอบให้แน่ใจว่า Ollama กำลังรันอยู่บนเครื่องของคุณ
- สั่งรันสคริปต์ Python:
bash python3 book_summary_agent.py - ตรวจรับผลลัพธ์ใน Obsidian: เปิด Obsidian แล้วเข้าไปดูในโฟลเดอร์
Reading/Summaries/คุณจะพบโน้ตสรุปเล่มใหม่ชื่อSummary - Atomic-Habits-Highlights.mdที่ประกอบด้วยแก่นความคิดและข้อปฏิบัติอย่างครบถ้วน!
สรุปและก้าวถัดไป
การเปลี่ยนบทบาทของเราจากการ "ผู้สะสมความรู้" มาเป็น "ผู้สังเคราะห์และนำความรู้ไปใช้" คือหัวใจสำคัญของการสร้าง Second Brain การใช้ Cognitive Automation ทำหน้าที่ย่อยข้อมูลดิบแทนเรา ช่วยลดความเหนื่อยล้าทางสมอง (Cognitive Load) และเปิดโอกาสให้เราใช้พลังงานสมองไปกับการลงมือปฏิบัติตาม Actionable Insights ที่ได้มา
คุณสามารถนำสคริปต์นี้ไปต่อยอดให้สแกนโฟลเดอร์ Reading/Highlights/ อัตโนมัติทุกสัปดาห์ หรือตั้งค่า Cron Job บน Home Server เพื่อให้ระบบสร้างสรุปหนังสือเล่มใหม่รอไว้ให้คุณในทุกๆ เช้าวันจันทร์ได้อย่างสมบูรณ์แบบ!