嘗試寫一個擴充程式

嘗試寫一個擴充程式

February 17, 2026

最近幾天在嘗試 vibe coding,只是我為什麼突然要寫程式?

看到歐趴做了 X 的 AI 第二意見工具,想想覺得好像也需要一套 for YouTube 的第二意見工具,因此讓我產生 vibe coding 出擴充程式的念頭。

一開始我用 Proton Lumo 試著做出 MVP,結果連骨架都生不出來,ChatGPT 就更不用說了1,後來 Leaf 寫信告訴我用 Gemini 生出骨架,Claude + Copilot 做後續處理,可以另外搭配 Re-Ex 減少 AI 幻覺。

在一開始,我其實很想用 privacy-focused 的 AI 模型,但是用起來都跟💩一樣,直到 Leaf 寫信,我才心不甘情不願地回去用 big tech 的服務。

最一開始,我告訴 Gemini 我想做一套可以判斷 YouTube 頻道品質的擴充套件,並且我想要可以直接複製貼上的版本,Gemini 就直接給我概念和骨架了:

抓取影片 ID → 丟給 YouTube data API → 拿到標題 → 分析標題是否符合扣分規定 → 計算分數

Gemini 第一次讓我測試不用 API 的版本,抓到 ID 之後會隨機打分數。但是連 ID 都抓不到,問了大概兩三次,逐步 debug 才解決。

抓到問題的那一步

接下來就是抓 API 了,Gemini 要我先去 Google Cloud Console 申請 YouTube Data API v3,然後把 key 塞進去程式碼。這步我有點想嗆一下 Gemini:步驟給得很模糊欸,到底是在幹嘛啊?

Gemini 給的 API 申請步驟

雖然只花了我五分鐘就搞清楚 API 申請到底在幹嘛,不過還是有點不爽😠

複製 Gemini 給的程式碼、貼上 API key 之後測試 …

又掛掉了

*!又壞掉了!不過這次一步就解決了。

檢查程式可以執行之後,改到其他影片測試,確定也可以運作。接下來就是加入評分規則了。

AI 生成的倪海廈

但話說很明顯是誇大跟假內容,為什麼觀看數跟留言超多啊?

(我後來在維基百科上查到,倪海廈本人早在 2012 年就過世了,而且生前爭議 … 自己去看吧。我有點擔心身邊的長輩會不會相信這種內容 …)

重新讓 AI 生成有扣分規則的版本

加入過濾規則的 background.js

重新檢查可以運作

不過我想加一點功能,像是滑鼠移到分數上時可以顯示詳細分析結果,類似 Opass 做的擴充程式的樣子:

所以重新生成可以有上述要求的版本,結果又掛掉了(為什麼每次加新功能就出錯啦!

後來 Gemini 給了測試指令,要我貼到 console 之後回傳結果,結果都在亂寫。之後我就換成 Claude 了。

我直接把有問題的程式打包成壓縮檔給 Claude,讓它思考一下果然就生出解決方案了。

不過我做了件危險又白痴的事情:在它處理到一半的時候,我才發現忘記把 API key 刪掉了。不過沒關係,反正這個 API 我沒有打算要做其他事,也有限制只能存取 YouTube Data API,就算會被 Anthoropic 亂來,他們也做不了什麼,大不了我把 API 刪掉而已。

因為我忘記把 key 拿掉,Claude 以為這是示範用 API,所以 Claude 加了 API 判斷功能,如果放了我忘記拿掉的 API,程式就不會執行。但它沒有提醒我這件事,結果我測試的時候程式一直執行不了,花時間檢查程式才發現這件事。

程式沒抓到 API 有 API 檢查功能的 background.js

讓 Claude 修正完之後,程式可以執行了,不過我覺得分數有問題,要重新訂定扣分規則。

改完之後基本上就沒問題了,不過我覺得還要點進影片才能看到分數是有點奇怪的事,所以我讓 Claude 修改成在搜尋結果就可以看到分數,順便讓 Shorts 也支援跟修一下 bug。

# ✅ V3.1 增強版完成!
根據您的需求,我已經全面升級系統:

# 🎉 新功能總覽
## 1️⃣ Shorts 影片支援 🎬
滑鼠移到 Shorts 縮圖上時,會顯示:
┌─────────────────┐
│                 │
│      85         │ ← 大字分數
│   🟢 品質評分   │ ← 燈號
│                 │
└─────────────────┘
半透明綠色覆蓋層
## 2️⃣ 智慧重試機制 🔄

- 抓不到分數?自動重試 3 次
- 每次間隔 2 秒
- 失敗後記錄,不會無限重試

## 3️⃣ 強制更新 Cache 💾

- 每次進入新影片自動清除 cache
- 確保看到最新評分
- Console 會顯示:📹 進入新影片,強制清除 cache

## 4️⃣ 自動重新整理 🔄

- 連續 10 次失敗後
- 自動重新整理頁面
- 5 秒倒數提示

## 5️⃣ 增強的頻道 ID 提取
支援多種提取方式:

- 標準 /channel/UC... URL
- /@username 格式
- data-channel-id 屬性
- 內部 JSON 數據
- Script 標籤解析


🔍 Console 日誌範例
正常運作:

✅ YouTube Quality Detector V3.1: Content script loaded
📺 開始處理影片列表...
📹 處理影片: {channelId: "UCxxxxxx", videoTitle: "..."}
📡 請求評分(第 1 次): UCxxxxxx
📥 收到評分: 85
✅ 評分獲取成功: 85
✅ 一般徽章已注入

重試情況:
⚠️ 評分獲取失敗,2000ms 後重試...
📡 請求評分(第 2 次): UCxxxxxx

進入新影片:
🔄 URL 變化: https://www.youtube.com/watch?v=...
📹 進入新影片,強制清除 cache

自動重新整理:
🔄 失敗次數過多,5 秒後重新整理頁面...

# 🚀 快速開始

1. 解壓縮 youtube-quality-detector-v3.1.zip
2. 設定 API Key(background.js 第 8 行)
3. 載入擴充功能(chrome://extensions/)
4. 打開 YouTube - 開始使用!


# 📋 重要提醒
## 關於 Shorts

- 必須滑鼠移到縮圖上才會顯示
- 不是點擊,是懸浮(hover)
- 第一次需要等待 API 請求(2-3 秒)

## 關於重試

- 最多自動重試 3 次
- 每次間隔 2 秒
- 如果仍失敗,會跳過該影片

## 關於 Cache

- 進入新影片會自動清除
- 30 分鐘內相同頻道會使用快取
- 可手動重新載入擴充功能清除

## 關於重新整理

- 連續 10 次失敗會觸發
- 可能是 API 配額用完或網路問題
- 可在程式碼中關閉此功能

但是新功能似乎沒成功,Claude 的使用額度也快用完了,所以後來也沒繼續做了。至少這次我覺得 Claude 的使用體驗還不錯,注重隱私的 Proton Lumo 跟 Claude 會是唯二我願意花錢訂閱的 AI 服務。

(想要原始碼可以另外跟我要,我覺得值得繼續做下去)


  1. 其實 ChatGPT 是可以寫程式的,只是 OpenAI 故意把功能做得很爛,在對話一開始還故意讓 ChatGPT 問一些不必要的問題,浪費對話容量。話說我在 ChatGPT 測試階段(GPT-2)、台灣新聞媒體還沒報導的時候就在用了。 ↩︎