yt_ysk

本頁說明 yt_ysk 專案(本機路徑常見為 ysk_project):每天 20:45 自動執行的 Python Pipeline——從 YouTube 下載 YSK(楊世光)頻道字幕,經 Gemini 解析後產出投資訊號報告,並推送到 GitHub Pages


系統概覽

整體流程由 schedule.csvQueue 欄位串接;由 schedule_entry.py 在排程時間啟動,依序執行各 Step。任一步驟以非零結束碼失敗時,後續 Step 不執行。

主流程圖(Mermaid)

📐 主流程圖(點此展開)
flowchart TD
  SCH["schedule_entry.py 每日 20:45 啟動"]
  Q["schedule.csv Queue 欄位串接"]
  S1["Step1 ysk_entry.py 下載 YSK 字幕 .srt"]
  S2["Step2 quant_parser_ysk_gemini Gemini 解析 md"]
  S3["Step3 add_frontmatter Jekyll front matter"]
  S4["Step4 uti_git_push GitHub Pages"]
  OK["完成部署"]
  STOP["中斷 後續 Step 不執行"]

  SCH --> Q
  Q --> S1
  S1 -->|exit 0| S2
  S1 -->|exit 非0| STOP
  S2 -->|exit 0| S3
  S2 -->|exit 非0| STOP
  S3 -->|exit 0| S4
  S3 -->|exit 非0| STOP
  S4 -->|exit 0| OK
  S4 -->|exit 非0| STOP

流程摘要(文字):

schedule_entry.py(20:45 啟動)
└── Step 1: ysk_entry.py              ← 下載 YSK YouTube 字幕(.srt)
└─ 成功 ─→ Step 2: quant_parser_ysk_gemini_entry.py  ← Gemini AI 解析 → .md
└─ 成功 ─→ Step 3: add_frontmatter.py    ← 加 Jekyll frontmatter
└─ 成功 ─→ Step 4: uti_git_push.py  ← push GitHub Pages

Step 1:ysk_entry.py — 字幕下載

功能: 掃描 YSK(楊世光)YouTube 頻道,抓取最近 7 天新集數的繁體中文字幕(.srt)。

核心行為:

輸出路徑(本機): /Volumes/2T_260130/py_in_2T/ysk_project/output_srt/

手動執行:

python ysk_entry.py              # 預設:最近 7 天
python ysk_entry.py --days 14    # 最近 14 天
python ysk_entry.py --all        # 全部(不限日期)

Step 2:quant_parser_ysk_gemini_entry.py — Gemini AI 解析

功能: 掃描 output_srt 目錄中的新 .srt 字幕,透過 Gemini 萃取投資訊號,產出每日 Markdown 報告。

核心行為:

Gemini API 重試機制

週末自動週報(try_auto_weekly_summary()

Step 2 輸出檔案一覽

檔案 說明
quant_parser_raw_gemini_info.csv 累積訊號資料庫(所有日期)
daily_report_gemini/daily_report_gemini_YYYYMMDD.md 每日投資訊號報告
summary_report_gemini/ysk_YYYYMMDD_YYYYMMDD_summary.txt 每週摘要(週末自動產生)
quant_parser_ysk_gemini_entry.log 執行日誌

手動執行:

python quant_parser_ysk_gemini_entry.py                      # 正常巡邏(掃新 SRT)
python quant_parser_ysk_gemini_entry.py --update today       # 強制重跑今天(清除舊紀錄再跑)
python quant_parser_ysk_gemini_entry.py --update 20260410    # 強制重跑指定日期
python quant_parser_ysk_gemini_entry.py --action get_result --date 20260410  # 只產報告

Step 3:add_frontmatter.py

為產出的 Markdown 加上 Jekyll front matter,以便本站與 GitHub Pages 正確渲染、分類。


Step 4:uti_git_push.py

將變更 push 至遠端,更新 GitHub Pages 內容。


週末自動週報流程(Mermaid)

📐 週末週報流程(點此展開)
flowchart TD
  START["quant_parser_ysk_gemini_entry.py 執行"]
  WD{"今天是否週六或週日?"}
  SKIP1["否 跳過週報 正常巡邏"]
  CALC["是 計算本週一至週五 YYYYMMDD"]
  EXIST{"週報檔 summary_report_gemini 已存在?"}
  SKIP2["存在 跳過 冪等"]
  GEN["不存在 generate_daily_note mon-fri"]
  CSV["讀取 CSV 本週訊號"]
  GEM["呼叫 Gemini 週度摘要"]
  OUT["寫入 ysk 起訖日 summary.txt"]
  PATROL["繼續正常巡邏 掃今日新 SRT"]

  START --> WD
  WD -->|否| SKIP1
  WD -->|是| CALC
  CALC --> EXIST
  EXIST -->|是| SKIP2
  EXIST -->|否| GEN
  GEN --> CSV --> GEM --> OUT
  OUT --> PATROL
  SKIP2 --> PATROL
  SKIP1 --> PATROL

週末週報流程(文字)

quant_parser 執行時
├─ 判斷今天是否為週六(5) 或 週日(6)
│     否 → 跳過,直接進入正常巡邏
│     是 ↓
├─ 計算本週一到本週五的日期(YYYYMMDD)
├─ 檢查 summary_report_gemini/ysk_{mon}_{fri}_summary.txt 是否已存在
│     存在 → 跳過(冪等)
│     不存在 ↓
├─ 呼叫 generate_daily_note(f"{mon_str}-{fri_str}")
│     → 讀取 CSV 中本週所有訊號
│     → 呼叫 Gemini 做週度摘要分析
│     → 寫入 summary_report_gemini/ysk_YYYYMMDD_YYYYMMDD_summary.txt
└─ 繼續正常巡邏(掃今天的新 SRT)

常見問題與補救

狀況 可能原因 補救
出現 ⚠️ 無法提取有效邏輯 Gemini 503/429 重試 10 次仍全失敗 稍後手動執行 python quant_parser_ysk_gemini_entry.py
.srt 但沒產出 .md 某次 quant_parser 失敗,之後手動跑才成功 執行 python quant_parser_ysk_gemini_entry.py
字幕下載失敗、hard_failure yt-dlp 過舊/Cookie 失效/IP 被擋 升級 yt-dlp、刪除對應 .empty.srt 後重跑(依你本機環境調整)
週報沒產生 當天排程尚未跑到(未到 20:45) 等待自動觸發,或手動執行 quant_parser_ysk_gemini_entry.py
想強制重跑某天報告 python quant_parser_ysk_gemini_entry.py --update 20260410

與本站之關係

Pipeline 推送後,日報與週報可對應到本儲存庫內 投資筆記 路徑(例如 investment/daily/investment/weekly/ 下之 YSK/Gemini 相關檔案),實際目錄以你 repo 內 add_frontmatter.py 與 push 設定為準。


端到端總覽(yt_ysk):schedule.csv Queue 串接四步;任一步 exit ≠ 0 即中止。週末執行 quant_parser 時另可走週報分支(冪等、不重複產檔)。產出經 git push 更新 GitHub Pages