feat: add English vocab extraction and Anki card registration

- core/vocab.py: extract B1-B2 level vocabulary from English content via Gemini Flash
- core/anki.py: register vocab cards to AnkiConnect (English::Vocabulary deck)
- core/enricher.py: add language detection field + summary_ko (Korean summary)
- core/obsidian.py: render Korean + English summary in note
- daemon/worker.py: call vocab extraction and Anki registration for English content
This commit is contained in:
joungmin
2026-02-28 08:39:58 +09:00
parent 86a4104ae3
commit a9db6a8771
5 changed files with 208 additions and 8 deletions

View File

@@ -4,11 +4,13 @@ import logging
import os
import time
from core.anki import add_vocab_cards
from core.chunker import chunk_text
from core.enricher import enrich
from core.obsidian import save_note
from core.queue_db import fetch_pending, set_done, set_error, set_processing
from core.vector import save_to_vector
from core.vocab import extract_vocab
from core.web import fetch_page_text
from core.youtube import get_transcript
@@ -62,6 +64,7 @@ def process_item(item: dict) -> None:
source_url=url,
author=meta.get("author") or "",
date=meta.get("date") or "",
summary_ko=meta.get("summary_ko", ""),
)
logger.info("Obsidian note saved: %s", note_path)
@@ -70,6 +73,12 @@ def process_item(item: dict) -> None:
inserted = save_to_vector(doc_id, chunks)
logger.info("Vector store: inserted %d chunks for doc_id=%s", len(inserted), doc_id)
# Add Anki vocabulary cards for English content
if meta.get("language", "").startswith("en"):
vocab = extract_vocab(text, title)
if vocab:
add_vocab_cards(vocab, source_title=title)
set_done(row_id, title, meta)
logger.info("Done: %s%s", row_id[:8], title[:60])