Extraction fix: the anti-hallucination check (a claim's verbatim_quote must appear in the source window) was too brittle against auto-captions — fragmented segments joined with newlines meant a valid quote spanning a join was dropped (0 claims on a 623-segment captions transcript). Now whitespace-normalized matching (_norm + _quote_supported, ~40-char prefix): the SAME transcript yields 6 real claims (WETG +160% reverse-split+news; 4 AURC trade claims with prices; a rejection concern), each quote verifiably present. Whisper output is cleaner still; this just makes the captions fallback usable too. - tests/unit/test_youtube_extraction.py: 5 pure-helper tests (norm, quote-support across joins, hallucination rejection, verbatim-quote-mandatory drop, chunk time-spans). - youtube_claims/momentum-transcripts.service: reboot-surviving systemd user unit (Restart=always, loads secrets from .env; Whisper option A/CPU, env-flippable to B/GPU). END-TO-END VERIFIED (captions path, no ffmpeg): detection -> claim -> transcribe -> extract -> 6 claim rows in Postgres. Full Whisper path needs `sudo apt install ffmpeg`, then `systemctl --user enable --now momentum-transcripts` to process the 11-video backlog at Whisper quality + poll for new uploads. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
783 B
Desktop File
20 lines
783 B
Desktop File
[Unit]
|
|
Description=Momentum YouTube transcript -> claim-extraction pipeline
|
|
StartLimitIntervalSec=0
|
|
|
|
[Service]
|
|
Type=simple
|
|
WorkingDirectory=/mnt/c/code/momentum
|
|
# secrets (DATABASE_URL, YOUTUBE_API_KEY, YT_WATCHLIST) load from the repo's gitignored .env
|
|
# via youtube_claims.config (python-dotenv). Whisper is option A (CPU) by default; flip to the
|
|
# LAN GPU (option B) with YT_WHISPER_MODEL=large-v3 YT_WHISPER_DEVICE=cuda YT_WHISPER_COMPUTE_TYPE=float16.
|
|
ExecStart=/home/philip/.venvs/momentum/bin/python -u -m youtube_claims.run run
|
|
Restart=always
|
|
RestartSec=30
|
|
StandardOutput=append:/mnt/c/code/momentum/data/transcripts_pipeline.log
|
|
StandardError=append:/mnt/c/code/momentum/data/transcripts_pipeline.log
|
|
SyslogIdentifier=momentum-transcripts
|
|
|
|
[Install]
|
|
WantedBy=default.target
|