Skip to content
Public template

About

Local-first LLM Wiki template for investment research — Obsidian vault + Claude Code agents (Munger, Peter Lynch, Feynman, Reviewer, Darwin, Leopold...) that ingest, verify, and synthesize sources into traceable investment theses.

Resources

Stars

15 stars

Watchers

2 watching

Forks

Repository files navigation

LLM Wiki for Investment Research

เปลี่ยนบทความ งบการเงิน และ transcript ให้เป็นคลังความรู้การลงทุนที่ย้อนกลับไปดูหลักฐานได้

ภาพประกอบโต๊ะวิจัย มีเอกสารต้นทาง สมุดบันทึก และแว่นขยาย

ใช้ Obsidian อ่านและเชื่อมโยงโน้ต ใช้ Dashboard ในเครื่อง (dashboard/) ดูโน้ตคู่กับกราฟราคาและปรับหน้าตาเองได้ ใช้ Claude Code ช่วยเก็บแหล่งข้อมูล เขียน Source Note และร่าง Investment Thesis ส่วนโน้ตเก็บเป็นไฟล์ Markdown ในเครื่อง คุณจึงเปิดอ่าน แก้ไข และย้ายไปใช้กับเครื่องมืออื่นได้

เริ่มใช้งาน · ดูขั้นตอน · คำสั่งที่ใช้บ่อย · โครงสร้างไฟล์ · คู่มือการใช้งาน · คู่มือผังการทำงาน · คู่มือเพิ่มเติม

ปัญหาที่โปรเจกต์นี้ช่วยแก้

เมื่ออ่านหลายบริษัทพร้อมกัน ข้อมูลมักกระจายอยู่ใน PDF แท็บเบราว์เซอร์ และบทสนทนากับ AI พอกลับมาทบทวน เราอาจจำข้อสรุปได้ แต่หาตัวเลขหรือคำพูดต้นทางไม่เจอ

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

สิ่งที่คุณจะได้

  • Raw capture — เนื้อหาที่ดึงหรือแปลงมา พร้อม URL และ metadata ของแหล่งข้อมูล
  • Source Note — สรุปที่อ่านต่อได้ พร้อมตารางแยก fact, interpretation และคำถามที่ยังไม่มีคำตอบ
  • Entity และ Concept — โน้ตบริษัทหรือบุคคลที่เกี่ยวข้อง และแนวคิดที่ใช้ซ้ำได้ เช่น capital cycle หรือ pricing power เมื่อแหล่งข้อมูลมีเนื้อหารองรับ

เมื่อมีหลักฐานจากหลายแหล่งที่ผ่านการทบทวนเพียงพอ ใช้ /research <ticker> ช่วยร่าง Investment Thesis พร้อม base case, bear case และเงื่อนไขที่จะทำให้เปลี่ยนใจ ดูรูปแบบผลลัพธ์ได้ที่ Source Note template และ Thesis template

จากแหล่งข้อมูลถึง Thesis

ช่วงแรกเก็บหลักฐานและเขียนโน้ตที่เชื่อมกัน ส่วนการร่าง Thesis ใช้หลักฐานหลายแหล่งที่ผ่านการทบทวนแล้ว:

Python เก็บ Raw, Munger เขียน Source Note, agent ตรวจตัวเลขและร่าง thesis, script เฝ้าดูการเปลี่ยนแปลง แล้วคุณอ่านผ่าน Obsidian และ dashboard

แถวคือผู้ทำงาน คอลัมน์คือขั้นของงาน การนำเข้าไม่ได้หมายความว่าทุก claim ผ่าน review แล้ว และ Draft Thesis ยังต้องผ่าน Feynman กับ Reviewer ก่อนเปลี่ยนเป็น reviewed

อ่านขั้นตอนเป็นข้อความสำหรับหน้าจอเล็ก
  1. Sources → Capture → Raw: ใช้ Python ดึงหรือแปลงบทความ เอกสาร หรือ transcript เก็บเนื้อหาและข้อมูลที่มาของแหล่งข้อมูล
  2. Raw → Source Note: เขียนสรุป แยก fact, interpretation และ open question โดยเชื่อมกลับไปหา Raw พร้อมสร้างหรืออัปเดต Entity และ Concept เมื่อมีแนวคิดที่ใช้ซ้ำได้
  3. Review evidence: Feynman ตรวจตัวเลข Reviewer ตรวจเหตุผลและ bear case
  4. Draft Thesis: Leopold ร่าง base case, bear case และเงื่อนไขที่จะทำให้เปลี่ยนใจ เมื่อมีหลักฐานที่ผ่านการทบทวนพอ
  5. Monitor: /delta-report, /anomaly-scan และ /earnings-scorecard เฝ้าดูว่าหลักฐานใหม่เปลี่ยน thesis หรือไม่
  6. Read: อ่านใน Obsidian หรือ dashboard ซึ่งอ่านไฟล์ชุดเดียวกัน

ผังของทุกคำสั่ง · ที่มาของภาพ

เริ่มใช้งาน

Quickstart นี้ใช้ Obsidian, Claude Code, Python 3.10+ และ Git ติดตั้งและลงชื่อเข้าใช้ Claude Code ตามคู่มือของผู้ให้บริการก่อนเริ่ม

1. สร้าง repo ของคุณจาก template

กด Use this template → Create a new repository บน GitHub แล้วตั้งเป็น Private เพราะงานวิจัยและไฟล์ที่ capture มา (filing, transcript) จะอยู่ใน repo นี้ จากนั้น clone repo ของคุณเอง หรือถ้าแค่อยากลองดูก่อน clone template ตรงๆ ได้:

git clone https://github.com/Migchw/llm-wiki-starter.git
cd llm-wiki-starter

หรือเลือก Code → Download ZIP บน GitHub แล้วแตกไฟล์ เปิด terminal ในโฟลเดอร์ที่แตกออกมา

2. เตรียม Python สำหรับบทความเว็บและตัวตรวจ Wiki

ตัวอย่างนี้เก็บ virtual environment ไว้นอกโฟลเดอร์ vault และใช้ environment เดียวกันตลอด session

macOS / Linux

python3 --version
python3 -m venv ../.venv-llm-wiki
source ../.venv-llm-wiki/bin/activate
python -m pip install beautifulsoup4 PyYAML
Windows — Command Prompt
py -3 --version
py -3 -m venv ..\.venv-llm-wiki
..\.venv-llm-wiki\Scripts\activate.bat
python -m pip install beautifulsoup4 PyYAML

หากเลขเวอร์ชันที่แสดงต่ำกว่า 3.10 ให้ติดตั้ง Python รุ่นใหม่ก่อนสร้าง environment ส่วน PDF, Office, เว็บที่ใช้ JavaScript และ YouTube มีเครื่องมือเสริมอยู่ด้านล่าง

3. เปิดโฟลเดอร์เดียวกันใน Obsidian และ Claude Code

ใน Obsidian เลือก Open folder as vault แล้วเลือก llm-wiki-starter จากนั้นเปิด Home เป็นหน้าหลัก

ใน terminal ที่เปิด environment แล้ว และยังอยู่ในโฟลเดอร์ repo ให้รัน:

claude

คำสั่งที่ขึ้นต้นด้วย / ใน README นี้ใช้ใน Claude Code โปรเจกต์มี skills อยู่ใน .claude/skills/ ให้โหลดจากโฟลเดอร์นี้

4. เปิด Dashboard (ไม่บังคับ)

ต้องมี Node.js 22.13 ขึ้นไป (ตาม engines ใน dashboard/package.json)

cd dashboard
npm install
npm run dev

เปิด http://localhost:3000 คำสั่ง dev สร้าง index จากโน้ตในวอลต์ให้ก่อนทุกครั้ง ถ้ายังไม่มี Python หรือเน็ต ส่วนราคาและ earnings จะว่างแต่หน้าเว็บยังเปิดได้ หลัง ingest โน้ตใหม่ให้รัน npm run index แล้ว refresh

ปรับแต่งเป็นของคุณเอง:

อยากเปลี่ยน แก้ที่
หุ้นที่ติดตามและกราฟราคา dashboard/config/watchlist.json (entity ต้องตรงกับชื่อไฟล์ใน 02-Wiki/Entities/)
สี ฟอนต์ ธีมสว่าง/มืด ตัวแปร CSS ใน dashboard/app/globals.css
การ์ดและหน้าต่างๆ dashboard/components/ และ dashboard/app/

Dashboard อ่านวอลต์อย่างเดียว ไม่เขียนกลับเข้า 01-Raw/ หรือ 02-Wiki/ รายละเอียดอยู่ใน dashboard/README.md

5. ลองกับแหล่งข้อมูลของคุณหนึ่งชิ้น

ส่งลิงก์บทความที่อ่านได้สาธารณะ โดยแทน <URL> ด้วยลิงก์จริง:

/ingest <URL>

ถ้าต้องการให้ agent พาทำทีละขั้น ใช้ /onboarding แทน ขั้นตอนนั้นจะถามหาแหล่งข้อมูลและนำเข้าให้ด้วย

เมื่อจบงาน เปิด Raw ใน 01-Raw/ เทียบกับต้นฉบับ แล้วอ่าน Source Note ใน 02-Wiki/Sources/ ตรวจว่าตาราง claim ชี้กลับไปยังหลักฐานได้ รายการงานอยู่ใน Ingest Queue และประวัติการทำงานอยู่ใน Log

เครื่องมือเสริมสำหรับ JavaScript, PDF / Office และ YouTube

รันเฉพาะชุดที่ต้องใช้ใน terminal ที่เปิด Python environment แล้ว

เว็บที่ต้องรอ JavaScript แสดงเนื้อหา

python -m pip install playwright
python -m playwright install chromium

Fetcher จะลอง HTTP ก่อน และใช้ Playwright เป็น fallback เมื่อมีการติดตั้งไว้ การ render หน้าเว็บไม่ได้รับประกันว่าจะผ่านเว็บที่ต้อง login หรือบล็อก bot

PDF ที่มีข้อความ และไฟล์ DOCX / PPTX / XLSX

python -m pip install "markitdown[pdf,docx,pptx,xlsx]" pypdf

YouTube ที่มี transcript ให้เข้าถึงได้

python -m pip install youtube-transcript-api

ตัว fetcher ปัจจุบันยังไม่ได้ทำ OCR ให้ PDF สแกน หรือถอดเสียงวิดีโอที่ไม่มี transcript โดยอัตโนมัติ หากเนื้อหาที่ได้ว่างหรือขาดช่วง ให้หาแหล่งข้อมูลที่อ่านได้ก่อนนำไปสรุป

คำสั่งที่ใช้บ่อย

พิมพ์ในบทสนทนา Claude Code ที่เปิด repo นี้อยู่:

คำสั่ง ใช้เมื่อ ผลลัพธ์ที่คาดหวัง
/onboarding เพิ่งเริ่มใช้ vault พาทำความรู้จักโครงสร้างและลองแหล่งข้อมูลแรก
/ingest <URL หรือ path> มีบทความหรือเอกสารแล้ว Raw → Source Note → Entity และ Concept เมื่อมีเนื้อหารองรับ
/research <ticker> ต้องการรวบรวมงานวิจัยของบริษัท หาและจัดลำดับแหล่งข้อมูล นำเข้า แล้วร่าง Thesis เมื่อหลักฐานเพียงพอ
/wiki-health-check ต้องการทบทวนคุณภาพ Wiki รายงานปัญหาโครงสร้างและเนื้อหาใน lint_pending/ เพื่อพิจารณาแก้ไข

คำสั่งเสริมเมื่อมี thesis และ watchlist แล้ว:

คำสั่ง ใช้เมื่อ ผลลัพธ์ที่คาดหวัง
/delta-report ทบทวนรายสัปดาห์ หลักฐานใหม่ทำให้ thesis แข็งขึ้น อ่อนลง หรือชน kill condition พร้อมข้อเสนอแก้เป็น checkbox
/anomaly-scan หุ้นใน watchlist วิ่งแปลก รายงานราคา/volume และภาษาในเอกสารที่เปลี่ยน แล้วเพิ่มงานในคิว
/earnings-scorecard บริษัทเพิ่งประกาศงบ beat/miss เทียบ consensus, guidance และการ์ดบน dashboard

ผังของทุกคำสั่งอยู่ใน ผัง swimlane

ตัวอย่าง /research AAPL ใช้เริ่มค้นคว้าบริษัท ควรระบุตลาดด้วยเมื่อ ticker อาจซ้ำกัน

ผัง /ingest และ /research

คุณส่งแหล่งข้อมูล fetch_source.py เก็บ Raw แล้ว Munger เขียน Source Note เชื่อม Entity และ Concept อัปเดตคิวกับ Log และรัน lint

งานหนึ่งแหล่งทำใน session หลัก คิว done หมายถึงมี Source Note แล้ว claim ที่ยังไม่ตรวจคง verification: pending

Munger ถามหาแหล่งของผู้ใช้ Peter Lynch หาและเตรียมแหล่ง Munger นำเข้าทีละแหล่ง Darwin สกัด Concept แล้ว Leopold ร่าง thesis และ gate ตรวจ

Peter Lynch ที่เรียกโดยตรงจะหยุดหลังเตรียมแหล่งข้อมูล ส่วน /research ทำต่อจนถึงร่าง Thesis เมื่อหลักฐานพอ ถ้ายังไม่พอให้ระบุสิ่งที่ขาด

ใช้ Python CLI เพื่อเก็บ Raw โดยตรง

รันจากโฟลเดอร์ repo ใน terminal โดยแทนค่าระหว่าง <...> ด้วย URL หรือ path จริง:

python scripts/fetch_source.py "<ARTICLE_URL>" --type article
python scripts/fetch_source.py "<DOCUMENT_URL>" --type filing
python scripts/fetch_source.py "<LOCAL_PDF_PATH>" --type filing
python scripts/fetch_source.py "<YOUTUBE_URL>" --type video

ใช้ URL ที่ลงท้ายด้วย .pdf, .docx, .pptx หรือ .xlsx สำหรับเอกสารโดยตรง เพิ่ม --playwright เมื่อต้องการบังคับ render เว็บด้วย Chromium

CLI แสดง SAVED_RAW: <path> หลังบันทึกไฟล์ ทำเฉพาะขั้น Raw capture ส่วน Source Note และ Thesis เป็นงานของ agent ตรวจเนื้อหาในไฟล์ทุกครั้ง เพราะการบันทึกสำเร็จไม่ได้แปลว่าดึงเนื้อหาได้ครบ

สำหรับไฟล์ที่อยู่ในเครื่อง raw_file ยังชี้ไปยังตำแหน่งต้นฉบับ จึงต้องเก็บไฟล์นั้นไว้ และปรับ path หากย้ายไฟล์หรือย้าย vault ไปเครื่องอื่น

โครงสร้างไฟล์

โฟลเดอร์ เก็บอะไร
01-Raw/ หลักฐานที่ capture มา แยกตาม article, filing, book, video และ dataset
02-Wiki/ Source Notes, Entities, Concepts, Theses และ Synthesis ที่เชื่อมหลายเรื่องเข้าด้วยกัน
03-Logs/ ประวัติการนำเข้าและแก้ไข Wiki
04-Schema/ Templates, workflow และเกณฑ์คุณภาพของโน้ต
05-Index/ Home, คิวงาน และบันทึกสุขภาพ vault
06-Assets/ รูปและไฟล์แนบที่ใช้ประกอบโน้ต
scripts/ ตัวดึงข้อมูล ตัวบันทึก raw และ linter
dashboard/ เว็บ dashboard ในเครื่อง อ่านโน้ตจากวอลต์
docs/ ผังการทำงานและตัวสร้างผัง
tests/ ชุดทดสอบการเก็บ raw
lint_pending/ รายงานตรวจ Wiki ที่รอพิจารณา

กติกาของโปรเจกต์อยู่ใน .agents/AGENTS.md skills และ agents ต้นฉบับอยู่ใน .agents/ และ copy ไป .claude/ ให้ Claude Code ด้วย python scripts/wiki_tool.py --sync-agents (แก้ที่ .agents/ เท่านั้น) โน้ตเขียนเป็นภาษาไทยเป็นหลัก และคงศัพท์การเงิน เช่น moat, EBITDA และ DCF ตามบริบท

หน้าที่ของแต่ละ agent

Munger คือ session หลักที่คุยกับผู้ใช้ ทำงานนำเข้าทั่วไปโดยตรงและประสานงานวิจัยที่ซับซ้อน ส่วน subagents อีก 6 บทบาท มีหน้าที่ตามไฟล์กำหนดดังนี้:

Agent หน้าที่
Peter Lynch หา ตรวจลิงก์ และจัดลำดับแหล่งข้อมูล
Ingest Runner ดูแลการนำเข้าหนึ่งแหล่งข้อมูลเมื่อ /research มีหลายแหล่ง
Feynman ตรวจตัวเลข วันที่ และคำพูดอ้างอิง
Reviewer ทบทวนเหตุผล bear case และช่องว่างของหลักฐาน
Darwin สกัดแนวคิดที่ใช้ซ้ำได้และเชื่อม Entity
Leopold ร่าง Thesis จากหลักฐานที่ผ่านการทบทวน

ดูขั้นตอนและจุดส่งต่องานใน Project Workflow

หลักฐานและการตรวจคุณภาพ

เก็บ Raw เดิมไว้ — เมื่อนำเข้าแหล่งเดิมอีกครั้ง fetcher จะคงหลักฐานเดิมไว้ และสร้าง capture ใหม่เมื่อเนื้อหาหรือ metadata เปลี่ยน เช่น วันที่ capture ไฟล์ชื่อซ้ำไม่เขียนทับกัน ส่วนเอกสารที่ดาวน์โหลดมี raw_file ชี้กลับไปยังต้นฉบับของ capture นั้น

แยกสิ่งที่รู้กับสิ่งที่ตีความ — Source Note ต้องเชื่อมกลับไปหา Raw และแยก fact, interpretation และ open question ข้อที่ยังตรวจไม่ได้ให้คง verification: pending การมี agent สำหรับตรวจสอบไม่ได้ยืนยันว่าทุก claim ผ่านการตรวจแล้ว

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

รันตัวตรวจโครงสร้างและดูสถิติได้จาก terminal:

python scripts/wiki_tool.py --lint
python scripts/wiki_tool.py --stats

Linter ปัจจุบันอาจนับลิงก์ตัวอย่างในคู่มือเป็นลิงก์เสีย และยังตรวจความเชื่อมโยงของหลักฐานได้ไม่ครบ ผล 100% HEALTHY จึงไม่ได้รับรองความถูกต้องของข้อสรุปการลงทุน

ผัง /wiki-health-check: รายงานก่อน แล้วจึงพิจารณาข้อที่อนุมัติให้แก้

wiki_tool.py ตรวจลิงก์ schema และความตรงกันของ .claude กับ .agents แล้ว Munger ตรวจเนื้อหา เขียนรายงาน คุณติ๊ก x แล้วจึงแก้เฉพาะข้อที่ติ๊ก

คำสั่งตรวจสุขภาพสร้างรายงานพร้อมข้อเสนอ โดยยังไม่แก้โน้ต เมื่อผู้ใช้ขอให้นำข้อที่อนุมัติไปแก้จึงใช้เฉพาะรายการ [x] และคงรายงานที่ยังมีข้อรอตัดสินใจไว้

ไฟล์ vault เก็บในเครื่อง แต่เมื่อใช้งานผ่าน AI เนื้อหาที่ agent อ่านอาจถูกส่งไปยังผู้ให้บริการโมเดลตามการตั้งค่าที่ใช้ เลือกแหล่งข้อมูลที่คุณมีสิทธิ์นำมาใช้งานในบริบทนั้น

ร่วมพัฒนา

แจ้งปัญหาผ่าน Issues พร้อมคำสั่งที่ใช้ ผลที่คาดหวัง และตัวอย่างที่ทำซ้ำได้ หรือส่ง PR ที่แก้ปัญหาหนึ่งเรื่องต่อครั้ง สำหรับบั๊กการดึงข้อมูล ควรใช้ fixture ที่แบ่งปันได้แทนเอกสารส่วนตัว

ชุดทดสอบการเก็บ raw ใช้ Python standard library และรันแบบ offline:

python -m unittest discover -s tests -v

คู่มือเพิ่มเติม

  • คู่มือการใช้งาน — ใช้คำสั่งไหนเมื่อไร หน้าที่ของ agent การปรับแต่ง dashboard และสิ่งที่เปลี่ยนจาก template เดิม
  • คู่มือผังการทำงาน — pipeline, ชั้นข้อมูล, บทบาท agent และผัง swimlane ของทุกคำสั่ง พร้อมคำอธิบายภาษาไทย
  • Project Blueprint — แนวคิดและภาพรวมของระบบ
  • Project Workflow — บทบาท agent และเส้นทางการทำงาน
  • Concept Checklist — เมื่อใดควรสร้าง Concept ใหม่
  • Obsidian Fundamentals — frontmatter, links และการอ่าน vault
  • DeepWiki — คำอธิบายระบบพร้อมลิงก์กลับไปยังโค้ด อาจอ้างอิง commit เก่ากว่า repo ปัจจุบัน

About

Local-first LLM Wiki template for investment research — Obsidian vault + Claude Code agents (Munger, Peter Lynch, Feynman, Reviewer, Darwin, Leopold...) that ingest, verify, and synthesize sources into traceable investment theses.

Resources

Stars

15 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages