trading/scripts/kevin-analyze.sh
Viktor Barzin a93cb06898
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was canceled
feat(scripts): ad-hoc Meet Kevin video analyzer CLI
Given a YouTube video ID or URL, runs the same caption-extraction +
LLM-analysis pipeline the watcher uses in prod, then prints the
extracted tickers + actions sorted by action priority and conviction
descending. No DB writes, no Redis publish — strictly observational.

Two entry points:
  - scripts/analyze_kevin_video.py — pure Python; needs yt-dlp +
    Anthropic OAuth token in env. Local laptop yt-dlp tends to hit
    "Sign in to confirm you're not a bot" rate-limits; running inside
    a cluster pod avoids this.
  - scripts/kevin-analyze.sh — wrapper that finds the running
    trading-bot-workers pod and execs the Python script in the
    meet-kevin-watcher container. Easiest invocation.

Example:
  $ ./scripts/kevin-analyze.sh poUJIZRmFew
  === Meet Kevin analysis — poUJIZRmFew ===
    Market outlook: bullish
    TICKERS (12):
      SYMBOL   ACTION    CONV HORIZON     RATIONALE
      APPF     buy      85.0% long_term   Apploven's looking fantastic ...
      SOX      buy      80.0% months      Semiconductor ETF momentum ...
      ...
2026-05-27 12:05:59 +00:00

27 lines
735 B
Bash
Executable file

#!/usr/bin/env bash
# Ad-hoc Meet Kevin video analyzer wrapper.
#
# Usage:
# ./scripts/kevin-analyze.sh <video-id-or-url>
#
# Picks the running meet-kevin-watcher container (which already has
# yt-dlp + ffmpeg + the Anthropic token + the right Python env) and
# runs scripts/analyze_kevin_video.py inside it.
set -euo pipefail
if [[ $# -ne 1 ]]; then
echo "usage: $0 <youtube-video-id-or-url>" >&2
exit 1
fi
POD=$(kubectl -n trading-bot get pod -l app=trading-bot-workers \
-o jsonpath='{.items[0].metadata.name}')
if [[ -z "$POD" ]]; then
echo "no trading-bot-workers pod found" >&2
exit 1
fi
exec kubectl -n trading-bot exec "$POD" -c meet-kevin-watcher -- \
python -m scripts.analyze_kevin_video "$1"