สร้าง AI Agent สรุปข่าวสารรายวันเข้าระบบ Second Brain: วิธีเซ็ต Cognitive Automation แบบ Local 100%

ในแต่ละวันเราต้องเผชิญกับคลื่นข้อมูลมหาศาล มาสร้าง AI Agent ในเครื่องตัวเองด้วย Python และ Ollama เพื่อสรุปข่าวสารและส่งตรงเข้า Obsidian แบบออฟไลน์และเป็นส่วนตัว 100% กัน

Share
สร้าง AI Agent สรุปข่าวสารรายวันเข้าระบบ Second Brain: วิธีเซ็ต Cognitive Automation แบบ Local 100%

ในยุคดิจิทัลที่มีข้อมูลข่าวสารและบทความเทคโนโลยีอัปเดตใหม่ทุกนาที ปัญหาที่พวกเราหลายคนพบเจอคือ "Information Overload" หรือการมีข้อมูลท่วมท้นจนสมองรับไม่ไหว การต้องคอยกดเข้าไปอ่านทุกเว็บไซต์ ทุกฟีดข่าว เพื่อตามหาสาระสำคัญ ทำให้เราสูญเสียพลังงานสมอง (Cognitive Load) ไปกับสิ่งที่ไม่จำเป็นในแต่ละวัน

นี่คือจุดที่แนวคิด Cognitive Automation เข้ามามีบทบาท นั่นคือการสร้างระบบอัตโนมัติเพื่อทำหน้าที่แทนกระบวนการคิดขั้นพื้นฐานของเรา เช่น การคัดกรอง การคัดแยก และการสรุปข้อมูล

แม้ว่าเราจะสามารถใช้เครื่องมือ Cloud-based อย่าง Zapier, Make หรือ OpenAI API ในการสร้างระบบสรุปข้อมูลเหล่านี้ได้อย่างรวดเร็ว แต่ก็ต้องแลกมาด้วยความกังวลเรื่อง ความเป็นส่วนตัวของข้อมูล และ ค่าบริการรายเดือน ที่อาจบานปลาย ในบทความนี้ เราจะมาสร้าง AI Agent ส่วนตัวที่ทำงานบนเครื่องคอมพิวเตอร์ของคุณเอง 100% เพื่อทำหน้าที่ดึงข้อมูลฟีดข่าวมาให้ local LLM สรุปเนื้อหา แล้วเซฟลง Obsidian vault โดยอัตโนมัติ


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

ก่อนเริ่มลงมือเขียนโค้ด เรามาดูแผนภาพการไหลของข้อมูล (Data Flow) ในระบบที่เรากำลังจะสร้างกันก่อน:

  1. ดึงข้อมูล (Fetch): สคริปต์ Python ทำการดึงข่าวสารล่าสุดจาก RSS Feed ของเว็บไซต์ที่เราสนใจ
  2. ประมวลผลและสรุป (Summarize): ส่งเนื้อหาข่าวเข้าสู่ Ollama ที่รันอยู่ในเครื่องเพื่อสรุปประเด็นด้วยโมเดลภาษาขนาดใหญ่ (Local LLM)
  3. จัดเก็บ (Store): บันทึกผลสรุปเป็นไฟล์ Markdown (.md) ลงในโฟลเดดอร์ของ Obsidian Vault เพื่อรอให้เราเข้ามาอ่าน

ทุกขั้นตอนการทำงานนี้เกิดขึ้นภายในเครื่องคอมพิวเตอร์ของคุณเองทั้งหมด ไม่มีการส่งข้อมูลใดๆ ออกไปยังเซิร์ฟเวอร์ภายนอก ทำให้ปลอดภัยและเป็นส่วนตัวอย่างแน่นอน


สิ่งที่ต้องเตรียมก่อนเริ่มสร้าง

เพื่อให้ระบบ Cognitive Automation นี้ทำงานได้ คุณต้องติดตั้งโปรแกรมเหล่านี้ในเครื่องก่อน:

  1. Python 3: ติดตั้งในระบบสำหรับรันสคริปต์ดึงฟีดและควบคุมการส่งงานให้ AI
  2. Ollama: สำหรับรัน Local LLM ในเครื่อง (ดาวน์โหลดได้จาก ollama.com)
  3. Obsidian: แอปพลิเคชันจดโน้ตแนว Second Brain ที่ใช้ระบบไฟล์ Markdown

หลังจากติดตั้ง Ollama เรียบร้อยแล้ว ให้เปิด Terminal หรือ Command Prompt แล้วสั่งดาวน์โหลดโมเดลที่ต้องการใช้งาน ในคู่มือนี้เราจะใช้ llama3 หรือ gemma2 ซึ่งเป็นโมเดลที่เข้าใจและประมวลผลภาษาไทยได้ดี:

ollama pull llama3

เขียนสคริปต์ Python ควบคุม AI Agent

มาเริ่มเขียนโค้ดภาษา Python เพื่อสร้างตัวตนของ AI Agent สรุปข่าวสารกันครับ ให้สร้างไฟล์ชื่อ summarizer_agent.py และใส่โค้ดดังต่อไปนี้:

import urllib.request
import json
import xml.etree.ElementTree as ET
import os
from datetime import datetime

# ตั้งค่าตำแหน่ง Obsidian Vault และ URL ของ RSS Feed ที่ต้องการสรุป
OBSIDIAN_VAULT_PATH = "/home/linn/notes/Daily Summaries" # เปลี่ยนเป็น Path โฟลเดอร์ใน Obsidian ของคุณ
RSS_FEED_URL = "https://www.blognone.com/atom.xml" # ตัวอย่างฟีดข่าวจาก Blognone
LLM_MODEL = "llama3" # โมเดลที่ต้องการใช้งานใน Ollama

def fetch_rss_titles(url):
    print("กำลังดึงข่าวจาก RSS Feed...")
    req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
    with urllib.request.urlopen(req) as response:
        xml_data = response.read()

    root = ET.fromstring(xml_data)
    articles = []

    # รองรับทั้งรูปแบบ RSS 2.0 และ Atom Feed
    namespaces = {'atom': 'http://www.w3.org/2005/Atom'}
    entries = root.findall('atom:entry', namespaces) or root.findall('.//item')

    for entry in entries[:5]: # ดึงมาเฉพาะ 5 ข่าวล่าสุดเพื่อไม่ให้คิวยาวเกินไป
        title = entry.find('atom:title', namespaces) or entry.find('title')
        link = entry.find('atom:link', namespaces) or entry.find('link')

        title_text = title.text.strip() if title is not None else ""
        link_href = link.attrib.get('href', '').strip() if link is not None and 'href' in link.attrib else (link.text.strip() if link is not None else "")

        articles.append({"title": title_text, "link": link_href})
    return articles

def generate_summary(article_title):
    prompt = f"กรุณาสรุปข่าวดังต่อไปนี้ให้กระชับ เป็นภาษาไทย โดยเน้นประเด็นสำคัญและผลกระทบที่อาจเกิดขึ้นเป็นข้อๆ (Bullet points):\n\nหัวข้อข่าว: {article_title}"

    url = "http://localhost:11434/api/generate"
    data = {
        "model": LLM_MODEL,
        "prompt": prompt,
        "stream": False
    }

    req = urllib.request.Request(
        url, 
        data=json.dumps(data).encode('utf-8'), 
        headers={'Content-Type': 'application/json'}
    )

    try:
        with urllib.request.urlopen(req) as response:
            res_data = json.loads(response.read().decode('utf-8'))
            return res_data.get('response', 'ไม่สามารถสรุปได้')
    except Exception as e:
        return f"เกิดข้อผิดพลาดในการเชื่อมต่อ Ollama: {str(e)}"

def main():
    articles = fetch_rss_titles(RSS_FEED_URL)
    if not articles:
        print("ไม่พบข่าวใหม่")
        return

    date_str = datetime.now().strftime("%Y-%m-%d")
    content = f"---\ntitle: Daily News Summary {date_str}\ndate: {date_str}\ntags: [news, daily-summary, cognitive-automation]\n---\n\n"
    content += f"# รายงานสรุปข่าวรายวันประจำวันที่ {date_str}\n\n"

    for i, article in enumerate(articles, 1):
        print(f"กำลังประมวลผลข่าวที่ {i}: {article['title']}")
        summary = generate_summary(article['title'])
        content += f"## [{article['title']}]({article['link']})\n\n"
        content += f"**บทสรุปโดย AI:**\n{summary}\n\n---\n\n"

    # ตรวจสอบและสร้างโฟลเดอร์สำหรับบันทึกผล
    os.makedirs(OBSIDIAN_VAULT_PATH, exist_ok=True)
    file_path = os.path.join(OBSIDIAN_VAULT_PATH, f"Summary-{date_str}.md")

    with open(file_path, "w", encoding="utf-8") as f:
        f.write(content)
    print(f"บันทึกสรุปข่าวประจำวันเรียบร้อยแล้วที่: {file_path}")

if __name__ == "__main__":
    main()

การตั้งค่าให้สคริปต์ทำงานอัตโนมัติ (Automation)

เมื่อเราเขียนสคริปต์ประมวลผลเสร็จแล้ว ขั้นตอนสุดท้ายคือการตั้งเวลาให้ระบบรันโดยอัตโนมัติ เพื่อให้มันเป็น Cognitive Automation ที่ช่วยผ่อนแรงสมองอย่างแท้จริงโดยที่เราไม่ต้องคอยกดสั่งงานเอง

สำหรับผู้ใช้ Linux และ macOS (ผ่าน Cron)

เปิด Terminal และรันคำสั่ง:

crontab -e

เพิ่มบรรทัดนี้ลงไปที่ด้านล่างสุดของไฟล์ เพื่อสั่งให้สคริปต์นี้เริ่มทำงานในเวลา 8.00 น. ของทุกวัน:

0 8 * * * /usr/bin/python3 /home/linn/summarizer_agent.py

(หมายเหตุ: โปรดปรับ Path ของไฟล์ Python และสคริปต์ให้ตรงตามจริงในระบบของคุณ)

สำหรับผู้ใช้ Windows (ผ่าน Task Scheduler)

  1. เปิด Task Scheduler แล้วเลือก Create Basic Task
  2. ตั้งชื่อ Task เช่น Local AI News Summarizer และกำหนด Trigger เป็น Daily
  3. ในส่วน Action ให้เลือก Start a Program
  4. ในช่อง Program/script ให้ระบุตำแหน่งของไฟล์ python.exe และใส่ Path ของสคริปต์ในช่อง Add arguments

บทสรุปและความคุ้มค่า

การสร้างระบบ Cognitive Automation ด้วยการเชื่อมต่อเครื่องมือแบบ Local-first นอกเหนือจากจะได้ ความเป็นส่วนตัวสูงสุด แล้ว มันยังมีข้อดีอื่นๆ อีกมากมาย:

  • ไม่มีข้อจำกัดด้านปริมาณการใช้งาน: คุณสามารถรันสคริปต์นี้กี่รอบ สรุปข่าววันละกี่สิบบทความก็ได้โดยไม่มีการเก็บเงินตาม Token เหมือนการใช้ API เชิงพาณิชย์
  • ผ่อนแรงสมองอย่างเห็นผล: เมื่อคุณเริ่มเปิดคอมพิวเตอร์ในตอนเช้า คุณไม่ต้องเปิดเบราว์เซอร์ไปเปิดหน้าเว็บข่าวหลายๆ แท็บอีกต่อไป เพียงแค่เปิด Obsidian แล้วเปิดไฟล์สรุปประจำวันขึ้นมาอ่านประเด็นสำคัญในเวลาไม่เกิน 5 นาที
  • สร้างความเชื่อมโยงความรู้: เนื่องจากผลสรุปถูกเซฟอยู่ในรูปแบบไฟล์ Markdown ใน Obsidian Vault คุณจึงสามารถสร้าง Bi-directional links เชื่อมต่อข่าวเหล่านั้นไปยังสมุดโน้ตหรือโปรเจกต์งานที่เกี่ยวข้องได้ทันที

การเริ่มลดความถี่ในการทำงานซ้ำๆ ของสมองด้วยระบบอัตโนมัติ จะช่วยให้เราเหลือพลังงานสมองที่มีคุณค่าไว้คิดวิเคราะห์ แก้ปัญหาที่ท้าทาย และสร้างสรรค์ไอเดียใหม่ๆ ที่มีคุณค่าได้อย่างเต็มที่ ลองนำแนวคิดนี้ไปปรับแต่งเพิ่มเติมให้เข้ากับสไตล์การทำงานของคุณกันครับ!

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

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

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

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

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

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

By Linn