สร้าง AI Agent สกัดและสังเคราะห์ Book Highlights: เปลี่ยนโน้ตอ่านหนังสือเป็น Book Summary อัจฉริยะใน Obsidian ด้วย Python + Ollama

เปลี่ยนไฮไลต์และโน้ตย่อยจากการอ่านหนังสือให้กลายเป็น Book Summary ที่ทรงคุณค่าด้วย AI Agent ออฟไลน์ส่วนตัวที่จะสกัด Core Key Takeaways, Actionable Insights และเชื่อมโยงเข้ากับระบบ Second Brain แบบ Local 100%

Share
สร้าง AI Agent สกัดและสังเคราะห์ Book Highlights: เปลี่ยนโน้ตอ่านหนังสือเป็น Book Summary อัจฉริยะใน Obsidian ด้วย Python + O

สำหรับผู้ที่รักการอ่านและมุ่งมั่นพัฒนาตัวเอง ปัญหาใหญ่ที่เรามักจะพบเจอร่วมกันหลังจากอ่านหนังสือจบไปหลายสิบเล่ม คือ "อ่านแล้วลืม" หรือ "ไฮไลต์ไว้แต่ไม่ได้นำมาใช้จริง"

หลายคนใช้ 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 ทั่วไป:

  1. ความเป็นส่วนตัวของความคิดและความรู้สึก (Total Privacy): ในโน้ตการอ่านหนังสือ เรามักแทรกความคิดเห็นส่วนตัว ความรู้สึก หรือเป้าหมายชีวิตลงไป การประมวลผลออฟไลน์บนเครื่องตัวเองทำให้มั่นใจว่าความรู้สึกและตัวตนของคุณจะไม่ถูกส่งออกไปภายนอก
  2. การจัดรูปแบบที่ตรงกับ Second Brain ของคุณ: คุณสามารถออกแบบ Prompt ให้ Agent เขียนโครงสร้าง Markdown, ใส่ Tag, และสร้าง Bi-directional Links ([[Note Name]]) ให้เข้ากับคลัง Obsidian ของคุณได้เป๊ะๆ
  3. ประมวลผลหนังสือได้ไม่จำกัด (Unlimited Processing): ไม่ว่าคุณจะมีไฮไลต์จากหนังสือ 5 เล่ม หรือ 100 เล่ม คุณก็สามารถรันสคริปต์สังเคราะห์ได้เรื่อยๆ โดยไม่ต้องกังวลเรื่อง Token Count หรือค่าบริการ Cloud

โครงสร้างการทำงานของ AI Book Summary Agent

ระบบถูกวางแบบแผนให้ทำงานอย่างกระชับและเป็นขั้นตอนดังนี้:

[ Obsidian Highlight Note ]  -->  [ Python Script ]  -->  [ Local Ollama LLM ]  -->  [ Structured Book Summary ]
(ไฮไลต์ดิบจากการอ่าน)             (อ่านไฟล์ & ส่ง Prompt)     (สังเคราะห์ความคิด)         (โน้ตสรุปใน Obsidian)
  1. Input Stage: อ่านไฟล์ไฮไลต์ดิบ (เช่น ไฮไลต์ที่ส่งมาจาก Kindle หรือโน้ตย่อยจากการอ่าน) ในโฟลเดอร์ Reading/Highlights/
  2. Analysis Stage: ส่งเนื้อหาไฮไลต์เข้าสู่ Ollama โดยใช้ Prompt ที่ออกแบบให้คิดแบบ Executive Editor
  3. 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)

วิธีการนำไปใช้งานจริง

  1. เตรียมไฟล์ไฮไลต์: นำไฮไลต์จากการอ่านหนังสือของคุณไปวางไว้ในโฟลเดอร์ Reading/Highlights/ ของ Obsidian (ตั้งชื่อไฟล์ เช่น Atomic-Habits-Highlights.md)
  2. รัน Ollama Service: ตรวจสอบให้แน่ใจว่า Ollama กำลังรันอยู่บนเครื่องของคุณ
  3. สั่งรันสคริปต์ Python: bash python3 book_summary_agent.py
  4. ตรวจรับผลลัพธ์ใน Obsidian: เปิด Obsidian แล้วเข้าไปดูในโฟลเดอร์ Reading/Summaries/ คุณจะพบโน้ตสรุปเล่มใหม่ชื่อ Summary - Atomic-Habits-Highlights.md ที่ประกอบด้วยแก่นความคิดและข้อปฏิบัติอย่างครบถ้วน!

สรุปและก้าวถัดไป

การเปลี่ยนบทบาทของเราจากการ "ผู้สะสมความรู้" มาเป็น "ผู้สังเคราะห์และนำความรู้ไปใช้" คือหัวใจสำคัญของการสร้าง Second Brain การใช้ Cognitive Automation ทำหน้าที่ย่อยข้อมูลดิบแทนเรา ช่วยลดความเหนื่อยล้าทางสมอง (Cognitive Load) และเปิดโอกาสให้เราใช้พลังงานสมองไปกับการลงมือปฏิบัติตาม Actionable Insights ที่ได้มา

คุณสามารถนำสคริปต์นี้ไปต่อยอดให้สแกนโฟลเดอร์ Reading/Highlights/ อัตโนมัติทุกสัปดาห์ หรือตั้งค่า Cron Job บน Home Server เพื่อให้ระบบสร้างสรุปหนังสือเล่มใหม่รอไว้ให้คุณในทุกๆ เช้าวันจันทร์ได้อย่างสมบูรณ์แบบ!

Read more

สร้าง AI Agent สำหรับการทำ Decision Log อัตโนมัติ: เปลี่ยนทุกการตัดสินใจสำคัญให้เป็นบทเรียนเพื่อการเติบโต

สร้าง AI Agent สำหรับการทำ Decision Log อัตโนมัติ: เปลี่ยนทุกการตัดสินใจสำคัญให้เป็นบทเรียนเพื่อการเติบโต

เรียนรู้วิธีใช้ AI Agent ช่วยบันทึกและวิเคราะห์การตัดสินใจสำคัญในชีวิตประจำวัน เพื่อเปลี่ยนทุกทางเลือกให้กลายเป็นฐานข้อมูลบทเรียนที่มีค่าสำหรับอนาคต

By Linn
คู่มือใช้งาน Obsidian Graph View: เปลี่ยนใยแมงมุมความรู้ให้เป็นเครื่องมือนำทางความคิดใน Second Brain

คู่มือใช้งาน Obsidian Graph View: เปลี่ยนใยแมงมุมความรู้ให้เป็นเครื่องมือนำทางความคิดใน Second Brain

Graph View ใน Obsidian ไม่ใช่แค่ภาพกราฟสวยๆ ไว้ดูเล่น มาเรียนรู้วิธีปรับแต่ง Local Graph, Color Groups และฟิลเตอร์ เพื่อเปลี่ยนเครือข่ายความรู้ให้กลายเป็นเครื่องมือนำทางความคิดจริง

By Linn
สร้าง Smart Clipboard Agent: ดักจับและคัดแยกข้อความที่คัดลอกระหว่างวัน บันทึกเข้า Obsidian อัตโนมัติด้วย Python + Ollama

สร้าง Smart Clipboard Agent: ดักจับและคัดแยกข้อความที่คัดลอกระหว่างวัน บันทึกเข้า Obsidian อัตโนมัติด้วย Python + Ollama

เปลี่ยนข้อความ โค้ด ลิงก์ และไอเดียที่คุณคัดลอกระหว่างวันให้กลายเป็นบันทึกความรู้ที่มีบริบทใน Second Brain โดยอัตโนมัติ ด้วยสคริปต์ Python คอยมอนิเตอร์คลิปบอร์ดคู่กับ Local LLM บน Ollama แบบออฟไลน์ 100%

By Linn
บอกลาคำสั่ง Docker CLI ที่ซับซ้อน: คู่มือติดตั้ง Dockge จัดการ Docker Compose บน Home Server อย่างมือโปร

บอกลาคำสั่ง Docker CLI ที่ซับซ้อน: คู่มือติดตั้ง Dockge จัดการ Docker Compose บน Home Server อย่างมือโปร

ยกระดับการจัดการคอนเทนเนอร์บน Home Server ให้ง่ายและเป็นระเบียบ ด้วย Dockge ตัวจัดการ Docker Compose สไตล์มินิมอลที่เน้นความโปร่งใส ควบคุมไฟล์ .yml ได้โดยตรง 100%

By Linn