xcripts

DragonsHoard 維護用腳本。一支腳本一節:做什麼、怎麼跑、依賴什麼。

convert_asset.py

一次性轉檔:把 raw/assets/ 裡從沒進過 git 的截圖,超過寬度才縮小、轉成 WebP,刪掉原檔。只能對 git 狀態是 ?? 或 A 的檔案跑(raw/ 依慣例唯讀)。

用法:python convert_asset.py <path> [<path> ...]

依賴:image_utils.py(同資料夾)。

image_utils.py

convert_asset.py、photo_watcher.py 共用的圖片轉檔邏輯(resize + 轉 WebP)。不是獨立執行的腳本。

photo_watcher.py

背景常駐程式,監看 photos/、memes/ 資料夾,新圖自動轉檔(邏輯同 image_utils.py)。由 launch-dragonshoard.ps1 啟動 Claude Code 時一併帶起、關閉時一併停止,不需要手動執行。

launch-dragonshoard.ps1

啟動 DragonsHoard 用的 Claude Code session,順便帶起 photo_watcher.py,結束時一併關閉。

image_convert/

手動把圖片拖進去轉檔的資料夾,跟主要 ingest 流程無關。

  • convert_webp.py:把 .webp 轉成 iThome 可上傳的格式(有透明背景轉 .png,其餘轉 .jpg),輸出到 image_convert/output/(不進 git),不動原檔。
  • 拖曳轉檔.bat:把檔案或資料夾拖到這個 bat 上,等同執行 convert_webp.py。

依賴:Pillow。

video_convert/

手動把影片拖進去轉檔的資料夾。

  • convert_video.py:把影片轉成 GIF(palette 兩階段轉換),輸出到 video_convert/output/(不進 git),不動原檔。
  • video_utils.py:convert_video.py 的核心轉檔邏輯,不是獨立執行的腳本。
  • 拖曳轉檔.bat:把檔案或資料夾拖到這個 bat 上,等同執行 convert_video.py。

用法:python convert_video.py <path> [<path> ...],或直接拖檔案/資料夾到 拖曳轉檔.bat。

依賴:imageio-ffmpeg(內含可攜式 ffmpeg,不需要系統安裝 ffmpeg 或設定 PATH)。若 import 失敗,執行 pip install imageio-ffmpeg 後再重跑即可,裝好後留在該機器的 Python 環境裡。

telegram_materials_sync.py

把 Telegram Saved Messages 裡的新訊息落地成 materials/ 底下的檔案。設定與登入方式見腳本開頭 docstring。

用法:python telegram_materials_sync.py

依賴:telethon;telegram_config.json(帳號存取權,不進 git,複製 telegram_config.example.json 填入後使用)。

hoard-lint skill 呼叫的 wiki 連結圖檢查:孤兒頁面、失效連結(正向/反向)、連結目標歧義、新頁面最低連結數要求。掃描範圍是這次 commit 對 wiki/ 的異動。

用法:python wiki_link_check.py(在 repo 根目錄執行)

youtube_summarize/

用 Gemini API 摘要 YouTube 影片。設定與用法見資料夾內 summarize.py 開頭說明。

依賴:.env(Gemini API key,不進 git,複製 .env.example 填入後使用)。