Skip to content

ADchampion3/CompSynth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

144 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CompSynth

ไธ€ๅคฉๅ†…ๅฎน๏ผŒไธ€็ฝ‘ๆ‰“ๅฐฝใ€‚

ๆœฌๅœฐๅ†…ๅฎน่šๅˆไธŽๅ‘ๅธƒ็ณป็ปŸใ€‚ๆŠ“ๅ– RSSใ€Web๏ผˆ้™ๆ€/JSๆธฒๆŸ“๏ผ‰ๅ†…ๅฎน๏ผŒ้€š่ฟ‡ LLM ็”Ÿๆˆๆ‘˜่ฆ๏ผŒ่พ“ๅ‡บ Markdown ๆ—ฅๆŠฅใ€‚

Python FastAPI React TypeScript Crawlee GitHub stars

Website ยท Contributing


ไธบไป€ไนˆๆ˜ฏ CompSynth๏ผŸ

CompSynth = Composition + Synthesis

ๅๅญ—ๆบไบŽๅฎƒ็š„ๆ ธๅฟƒ่ƒฝๅŠ›๏ผšๅฐ†ๅคšไธชๆฅๆบ็š„ๅ†…ๅฎน็ป„ๅˆ๏ผˆcompose๏ผ‰ๆˆไธ€ไปฝ็ปผๅˆๆ‘˜่ฆ๏ผˆsynthesize๏ผ‰ใ€‚ๅฏนไบŽ่ฟฝ่ธชๆŠ€ๆœฏๅšๅฎขๅ’Œ่ต„่ฎฏ็š„็ ”็ฉถไบบๅ‘˜ใ€ๅทฅ็จ‹ๅธˆ่€Œ่จ€๏ผŒ่ฟ™ๆ˜ฏไธ€ๆฌพๆœฌๅœฐไผ˜ๅ…ˆ็š„ๅทฅๅ…ทโ€”โ€”ๆ•ฐๆฎ็•™ๅœจๆœฌๅœฐ๏ผŒ้…็ฝฎ้€š่ฟ‡ YAML ็ฎก็†๏ผŒไธ้œ€่ฆๆณจๅ†Œ่ดฆๅทใ€‚

CompSynth ๆ–‡็ซ ๅˆ—่กจ่ง†ๅ›พ

CompSynth ๆŠฅๅ‘Š่ง†ๅ›พ

ๆณจๆ„: ่ฟ™ไธๆ˜ฏไธ€ไธช็Ÿฅ่ฏ†ๅบ“, ๅชๆ˜ฏไธ€ไธชๆ–นไพฟ็”จๆˆทๆฃ€ๆŸฅไฟกๆฏๆ˜ฏๅฆๆ›ดๆ–ฐไปฅๅŠๅฏนๆ›ดๆ–ฐไฟกๆฏๆœ‰ไธ€ไธชๅคง่‡ด็š„ไบ†่งฃๅ’ŒไพฟไบŽ่ฟฝ่ธชๅˆฐไฟกๆฏๅŽŸๆ–‡็š„ๅทฅๅ…ท

ๅŠŸ่ƒฝ

  • ๅคšๆบๆŠ“ๅ– โ€” RSSใ€Web๏ผˆ้™ๆ€๏ผ‰ใ€JavaScript ๆธฒๆŸ“้กต้ข๏ผˆCrawlee ้ฉฑๅŠจ๏ผ‰
  • ๆ™บ่ƒฝๅŽป้‡ โ€” SQLite ๅฎž็ŽฐๆŒไน…ๅŒ–ๅŽป้‡
  • HTML ้ข„ๅค„็† โ€” 3 ๅฑ‚ๆธ…ๆด—็ฎก็บฟ๏ผˆๅŽ‹็ผฉ โ†’ ๆทฑๅบฆๆธ…็† โ†’ ๅฑžๆ€งๅ‰ฅ็ฆป๏ผ‰๏ผŒๆ้ซ˜ Selector ๆœ‰ๆ•ˆๆ€ง
  • LLM ๆ‘˜่ฆ โ€” ๆ”ฏๆŒ OpenAI ๅ’Œ Anthropic ๅ…ผๅฎน API
  • Web UI โ€” ๆ”ถไปถ็ฎฑใ€่ฎข้˜…ๆบ็ฎก็†ใ€ๆ–‡็ซ ้˜…่ฏป
  • ้€‰ๆ‹ฉๅ™จ็ผ–่พ‘ๅ™จ โ€” CSS ้€‰ๆ‹ฉๅ™จ + LLM ่พ…ๅŠฉ้‡ๆๅ–
  • ้‚ฎไปถๆŽจ้€ โ€” SMTP ่‡ชๅŠจๆฃ€ๆต‹๏ผŒMarkdownโ†’HTML๏ผŒcompsynth notify ็‹ฌ็ซ‹ๅ‘้€
  • ๅŽ็ซฏ้…็ฝฎๅŒๆญฅ โ€” ่ฎพ็ฝฎ้กต้ข็›ดๆŽฅไฟฎๆ”น๏ผŒๆ— ้œ€้‡ๅฏ

ๅฟซ้€Ÿๅฎ‰่ฃ…

git clone https://github.com/ADchampion3/CompSynth.git
cd CompSynth

ไฝฟ็”จๅฎ‰่ฃ…่„šๆœฌ๏ผˆๆŽจ่๏ผ‰

ๅฎ‰่ฃ…่„šๆœฌไผš่‡ชๅŠจๆฃ€ๆต‹ uv๏ผŒๆœชๆ‰พๅˆฐๆ—ถไบคไบ’ๅผๅผ•ๅฏผๅฎ‰่ฃ…ๆˆ–ๆ‰‹ๅŠจๆŒ‡ๅฎš่ทฏๅพ„๏ผŒๅนถๅฎŒๆˆไพ่ต–ๅฎ‰่ฃ…ใ€้…็ฝฎๆ–‡ไปถๅˆๅง‹ๅŒ–ๅ’Œๅ‰็ซฏ๏ผˆๅฏ้€‰๏ผ‰ใ€‚

Linux / macOS๏ผš

chmod +x install.sh
./install.sh

Windows (PowerShell)๏ผš

.\install.ps1

่ฎฉ Coding Agent ๅฎ‰่ฃ…

ๅฆ‚ๆžœไฝ ๆญฃๅœจไฝฟ็”จ Claude Codeใ€Cursor ็ญ‰ Coding Agent๏ผŒ็›ดๆŽฅๅฐ† INSTALL.md ไบค็ป™ Agent ๆ‰ง่กŒๅณๅฏใ€‚่ฏฅๆ–‡ๆกฃๅŒ…ๅซ้€ๆญฅๅฎ‰่ฃ…ๆŒ‡ไปคๅ’Œๆฏๆญฅ้ชŒ่ฏๆกไปถใ€‚

# ๅœจ Agent ไธญ่พ“ๅ…ฅ๏ผš
่ฏทๆŒ‰็…ง INSTALL.md ็š„ๆญฅ้ชคๅฎ‰่ฃ…้กน็›ฎ

ๆ‰‹ๅŠจๅฎ‰่ฃ…

uv sync

้ชŒ่ฏๅฎ‰่ฃ…

uv run compsynth --version
# compsynth 0.1.0

ๅฎ‰่ฃ…ไธบ็ณป็ปŸๅ‘ฝไปค๏ผˆๆŽจ่๏ผ‰

uv sync ไป…ๅฎ‰่ฃ…ไพ่ต–๏ผŒไธไผšๅœจ PATH ไธญๅˆ›ๅปบ compsynth ๅ‘ฝไปคใ€‚่ฆ็›ดๆŽฅไฝฟ็”จ compsynth ่€Œไธๅธฆ uv run ๅ‰็ผ€๏ผš

ๆ–นๅผ A๏ผš็ผ–่พ‘ๅผๅฎ‰่ฃ…๏ผˆๅผ€ๅ‘ๆŽจ่๏ผ‰

uv sync
uv pip install -e .

ไน‹ๅŽๅœจ้กน็›ฎ็›ฎๅฝ•ไธ‹๏ผˆๆˆ–ๆฟ€ๆดป venv ๅŽ๏ผ‰็›ดๆŽฅ่ฟ่กŒ๏ผš

compsynth --version
compsynth serve

ๅŽŸ็†๏ผšpyproject.toml ไธญๅฃฐๆ˜Žไบ† [project.scripts] compsynth = "comp_synth.cli:app"๏ผŒpip install -e . ไผšๅœจ .venv/Scripts/ ไธ‹ๅˆ›ๅปบ่„šๆœฌ้“พๆŽฅใ€‚ไฟฎๆ”นไปฃ็ ๅŽๅ‘ฝไปค่‡ชๅŠจ็”Ÿๆ•ˆ๏ผŒๆ— ้œ€้‡ๆ–ฐๅฎ‰่ฃ…ใ€‚

ๆณจๆ„๏ผšๆญคๆ–นๅผไพ่ต–้กน็›ฎ venvใ€‚ๅœจ้ž้กน็›ฎ็›ฎๅฝ•ไธ‹่ฟ่กŒ้œ€่ฆๅ…ˆๆฟ€ๆดป venv๏ผš

# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate

ๆ–นๅผ B๏ผšๅ…จๅฑ€ๅทฅๅ…ทๅฎ‰่ฃ…

uv tool install -e .

compsynth ๅฐ†ๅฎ‰่ฃ…ๅˆฐ uv ๅ…จๅฑ€ๅทฅๅ…ท็›ฎๅฝ•๏ผŒไปปไฝ•ไฝ็ฝฎ้ƒฝๅฏ็›ดๆŽฅ่ฟ่กŒ compsynth๏ผŒๆ— ้œ€ๆฟ€ๆดป venvใ€‚

ๆณจๆ„๏ผšไปฃ็ ไฟฎๆ”นๅŽ้œ€่ฆ้‡ๆ–ฐๅฎ‰่ฃ…ๆ‰่ƒฝ็”Ÿๆ•ˆ๏ผš

uv tool install -e . --force

ๅฟซ้€Ÿๅผ€ๅง‹

1. ๅฏๅŠจ

# ๅฏๅŠจๅŽ็ซฏ API ๆœๅŠกๅ™จ
compsynth serve
# ๆˆ– uv run compsynth serve

# ๆ–ฐ็ปˆ็ซฏ๏ผšๅฏๅŠจๅ‰็ซฏ
cd frontend
npm install   # ้ฆ–ๆฌก่ฟ่กŒ้œ€่ฆ
npm run dev

ๆ‰“ๅผ€ http://localhost:5173 ๆŸฅ็œ‹ Web UIใ€‚

2. ้…็ฝฎ่ฎข้˜…ๆบ

ๆ‰“ๅผ€่ฎพ็ฝฎ้กต้ข โ†’ ่ฎข้˜…ๆบ็ฎก็†๏ผŒๆทปๅŠ ไฝ ็š„่ฎข้˜…ๆบ๏ผˆๆ”ฏๆŒ RSS ๅ’Œ Web ไธค็ง็ฑปๅž‹๏ผ‰ใ€‚

3. ้ฆ–ๆฌกๆฃ€ๆŸฅ

# ้ชŒ่ฏ็Žฏๅขƒ้…็ฝฎๆ˜ฏๅฆๆญฃ็กฎ
compsynth doctor

# ๆŸฅ็œ‹็ณป็ปŸ็Šถๆ€
compsynth status

CLI

ๅ…จๅฑ€้€‰้กน

ๆ‰€ๆœ‰ๅ‘ฝไปคๅ…ฑไบซไปฅไธ‹้€‰้กน๏ผš

้€‰้กน ็Ÿญ้€‰้กน ่ฏดๆ˜Ž
--verbose -v ๆ˜พ็คบ DEBUG ็บงๅˆซๆ—ฅๅฟ—
--quiet -q ไป…่พ“ๅ‡บ้”™่ฏฏ๏ผˆJSON ๆ‘˜่ฆไป่พ“ๅ‡บ๏ผ‰
--cron Cron ๆจกๅผ๏ผšๆˆๅŠŸๆ—ถไธ่พ“ๅ‡บ JSONใ€‚ไนŸๅฏ้€š่ฟ‡ COMPSYNTH_CRON=1 ็Žฏๅขƒๅ˜้‡ๅฏ็”จ
--version -V ๆ‰“ๅฐ็‰ˆๆœฌๅทๅนถ้€€ๅ‡บ
--db-path <path> ๆŒ‡ๅฎš SQLite ๆ•ฐๆฎๅบ“่ทฏๅพ„๏ผˆ่ฆ†็›–้ป˜่ฎค data/crawl_state.db๏ผ‰

ๅ‘ฝไปค้€ŸๆŸฅ

ๅ‘ฝไปค ่ฏดๆ˜Ž
compsynth ่ฟ่กŒๅฎŒๆ•ดๆต็จ‹๏ผˆๆŠ“ๅ– โ†’ ๅŽป้‡ โ†’ ๆ‘˜่ฆ โ†’ ๅ‘ๅธƒ๏ผ‰
compsynth serve ๅฏๅŠจ API ๆœๅŠกๅ™จ
compsynth crawl ไป…่ฟ่กŒ็ˆฌๅ– pipeline
compsynth status ็ณป็ปŸๅฅๅบท็Šถๆ€ๆฆ‚่งˆ
compsynth doctor ้ชŒ่ฏ็Žฏๅขƒ้…็ฝฎๆ˜ฏๅฆๆญฃ็กฎ
compsynth dashboard ๆ‰“ๅฐไปช่กจ็›˜ๆ‘˜่ฆ JSON
compsynth logs ๆŸฅ็œ‹ๆ—ฅๅฟ—ๆ–‡ไปถ
compsynth config show ๆ‰“ๅฐๅฝ“ๅ‰็”Ÿๆ•ˆ็š„้…็ฝฎ๏ผˆๅฏ†้’ฅ่„ฑๆ•๏ผ‰

้€€ๅ‡บ็ 

้€€ๅ‡บ็  ๅธธ้‡ ๅซไน‰
0 EXIT_SUCCESS ๅ…จ้ƒจๆˆๅŠŸ
1 EXIT_PARTIAL ้ƒจๅˆ†ๅคฑ่ดฅ๏ผˆๅฆ‚้ƒจๅˆ†ๆบ็ˆฌๅ–ๅคฑ่ดฅใ€doctor ๆฃ€ๆŸฅๆœ‰ๅผ‚ๅธธ้กน๏ผ‰
2 EXIT_FATAL ่‡ดๅ‘ฝ้”™่ฏฏ๏ผˆๅฆ‚ๆ•ฐๆฎๅบ“ไธๅฏ็”จใ€ๆœชๆ•่Žทๅผ‚ๅธธ๏ผ‰

| compsynth sources list | ๅˆ—ๅ‡บๅทฒ้…็ฝฎ็š„่ฎข้˜…ๆบ | | compsynth sources import | ไปŽ YAML ๅฏผๅ…ฅ่ฎข้˜…ๆบๅˆฐๆ•ฐๆฎๅบ“ | | compsynth sources export | ไปŽๆ•ฐๆฎๅบ“ๅฏผๅ‡บ่ฎข้˜…ๆบๅˆฐ YAML | | compsynth reports list | ๅˆ—ๅ‡บๅทฒ็”Ÿๆˆ็š„ๆŠฅๅ‘Š | | compsynth reports get <id> | ่ฏปๅ–ๆŒ‡ๅฎšๆŠฅๅ‘Šๅ†…ๅฎน | | compsynth notify | ๅ‘้€ๆœ€ๆ–ฐๆ—ฅๆŠฅๅˆฐๅทฒ้…็ฝฎ็š„้€š็Ÿฅๆธ ้“ |

ๅ‘ฝไปคๅ‚ๆ•ฐ่ฏฆๆƒ…

compsynth serve

ๅฏๅŠจ FastAPI HTTP API ๆœๅŠกๅ™จใ€‚ๅ‰็ซฏ้€š่ฟ‡ๆญค API ่ฏปๅ†™ๆ•ฐๆฎใ€‚

ๅ‚ๆ•ฐ ้ป˜่ฎคๅ€ผ ่ฏดๆ˜Ž
--host 127.0.0.1 ็ป‘ๅฎšๅœฐๅ€ใ€‚ๅฑ€ๅŸŸ็ฝ‘่ฎฟ้—ฎๆ”นไธบ 0.0.0.0
--port 8000 ็ป‘ๅฎš็ซฏๅฃ
compsynth serve --host 0.0.0.0 --port 9000

compsynth status

ไบบ็ฑปๅฏ่ฏป็š„็ณป็ปŸๅฅๅบทๆฃ€ๆŸฅใ€‚ๅŒ…ๅซๆ–‡็ซ ๆ€ปๆ•ฐใ€ไธๅฅๅบทๆบๆ•ฐ้‡ใ€ไธŠๆฌก็ˆฌๅ–็Šถๆ€ใ€ๆœ€ๆ–ฐๆŠฅๅ‘Š่ทฏๅพ„ใ€‚้€€ๅ‡บ็ ๏ผš0 ๆญฃๅธธ๏ผŒ1 ๆœ‰ๅผ‚ๅธธๆบใ€‚

ๅ‚ๆ•ฐ ่ฏดๆ˜Ž
--json ่พ“ๅ‡บๆœบๅ™จๅฏ่ฏป็š„ JSON ๆ ผๅผ

compsynth doctor

้€้กนๆฃ€ๆŸฅ็Žฏๅขƒ้…็ฝฎ๏ผšPython ็‰ˆๆœฌใ€.env ๆ–‡ไปถใ€API Keyใ€subscriptions.yamlใ€SQLite ็›ฎๅฝ•ใ€ๆ—ฅๅฟ—็›ฎๅฝ•ใ€SMTP๏ผˆๅฆ‚ๅทฒ้…็ฝฎ๏ผ‰ใ€‚้€‚็”จไบŽ้ฆ–ๆฌก้ƒจ็ฝฒๆˆ– CI ๅฅๅบทๆฃ€ๆŸฅใ€‚

ๅ‚ๆ•ฐ ่ฏดๆ˜Ž
--required-only ่ทณ่ฟ‡ๅฏ้€‰ๆฃ€ๆŸฅ๏ผˆๅฆ‚ๅค‡็”จ API Keyใ€SMTP๏ผ‰
--json ่พ“ๅ‡บ JSON ๆ ผๅผ๏ผŒๆฏ้กนๅซ nameใ€okใ€detailใ€required

compsynth logs

ๆŸฅ็œ‹ๆœ€่ฟ‘็š„ๅบ”็”จๆ—ฅๅฟ—ๆ–‡ไปถใ€‚ๆ—ฅๅฟ—่‡ชๅŠจๆŒ‰ๆ—ฅ่ฝฎ่ฝฌ๏ผŒๅบ”็”จๆ—ฅๅฟ—ไฟ็•™ 30 ๅคฉ๏ผŒ้”™่ฏฏๆ—ฅๅฟ—ไฟ็•™ 90 ๅคฉใ€‚

ๅ‚ๆ•ฐ ้ป˜่ฎคๅ€ผ ่ฏดๆ˜Ž
--last true ๆ˜พ็คบๆœ€ๆ–ฐ็š„ๆ—ฅๅฟ—ๆ–‡ไปถ
-n / --lines 50 ๆ˜พ็คบๆœ€ๅŽ N ่กŒ
-l / --level ๆŒ‰็บงๅˆซ่ฟ‡ๆปค๏ผšDEBUGใ€INFOใ€WARNINGใ€ERROR
compsynth logs -n 20 -l ERROR

compsynth sources list

ๅˆ—ๅ‡บๆ‰€ๆœ‰ๅทฒ้…็ฝฎ็š„่ฎข้˜…ๆบใ€‚[+] ่กจ็คบๅฏ็”จ๏ผŒ[-] ่กจ็คบ็ฆ็”จใ€‚

ๅ‚ๆ•ฐ ่ฏดๆ˜Ž
--json ่พ“ๅ‡บ JSON ๆ•ฐ็ป„๏ผŒๅซ source_keyใ€nameใ€typeใ€urlใ€enabled

compsynth sources import

ๅฐ† subscriptions.yaml ๅฏผๅ…ฅ SQLite ๆ•ฐๆฎๅบ“ใ€‚ๅฏๅŠจๆ—ถไนŸไผš่‡ชๅŠจๆ‰ง่กŒๆญคๆ“ไฝœใ€‚

ๅ‚ๆ•ฐ ่ฏดๆ˜Ž
--path <path> ๆŒ‡ๅฎš YAML ๆ–‡ไปถ่ทฏๅพ„๏ผˆ้ป˜่ฎค subscriptions.yaml๏ผ‰

compsynth sources export

ๅฐ†ๆ•ฐๆฎๅบ“ไธญ็š„่ฎข้˜…ๆบๅฏผๅ‡บไธบ YAML ๆ–‡ไปถใ€‚

ๅ‚ๆ•ฐ ่ฏดๆ˜Ž
--output <path> ่พ“ๅ‡บ่ทฏๅพ„๏ผˆ้ป˜่ฎค่ฆ†็›– subscriptions.yaml๏ผ‰

compsynth reports get

่ฏปๅ–ๆŒ‡ๅฎšๆŠฅๅ‘Š็š„ๅฎŒๆ•ดๅ†…ๅฎน๏ผˆMarkdown ๆ ผๅผ๏ผ‰ใ€‚

compsynth reports get digest_20260513

compsynth notify

้€š่ฟ‡ๅทฒ้…็ฝฎ็š„้€š็Ÿฅๆธ ้“๏ผˆๅฆ‚้‚ฎไปถ๏ผ‰ๅ‘้€ๆŠฅๅ‘Šใ€‚ไธๅธฆๅ‚ๆ•ฐๆ—ถ่‡ชๅŠจๆŸฅๆ‰พๆœ€ๆ–ฐๆŠฅๅ‘Šใ€‚

ๅ‚ๆ•ฐ ่ฏดๆ˜Ž
--file <path> ๆŒ‡ๅฎš่ฆๅ‘้€็š„ Markdown ๆ–‡ไปถ่ทฏๅพ„

compsynth config show

ๆ‰“ๅฐๅฝ“ๅ‰็”Ÿๆ•ˆ็š„ๆ‰€ๆœ‰้…็ฝฎ้กนใ€‚ๆ•ๆ„Ÿๅญ—ๆฎต๏ผˆAPI Keyใ€ๅฏ†็ ๏ผ‰่‡ชๅŠจ่„ฑๆ•ไธบ ****xxxxใ€‚้€‚ๅˆ่ฐƒ่ฏ•้…็ฝฎไผ˜ๅ…ˆ็บง้—ฎ้ข˜ใ€‚


ๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   RSS        โ”‚โ”€โ”€โ”€โ”€>โ”‚  Crawlers        โ”‚โ”€โ”€โ”€โ”€>โ”‚   SQLite         โ”‚
โ”‚   Web        โ”‚     โ”‚  (Crawlee)       โ”‚     โ”‚   (dedup/tracking)
โ”‚   JavaScript โ”‚     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜              โ”‚                         โ”‚
                             โ–ผ                         โ–ผ
                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                      โ”‚  FastAPI     โ”‚     โ”‚   LLM            โ”‚
                      โ”‚  (Web UI)    โ”‚     โ”‚   (summarize)    โ”‚
                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                    โ”‚
                                             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                             โ”‚  Publishers    โ”‚
                                             โ”‚  (Email/...)   โ”‚
                                             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
ๅฑ‚็บง ๆŠ€ๆœฏๆ ˆ
็ˆฌ่™ซ Crawlee (BeautifulSoup + Playwright)
ๅŽ็ซฏ Python 3.11+, FastAPI, SQLite
ๅ‰็ซฏ React, TypeScript, Vite
LLM OpenAI ๅ…ผๅฎน API / Anthropic
ๆŽจ้€ SMTP (่‡ชๅŠจๆฃ€ๆต‹), Markdownโ†’HTML

้…็ฝฎ

้…็ฝฎๆ–‡ไปถ

ๆ–‡ไปถ ่ฏดๆ˜Ž ไผ˜ๅ…ˆ็บง
.env ็Žฏๅขƒๅ˜้‡้…็ฝฎ๏ผˆLLM API Keyใ€ๅญ˜ๅ‚จ่ทฏๅพ„็ญ‰๏ผ‰ ้ซ˜
subscriptions.yaml ่ฎข้˜…ๆบ้…็ฝฎ๏ผˆRSS/Web ๅˆ—่กจ๏ผ‰ ้ซ˜
data/crawl_state.db SQLite ๆ•ฐๆฎๅบ“๏ผˆ่ฟ่กŒๆ—ถ็ผ“ๅญ˜๏ผ‰ ไฝŽ

่ฎข้˜…ๆบ้…็ฝฎ (subscriptions.yaml)

cp subscriptions.example.yaml subscriptions.yaml
sources:
  - type: rss
    url: https://example.com/feed.xml
    name: ็คบไพ‹ๅšๅฎข

  - type: web
    url: https://tech.example.com/
    name: ็คบไพ‹็ง‘ๆŠ€็ซ™
    selectors:
      - item_container: ".post-container"
        url: ".post-title a"
        title: ".post-title"
        summary: ".post-excerpt"

type ็ฑปๅž‹: rss๏ผˆRSS ่ฎข้˜…๏ผ‰ใ€web๏ผˆ้™ๆ€็ฝ‘้กต๏ผ‰ใ€javascript๏ผˆJS ๆธฒๆŸ“้กต้ข๏ผ‰

้…็ฝฎไธŽๆ•ฐๆฎๅบ“็š„ๅ…ณ็ณป

subscriptions.yaml โ”€โ”€โ†’ [ๅฏๅŠจๆ—ถ่‡ชๅŠจๅŒๆญฅ] โ”€โ”€โ†’ crawl_state.db
                                                    โ†“
                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ†“                                               โ†“
                         ๅ‰็ซฏ่ฏปๅ–                                         CLI/ๅŽ็ซฏ่ฏปๅ–
                      (่ฎข้˜…ๆบ็ฎก็†้กต้ข)                                   (crawl pipeline)

ๅŒๆญฅ่ง„ๅˆ™:

  • ๅฏๅŠจๆ—ถ: subscriptions.yaml โ†’ ๆ•ฐๆฎๅบ“๏ผˆYAML ๆ˜ฏ็œŸ็›ธๆฅๆบ๏ผ‰
  • ๅ‰็ซฏไฟฎๆ”น่ฎข้˜…ๆบๆ—ถ: ๆ•ฐๆฎๅบ“ๆ›ดๆ–ฐ๏ผŒๅนถๅฏ้€‰ๅŒๆญฅๅ›ž YAML
  • ๅ‰็ซฏไฟฎๆ”น่ฎพ็ฝฎๆ—ถ: ๆ•ฐๆฎๅบ“ๆ›ดๆ–ฐ๏ผŒ่ฟ่กŒๆ—ถ็”Ÿๆ•ˆ๏ผˆ้ƒจๅˆ†้…็ฝฎ้œ€้‡ๅฏ๏ผ‰

็Žฏๅขƒๅ˜้‡ (.env)

LLM ็ญ‰้…็ฝฎๅฏ็›ดๆŽฅๅœจ Web UI ็š„่ฎพ็ฝฎ้กต้ขไธญไฟฎๆ”น๏ผˆๆ— ้œ€็ผ–่พ‘ๆ–‡ไปถ๏ผ‰๏ผŒไนŸๅฏ้€š่ฟ‡็Žฏๅขƒๅ˜้‡้…็ฝฎ๏ผš

cp .env.example .env

่ทฏๅพ„

ๅ˜้‡ ่ฏดๆ˜Ž ้ป˜่ฎคๅ€ผ
COMPSYNTH_LOG_DIR ๆ—ฅๅฟ—็›ฎๅฝ• ./logs
COMPSYNTH_LOG_RETAIN_DAYS ๅบ”็”จๆ—ฅๅฟ—ไฟ็•™ๅคฉๆ•ฐ 30 days
COMPSYNTH_DATA_DIR ๆ•ฐๆฎ็›ฎๅฝ• ./data

LLM

ๅ˜้‡ ่ฏดๆ˜Ž ้ป˜่ฎคๅ€ผ
COMPSYNTH_LLM_PROVIDER LLM ๆไพ›ๅ•†๏ผˆopenai ๆˆ– anthropic๏ผ‰ openai
COMPSYNTH_OPENAI_API_KEY OpenAI API Key๏ผˆไฝฟ็”จ OpenAI ๅ…ผๅฎนๆŽฅๅฃ็š„ๆจกๅž‹ไนŸ็”จ่ฟ™ไธช๏ผ‰ -
COMPSYNTH_OPENAI_BASE_URL OpenAI API ๅœฐๅ€ https://api.openai.com/v1
COMPSYNTH_ANTHROPIC_API_KEY Anthropic API Key -
COMPSYNTH_ANTHROPIC_BASE_URL Anthropic API ๅœฐๅ€ -
COMPSYNTH_MODEL ๆจกๅž‹ๅ็งฐ๏ผˆๅฆ‚ gpt-4o-miniใ€claude-sonnet-4-20250514๏ผ‰ gpt-4o-mini
COMPSYNTH_LLM_BATCH_SIZE LLM ๆ‰นๅค„็†ๅคงๅฐ 10
COMPSYNTH_SUMMARIZE_CHUNK_SIZE ๆ‘˜่ฆๅˆ†ๅ—ๅคงๅฐ 50

ๅญ˜ๅ‚จ

ๅ˜้‡ ่ฏดๆ˜Ž ้ป˜่ฎคๅ€ผ
COMPSYNTH_CRAWL_DB_PATH ็ˆฌๅ–็Šถๆ€ๆ•ฐๆฎๅบ“่ทฏๅพ„ ./data/crawl_state.db
COMPSYNTH_SITE_SCHEMA_DB_PATH ็ซ™็‚น Schema ๆ•ฐๆฎๅบ“่ทฏๅพ„ ./data/site_schemas.db

็ˆฌ่™ซ

ๅ˜้‡ ่ฏดๆ˜Ž ้ป˜่ฎคๅ€ผ
COMPSYNTH_REQUEST_TIMEOUT ่ฏทๆฑ‚่ถ…ๆ—ถ๏ผˆ็ง’๏ผ‰ 30
COMPSYNTH_MAX_CONCURRENT_REQUESTS ๅ•ๆบๆœ€ๅคงๅนถๅ‘่ฏทๆฑ‚ๆ•ฐ 5
COMPSYNTH_MAX_CONCURRENT_SOURCES ๆœ€ๅคงๅนถๅ‘ๆบๆ•ฐ 10
COMPSYNTH_CRAWL_DOMAIN_DELAY ๅŒๅŸŸๅ่ฏทๆฑ‚้—ด้š”๏ผˆ็ง’๏ผ‰ 1.0
COMPSYNTH_LIST_PAGE_TIME_THRESHOLD_DAYS ๅˆ—่กจ้กตๆ—ถ้—ด้˜ˆๅ€ผ๏ผˆๅคฉ๏ผ‰ 7
COMPSYNTH_LIST_PAGE_COUNT_THRESHOLD ๅˆ—่กจ้กตๆ•ฐ้‡้˜ˆๅ€ผ 20

้€‰ๆ‹ฉๅ™จๅฅๅบทๅˆทๆ–ฐ๏ผˆๅฏ้€‰๏ผ‰

ๅ˜้‡ ่ฏดๆ˜Ž ้ป˜่ฎคๅ€ผ
COMPSYNTH_SELECTOR_ZERO_REFRESH_ENABLED ๅฏ็”จ้›ถ็ป“ๆžœ้€‰ๆ‹ฉๅ™จ่‡ชๅŠจๅˆทๆ–ฐ true
COMPSYNTH_SELECTOR_ZERO_REFRESH_DAYS ่ฟž็ปญ้›ถ็ป“ๆžœๅคฉๆ•ฐ่งฆๅ‘ๅˆทๆ–ฐ 3
COMPSYNTH_SELECTOR_ZERO_REFRESH_LOOKBACK_DAYS ๅฅๅบทๆฃ€ๆŸฅๅ›žๆบฏๅคฉๆ•ฐ 7
COMPSYNTH_SELECTOR_ZERO_REFRESH_COOLDOWN_HOURS ๅˆทๆ–ฐๅ†ทๅดๆ—ถ้—ด๏ผˆๅฐๆ—ถ๏ผ‰ 24

่ฎข้˜…ไธŽ่พ“ๅ‡บ

ๅ˜้‡ ่ฏดๆ˜Ž ้ป˜่ฎคๅ€ผ
COMPSYNTH_SUBSCRIPTIONS_PATH ่ฎข้˜…ๆบ้…็ฝฎๆ–‡ไปถ่ทฏๅพ„ ./subscriptions.yaml
COMPSYNTH_OUTPUT_DIR ๆŠฅๅ‘Š่พ“ๅ‡บ็›ฎๅฝ• ./output

้€š็ŸฅๆŽจ้€

ๅ˜้‡ ่ฏดๆ˜Ž ้ป˜่ฎคๅ€ผ
COMPSYNTH_NOTIFICATION_CHANNELS ๅฏ็”จ็š„ๆŽจ้€ๆธ ้“๏ผŒ้€—ๅทๅˆ†้š”๏ผˆๅฆ‚ email๏ผ‰ -
COMPSYNTH_SMTP_HOST SMTP ๆœๅŠกๅ™จๅœฐๅ€ -
COMPSYNTH_SMTP_PORT SMTP ็ซฏๅฃ 465
COMPSYNTH_SMTP_USER SMTP ็”จๆˆทๅ -
COMPSYNTH_SMTP_PASSWORD SMTP ๅฏ†็ /ๆŽˆๆƒ็  -
COMPSYNTH_SMTP_FROM ๅ‘ไปถไบบๅœฐๅ€ -
COMPSYNTH_SMTP_TO ๆ”ถไปถไบบๅœฐๅ€ -
COMPSYNTH_SMTP_USE_TLS ๅฏ็”จ TLS true

ๅฎŒๆ•ด้…็ฝฎๅ‚่€ƒ่ง .env.exampleใ€‚


Roadmap

  • ้ข„ๅค„็†ๆ้ซ˜ Selectors ๆœ‰ๆ•ˆๆ€ง โ€” 3 ๅฑ‚ HTML ้ข„ๅค„็†็ฎก็บฟ๏ผˆๅŽ‹็ผฉ โ†’ ๆทฑๅบฆๆธ…็† โ†’ ๅฑžๆ€งๅ‰ฅ็ฆป๏ผ‰
  • ๆŽจ้€ๅŠŸ่ƒฝ โ€” ้‚ฎไปถๆŽจ้€๏ผˆSMTP ่‡ชๅŠจๆฃ€ๆต‹๏ผ‰๏ผŒcompsynth notify ็‹ฌ็ซ‹ๅ‘้€
  • ๅฎšๆ—ถไปปๅŠก โ€” ๆ”ฏๆŒ้…็ฝฎ่‡ชๅŠจๅฎšๆœŸๆŠ“ๅ–ๅ’Œ็”Ÿๆˆๆ—ฅๆŠฅ
  • ๅขžๅผบไฟกๆฏๆบไธŽๅ็ˆฌ้€š็”จๆ€ง โ€” ๆ”ฏๆŒๆ›ดๅคš็ฝ‘็ซ™็ฑปๅž‹๏ผŒ่‡ชๅŠจๅค„็†ๅธธ่งๅ็ˆฌๆœบๅˆถ๏ผˆUAใ€ไปฃ็†ๆฑ ใ€้ชŒ่ฏ็ ็ญ‰๏ผ‰
  • ๅฐ่ฃ…ไธบSKILL โ€” ๅขžๅผบCLI้€š็”จๆ€ง๏ผŒๅฐ่ฃ…ไธบSKILLไพ›Agentไฝฟ็”จ

ๅผ€ๅ‘

ๅ‰็ฝฎ่ฆๆฑ‚

  • Python 3.11+
  • uv
  • Node.js 18+ (ๅ‰็ซฏๅผ€ๅ‘)

ๅฎ‰่ฃ…

uv sync
cd frontend && npm install

ๅผ€ๅ‘

# ๅŽ็ซฏ
uv run compsynth serve

# ๅ‰็ซฏ
cd frontend && npm run dev

ๆต‹่ฏ•

uv run python -m pytest -q
uv run python -m compileall -q src tests

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors