สร้าง 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 สกัด Knowledge Graph จากโน้ตส่วนตัว: เปลี่ยนข้อความกระจัดกระจายให้เป็นเครือข่ายความรู้ออฟไลน์ 100% ด้วย Python

สร้าง AI Agent สกัด Knowledge Graph จากโน้ตส่วนตัว: เปลี่ยนข้อความกระจัดกระจายให้เป็นเครือข่ายความรู้ออฟไลน์ 100% ด้วย Python + Ollama

เปลี่ยนเอกสารและโน้ตข้อความร้อยแก้วให้เป็น Knowledge Graph แบบโครงสร้าง (Subject-Predicate-Object) โดยอัตโนมัติ ด้วยสคริปต์ Python ร่วมกับ Local LLM ในเครื่อง ช่วยสกัดความสัมพันธ์ระหว่างความคิด เทคโนโลยี และบุคคลอย่างเป็นระบบออฟไลน์ 100%

By Linn
บอกลา Audible: คู่มือติดตั้ง Audiobookshelf เซิร์ฟเวอร์หนังสือเสียงและ eBook ส่วนตัวบน Home Server ด้วย Docker

บอกลา Audible: คู่มือติดตั้ง Audiobookshelf เซิร์ฟเวอร์หนังสือเสียงและ eBook ส่วนตัวบน Home Server ด้วย Docker

เปลี่ยนคลังหนังสือเสียงและดิจิทัลไฟล์ของคุณให้กลายเป็นเซิร์ฟเวอร์สตรีมมิ่งส่วนตัว ด้วย Audiobookshelf บน Home Server ผ่าน Docker พร้อมวิธีซิงค์ความคืบหน้าการฟังข้ามอุปกรณ์แบบเรียลไทม์

By Linn
สร้าง Private AI Router ในเครื่องตัวเอง: คู่มือตั้งค่า LiteLLM สลับโมเดลอัจฉริยะตามประเภทงานแบบออฟไลน์ 100%

สร้าง Private AI Router ในเครื่องตัวเอง: คู่มือตั้งค่า LiteLLM สลับโมเดลอัจฉริยะตามประเภทงานแบบออฟไลน์ 100%

เรียนรู้วิธีตั้งค่า LiteLLM เป็น AI Gateway และ Router ในเครื่องตัวเอง เพื่อสลับรันโมเดล Ollama อัตโนมัติ ทั้งโมเดลเน้นความเร็ว โมเดลคิดวิเคราะห์เชิงลึก และโมเดลวิเคราะห์ภาพ ปลอดภัย 100% ไม่ต้องพึ่งคลาวด์

By Linn
บอกลาการจำพอร์ตและ SSL หมดอายุ: คู่มือติดตั้ง Nginx Proxy Manager จัดการ Domain และ HTTPS บน Home Server ด้วย Docker

บอกลาการจำพอร์ตและ SSL หมดอายุ: คู่มือติดตั้ง Nginx Proxy Manager จัดการ Domain และ HTTPS บน Home Server ด้วย Docker

เปลี่ยนการเข้าถึงบริการบน Home Server จาก IP และพอร์ตยุ่งยาก ให้กลายเป็นชื่อโดเมนส่วนตัวพร้อมระบบ SSL (HTTPS) อัตโนมัติด้วย Nginx Proxy Manager บน Docker ทำง่ายผ่าน Web UI ไร้บรรทัดคำสั่งซับซ้อน

By Linn