English | 繁體中文
Shinkansen 🚄
快速、私密的網頁、YouTube 字幕翻譯擴充功能,支援 8 種目標語言與多種 AI 引擎(Google Gemini、Google Translate、OpenAI 相容自訂模型),原地替換網頁文字保留原始排版,瀏覽資料不經過第三方伺服器。
名稱「新幹線」象徵快速、平穩、流暢的閱讀體驗。
從 Chrome Web Store 安裝 · 從 Firefox Add-ons 安裝 · 從 Mac App Store 安裝 · 從 App Store 安裝(iOS / iPadOS) · 下載最新版本 zip · 安裝教學與產品介紹見 官方網頁 · 更新紀錄
近期重大更新
- iOS / iPadOS 版正式登陸 App Store,Safari 擴充功能搭配多指觸控翻譯與懸浮按鈕,開箱即用
- 新增 Word(.docx)文件翻譯,譯文寫回原檔,版面、樣式、表格、註解全保留,可輸出雙語對照版
- 新增字幕檔翻譯,SRT / WebVTT / ASS 字幕檔逐則翻譯,時間軸與樣式標記原樣保留,可輸出單語或雙語字幕
- PDF 翻譯放寬上限並修正版面,檔案上限放寬到 50 MB / 300 頁、可指定翻譯頁數範圍,修正雙欄短行、彩色底、旋轉頁、段落溢出等版面問題,簡體 / 日文 / 韓文譯文字型用到才下載
- 新增 EPUB 電子書翻譯,全書術語表與譯後一致性掃描確保人名譯名前後一致,譯本可下載單語或雙語對照版
- 新增 TXT / Markdown / HTML 檔案文件翻譯,譯文輸出格式與原檔相同;術語表匯入同步支援 CSV(兩欄「原文,譯名」)
- 網頁翻譯更省,每批容量翻倍,同一頁的 API 請求數減半、input token 省約三成,速度不變;YouTube 自動字幕的 AI 分句改用精簡傳輸格式,費用約減半
- 簡繁自動互轉預設開啟,簡體(或繁體)網頁載入即走內建字典本地轉換,不需 API Key、離線可用;不需要可在工具列圖示選單關閉
- 尊重網頁的「不要翻譯」標記,
translate="no"/notranslate標成不翻譯的人名、代號原樣保留、不送 API,字型圖示也不再被翻成文字 - YouTube 字幕多項修正,自動字幕時間軸修正、譯文提前 1 秒出現、切換影片不殘留舊字幕,youtube.com/live/ 直播連結也能翻譯字幕
- 大量翻譯品質與穩定性修正,簡繁自動轉換後第一下翻譯不再被當成還原、被截斷的譯文不再寫進快取、譯文被前端框架打回原文的守護補強、長網頁偵測約快三成
為什麼做這個專案
既有的網頁翻譯工具大多需要將個人瀏覽內容傳送到第三方伺服器處理,隱私權難以掌控。Shinkansen 的設計從一開始就以隱私為核心:所有設定與資料都只存在你自己的電腦上;除了你自備的 Gemini API Key 直接連線 Google 之外,不會將任何資料外傳給其他第三方;原始碼完全公開,任何人都可以檢視它的安全性。
效能實測
我們拿英文維基百科的 Taiwan 條目(超過一千段文字)做壓力測試:記憶體不增反減(中文比英文精簡)、翻譯過程中網頁不會變卡(95% 以上的時間在等 API 回應,電腦幾乎不做額外運算)、翻完後頁面結構維持乾淨不留痕跡。用最便宜的模型翻完整頁,API 費用不到 0.08 美元(約台幣 2.5 元),翻過的內容自動快取,下次再開不用重新花錢。完整測試數據見 PERFORMANCE.md。
功能特色
- 多語翻譯目標 + 多語介面:可選翻譯成 8 種語言(繁體中文 / 簡體中文 / 英文 / 日文 / 韓文 / 西班牙文 / 法文 / 德文)。工具列圖示選單的「翻譯成」切換,所有翻譯模式(網頁 / PDF / YouTube 字幕)共用此設定;工具列圖示 / 設定頁 / 網頁翻譯進度通知 / PDF 文件翻譯 reader 同樣支援 8 語介面,可獨立設定或跟著瀏覽器語言推導
- 極速秒翻:按下翻譯 1 秒看到頁面開始變中文,不用等整批 API 回完再一次塞回頁面(限 Gemini)
- 保留網頁排版:原地替換網頁文字,保留字型、字級、顏色與排版,連結仍可點擊、粗體斜體原樣保留
- 尊重網頁的「不要翻譯」標記:網站作者以 HTML 標準
translate="no"或notranslate標成不翻譯的人名、代號、程式碼原樣保留、不送 API;用字型顯示的圖示(HTML 裡其實是star、menu這類字)也不會被翻成文字而消失 - 單語覆蓋 / 雙語對照雙模式:工具列圖示一鍵切換顯示模式——「單語覆蓋」原地替換、「雙語對照」原文保留 + 譯文以新段落 append。雙語模式提供 4 種視覺標記(淡底色 / 左邊細條 / 虛線底線 / 無)讓你選擇譯文段落的呈現風格
- 三翻譯引擎:Gemini(AI 翻譯、品質最佳、需 API Key)+ Google Translate(非官方免費端點、不需 API Key、速度更快)+ 自訂模型,依場景自由切換
- 簡繁互轉完全免費:翻譯目標是繁體或簡體中文時,相反變體的中文內容走內建 OpenCC 字典本地轉換——不需 API Key、不打任何 API、離線可用,詞組級對照涵蓋台灣慣用詞(軟件→軟體、視頻→影片、內存→記憶體)。「簡繁自動互轉」預設開啟——簡體(或繁體)網頁載入時自動轉換,不用手動觸發;可在工具列圖示選單關閉,取消勾選當下立即還原目前頁面;混合語言頁面也只有中文段落走免費轉換,其餘照走你選的翻譯引擎
- 自訂 AI 模型:OpenAI 相容端點,可接 OpenRouter / Together / Groq / Ollama 本機等百種模型
- 三組可自訂快速鍵:
Alt+A/Alt+S/Alt+D各自綁一組翻譯預設(引擎 + 模型 + 標籤),依網頁內容重要性一鍵選擇不同引擎(例如閱讀材料用 Flash、隨手瀏覽用 Google MT)。詳見下方「翻譯快速鍵與預設」段落 - 懸浮按鈕:頁面左/右緣常駐的懸浮按鈕,點選即翻譯本頁,長按可切換翻譯引擎或叫出選單;全平台預設開啟,按鈕大小與透明度可調
- 文件翻譯(PDF / EPUB / Word / TXT / Markdown / HTML / 字幕檔):上傳檔案整份翻譯——PDF 保留原版面輸出譯文 PDF;EPUB 支援全書術語表(人名譯名跨章節一致)、章節選翻、預覽編輯與雙語對照譯本;Word(.docx)譯文寫回原檔,版面 / 樣式 / 圖表全保留,可輸出雙語對照;TXT / Markdown / HTML 檔沿用同一套章節管線,譯文輸出格式與原檔相同;SRT / WebVTT / ASS 字幕檔逐則翻譯,時間軸原樣保留,可輸出雙語字幕。詳見下方「文件翻譯」段落
- YouTube 字幕即時翻譯:自動偵測 YouTube 字幕,即時替換為你設定的目標語言(預設繁體中文),字幕樣式與原生 YouTube 字幕一致。詳見下方「YouTube 字幕翻譯」段落
- 字幕雙語對照:顯示模式設為「雙語對照」時,字幕同時顯示英文 + 中文兩行(英文在上、中文在下),適合練聽力或對照原文。YouTube 與 Google Drive 影片都適用。詳見下方「字幕雙語對照」段落
- YouTube AI 分句(自動產生字幕專用):YouTube 自動產生字幕(ASR)原本是一個個破碎的詞,經 AI 重新依語意分句後翻譯,中文字幕從「破碎的詞」變「完整句子」,閱讀體驗大幅提升。詳見下方「AI 智慧分句」段落
- 固定術語表:自訂翻譯對照表,指定特定詞彙一律翻成你要的譯名。支援全域與網域專屬兩層,網域規則覆蓋全域同名詞條。詳見下方「固定術語表」段落
- 禁用詞清單:可由你編輯的禁用詞對照表,適用任何翻譯目標語言——多數目標語言預設為空,只有繁體中文(台灣)目標預設帶 26 條(例如視頻 / 軟件 / 數據 / 網絡 / 質量 / 用戶)。會以高顯著性區塊注入到 system prompt 末端,明確要求譯文不可使用左欄詞彙。詳見下方「禁用詞清單」段落
- 只翻文章開頭:先翻前幾段預覽再決定是否讀完整篇,大幅節省 token。詳見下方「只翻文章開頭」段落
- 全文術語表一致化(預設不開啟):特別適合人名眾多的長文,自動確保同一個人名或專有名詞前後翻譯一致。詳見下方「術語表一致化」段落
- 翻譯快取與即時節費報告:雙層快取機制(本地快取 + Gemini implicit cache),翻譯完成後提示訊息即時顯示 cache hit rate 與實際節省費用。詳見下方「翻譯快取與費用計算」段落
- 用量追蹤:記錄每次翻譯的 token 數與費用,附圖表與 CSV 匯出
- 編輯譯文:翻譯完成後可直接在頁面上修改譯文,適合要列印 PDF 或讓 Readwise Reader 抓取時,手動修正翻得不理想的地方
- 送到 Instapaper:把翻譯後的整篇文章透過 Instapaper API 一鍵存進你自己的 Instapaper 帳號,存進去的是「你看到的中文譯文」而非原文。不像 Instapaper 官方儲存方式只存網址、由伺服器重新抓取原文,Shinkansen 直接上傳翻譯後的內容,日後可重讀譯文版
- 跨 tab 延續翻譯:在 tab A 按快速鍵翻譯後,從 A 點連結開新 tab B(含按住 Cmd(Mac)/ Ctrl(Windows)點連結 /
target="_blank"/window.open),B 自動翻譯並繼承同一組 preset;新 tab 再開新 tab 也繼續 - 自動翻譯指定網站:在設定頁加入常看的網域,開啟該網站時自動翻譯,不用每次手動按快速鍵(翻譯通知會標示
[自動翻譯]讓你知道是 whitelist 觸發) - 還原原文:按同一組快速鍵即切換回原文,隨時對照
- Google Docs 翻譯:自動偵測 Google Docs,開啟可翻譯的閱讀版並翻譯(詳見下方說明)
安裝方式
Chrome / Edge / Brave 等 Chromium 瀏覽器
前往 Chrome Web Store 安裝頁面 點「加到 Chrome」即可。
Firefox
前往 Firefox Add-ons 安裝頁面 點「Add to Firefox」即可。
⚠ Firefox 使用者注意:預設快捷鍵Alt+S/Alt+A/Alt+D會被瀏覽器或其他擴充功能攔截(Firefox 把Alt+S用於開啟「歷史」選單、Alt+D用於切換地址列焦點;Alt+A常被 Save Page WE 等擴充功能搶走)。Chrome 沒有此衝突,但 Firefox 環境下三組預設快捷鍵可能完全無法觸發翻譯。請到about:addons→ 設定圖示(齒輪)→「管理擴充功能快捷鍵」,把 Shinkansen 的三個快速鍵改成不衝突的組合(例如Ctrl+Shift+S)。設定頁的「翻譯快速鍵」section 也會在 Firefox 環境自動顯示這個提示
開發版(載入未封裝)
- 開啟 Chrome,網址列輸入
chrome://extensions/並按 Enter - 右上角打開「開發人員模式」
- 點「載入未封裝項目」(Load unpacked)
- 選擇本專案的
shinkansen/資料夾 - 擴充功能清單會出現 Shinkansen,可以固定到工具列
首次設定
- 申請 Gemini API Key — 直接開 aistudio.google.com/api-keys 登入後按「Create API key」,詳細步驟見 API Key 申請教學
- 點工具列的 Shinkansen 圖示 → 「設定」
- 貼上你的 Gemini API Key
- 預設模型
gemini-3.1-flash-lite、Service TierDEFAULT - 其餘參數可依需求調整(溫度、每批段數、字元預算等)
使用方式
- 手動翻譯:點工具列圖示 → 「翻譯本頁」
- 翻譯快速鍵(三組):
Option+S / Alt+S — 預設 Gemini Flash Lite(省成本,推薦日常用)
- Option+A(macOS)/ Alt+A — 預設 Gemini 3.8 Flash(品質高)
- Option+D / Alt+D — 預設 Google Translate(免費、不需 API Key)
- 三組鍵位、引擎、模型、標籤都可在設定頁「翻譯快速鍵」區塊自訂
- 已翻譯狀態下按任一快速鍵 → 還原原文
- 翻譯中按任一快速鍵 → 取消翻譯
- iOS / iPadOS 觸控手勢:在 iPhone / iPad 的 Safari 網頁上,多指輕點頁面即翻譯(等同主要預設快速鍵,再輕點一次還原原文或取消翻譯),多指長按改用次要預設。預設四指,iPhone 單手操作可在設定頁「觸控手勢翻譯」改成三指;容易誤觸發時也可在同處關閉——懸浮按鈕與外接鍵盤快速鍵不受影響
- YouTube 字幕翻譯:開啟有字幕的影片(人工或自動產生皆可),確認 CC 已開啟,點工具列圖示 → 打開「YouTube 字幕翻譯」開關
- 自動翻譯指定網站:在設定頁的「自動翻譯網站」名單加入網域,進入該網站自動翻譯(翻譯通知會顯示
[自動翻譯]前綴) - 固定術語表:在設定頁的「術語表」Tab 新增對照詞條,翻譯時會強制使用你指定的譯名
- 術語表一致化:在工具列圖示或設定頁開啟「術語表一致化」,長文翻譯會先建立專有名詞對照表
- 編輯譯文:翻譯完成後,在工具列圖示點「編輯譯文」可直接修改頁面上的譯文。編輯時頁面下方會出現浮動工具列,可逐段「復原」剛才的修改、按「完成」結束編輯
翻譯快速鍵與預設
Shinkansen 提供三組可自訂的翻譯預設,各綁一個快速鍵:
| 快速鍵 | 預設引擎 | 預設模型 | 適合場景 |
|--------|----------|----------|----------|
| Alt+S / Option+S | Gemini | Flash Lite($0.25 / $1.50) | 日常閱讀,最省 |
| Alt+A / Option+A | Gemini | 3.8 Flash($0.75 / $3.75) | 重要文章,品質優先 |
| Alt+D / Option+D | Google Translate | — | 不需 API Key、速度快、完全免費 |
可以在設定頁「翻譯快速鍵」區塊自訂:每組 preset 的引擎(Gemini / Google Translate)、模型(Flash Lite / Flash / Pro / 自訂)、顯示標籤都可以改。鍵位本身也可直接在同一區塊自訂——點該組右上方的鍵位欄位,再按下想要的組合鍵即可(Chrome 用 ⌥ Option 或 ⌃ Control;Safari 含 Mac/iPad/iPhone 請用 ⌃ Control——iOS Safari 不會把 ⌥/⌘ 傳給網頁,設定頁會自動依瀏覽器顯示可用的鍵,按 ESC 取消),iPad 外接鍵盤也能改。也可在 Chrome chrome://extensions/shortcuts、Firefox about:addons 調整內建預設鍵
統一的取消/還原行為:
- 翻譯中按任一快速鍵 → 立即取消翻譯
- 已翻譯狀態下按任一快速鍵 → 還原原文(不分用哪個 preset 翻的)
target="_blank" 或 window.open),B 會自動翻譯且繼承同一組 preset——讓使用者可以一路按連結讀下去不用每個 tab 都按快速鍵。新 tab 再開新 tab 也繼續;手動打網址 / 從 bookmark 開 / 從外部 app 開的 tab 不繼承(openerTabId 為空)。按任一組快速鍵還原只影響當前 tab,不影響樹中其他 tab。
Google Translate 翻譯引擎
Shinkansen 支援 Google Translate 作為第二翻譯引擎:
- 不需要 API Key:使用 Google 公開的非官方 web 端點(與
translate.google.com同源),完全免費 - 速度較快:機器翻譯回應時間通常比 LLM 短
- 品質折衷:語法流暢度、語感比 Gemini 略遜,但對純技術性內容(新聞、規格文件)足夠
- 保留連結與格式:
、、等語意標籤用特殊標記保護,翻譯後結構完整還原(不會把整頁打爛) - 費用為零、用量不計入 Gemini 配額:但非官方端點無 SLA 保證,Google 若改動可能需要跟進修正
Google Docs 翻譯
Google Docs 的編輯畫面使用 Canvas 渲染文字,一般的網頁翻譯擴充功能無法存取其內容。Shinkansen 會自動偵測 Google Docs 頁面,並採用以下流程:
- 在 Google Docs 編輯頁面按下
Option + S(或點工具列圖示的「翻譯本頁」) - Shinkansen 會自動在新分頁開啟同一份文件的「行動版閱讀模式」(mobilebasic)
- 新分頁載入完成後自動開始翻譯,不需再按一次
文件翻譯(PDF / EPUB / Word / TXT / Markdown / HTML / 字幕檔)
點工具列 Shinkansen 圖示 → 「翻譯文件」,開啟獨立分頁後把 PDF、EPUB、Word(.docx)、TXT、Markdown、HTML 或字幕檔(SRT / WebVTT / ASS)拖進頁面即可整份翻譯。檔案完全在你的瀏覽器本機解析,除了送給翻譯引擎的文字之外不上傳任何內容。唯一的例外是目標語言為簡體中文 / 日文 / 韓文的 PDF 翻譯:第一次會從專案網站下載對應字型(約 10–20 MB,只下載一次,之後離線可用),請求不含任何文件內容。
PDF 翻譯:
- 保留原版面:解析 PDF 版面重建段落(欄位、表格、清單、圖說),譯文按原位置渲染
- 線上閱讀器:翻譯完成後原文與譯文左右對照,捲動同步
- 下載譯文 PDF:譯文直接寫在原頁面版面上(內嵌繁中字型),下載
<原檔名>-shinkansen.pdf離線閱讀或轉存 - 指定翻譯頁數:解析後可填起訖頁碼只翻其中一段,長篇報告 / 手冊不必整份送翻;閱讀器與下載的 PDF 仍是完整文件,範圍外的頁維持原文
- 上限:300 頁 / 50 MB;純掃描影像(需 OCR)與加密 PDF 不支援
- 全書術語表:翻譯前掃描全書抽出人名 / 地名 / 術語對照表(含暱稱、簡稱、姓氏單獨出現等變體),過目編輯後全程凍結,確保譯名跨章節一致;譯名寫純中文就只輸出中文(模型自行補上的「(原文)」會被清掉),要附原文對照就把譯名寫成「譯名(原文)」並勾「對照一次」;可匯出 / 匯入 JSON,也可匯入外部整理的 CSV(兩欄「原文,譯名」,容許表頭列與引號跳脫),系列作續集可重用前作譯名
- 章節選翻:解析後列出章節清單(含每章字數與預估費用),先翻一兩章驗品質再續翻,已翻章節走快取不重付
- 譯後一致性掃描:每輪翻譯完成自動偵測「同一原文多譯名」漂移,可一鍵統一譯名並回填術語表
- 預覽與編輯:逐章與全書預覽、段落點擊即改、搜尋取代、原文對照顯示
- 工作階段自動存檔:翻譯進度、術語表、累計費用整包存在瀏覽器本機,關頁重開自動還原,也可匯出成檔案在另一台電腦匯入接續
- 譯本下載:譯文寫回原書結構(CSS / 圖片 / 字型與未翻章節原樣保留),可選單語譯文或雙語對照版;上限 100 MB,DRM 書不支援
- 譯文寫回原檔:版面、樣式、字型、圖片、表格全部由 Word 自身維持——粗斜體、底線、色字、螢光標記、超連結、清單編號、書籤都原樣保留,下載
<原檔名>-shinkansen.docx直接用 Word 開啟編輯 - 章節選翻:依標題樣式(標題 1 / 標題 2)切章出章節勾選清單;頁首頁尾、註腳、文件註解各自成章可獨立勾選,註解內容也會翻譯
- 目錄與頁碼欄位不會壞:PAGE / 目錄等 Word 欄位原樣保留,翻完在 Word 更新欄位即以譯後標題重算
- 單語或雙語對照:雙語版原文段落保留、譯文段落接在每段後面(
-shinkansen-dual.docx),切換重新下載不重翻 - 與 EPUB 同一套管線:全書術語表、譯後一致性掃描、預覽編輯、工作階段自動存檔、費用預估全部沿用
- 限制:上限 100 MB;加密檔與含未接受追蹤修訂的檔案會擋下提示;舊版
.doc不支援
- 與 EPUB 同一套管線:全書術語表、譯後一致性掃描、預覽編輯、工作階段自動存檔、費用預估全部沿用
- TXT:按空行分段翻譯,空行與分隔線原樣保留
- Markdown:按標題(
#/##)切章出章節勾選清單;標題、清單、引用等標記結構保留,程式碼區塊不翻譯原樣帶過 - HTML:儲存下來的網頁(
.htm/.html)沿用 EPUB 章節的序列化引擎,行內粗斜體與連結標記保留,/ 樣式原樣帶過 - 譯文輸出格式與原檔相同:txt 進 txt 出、Markdown 進 Markdown 出、HTML 進 HTML 出,下載檔名為
<原檔名>-shinkansen.<副檔名>
- 逐則翻譯:每則字幕為一個翻譯單位,送翻時以前後字幕為語境但不合併、不拆分,譯文精簡口語
- 時間軸與結構原樣保留:序號、時間軸、WEBVTT 標頭與 NOTE / STYLE 區塊、ASS 的樣式區段與
Comment:行都不動,譯文字幕檔與原檔同則數、同時間軸 - 行內標記保留:
//等標記、說話者標記、ASS 的{\an8}定位與\N換行原樣還原 - 句末不加句號:譯文每則結尾不加「。」(問號、驚嘆號保留),跟 YouTube 字幕翻譯一致;翻譯設定裡可關閉,預覽與下載都套用,關閉即回到 AI 原始輸出(只在翻譯目標為中文時生效)
- 單語或雙語字幕:「譯本內容」可選每則只有譯文,或譯文在上、原文在下的雙語字幕(適合對照觀看或學語言),切換重新下載不重翻
- 同一套管線:全書術語表(人名譯名整部片一致)、譯後一致性掃描、預覽編輯、工作階段自動存檔全部沿用
- 檔名照播放器慣例:下載檔名為
<原檔名>.<語言>.<副檔名>(例Show S01E01.srt→Show S01E01.zh.srt),放在影片旁邊 VLC / Plex / Jellyfin 會自動對上並標出語言;雙語版為<原檔名>.dual.<語言>.<副檔名> - 編碼自動判斷、一律存成 UTF-8:Big5 / GBK / Shift_JIS / EUC-KR 等舊編碼的字幕檔讀入不亂碼,譯文字幕檔一律以 UTF-8 存檔(TXT / Markdown / HTML 檔同樣適用)
YouTube 字幕翻譯
開啟有字幕的 YouTube 影片(人工或自動產生皆可),確認 CC 已開啟,點工具列的 Shinkansen 圖示,會出現「YouTube 字幕翻譯」開關,打開即可。字幕會在不影響影片播放的情況下逐段替換成你設定的目標語言(預設繁體中文),樣式與 YouTube 原生字幕完全一致。已經是目標語言的字幕不會送翻。
若你常看 YouTube 英文影片,可在設定頁的「YouTube 字幕」Tab 開啟自動翻譯,進入影片頁面後字幕翻譯會自動啟動,不需每次手動開關。
在 YouTube 影片頁,工具列圖示選單會出現「字幕大小」選單,可放大翻譯字幕(100%~200%)。桌面與行動版通用;在 iPhone/iPad 上連進入全螢幕後由 iOS 系統播放器顯示的字幕也會跟著放大
AI 智慧分句(自動產生字幕專用)
YouTube 自動產生字幕(沒有人工字幕的影片,CC 標記為 auto-generated)原本是「按時間切割」而非「按句子切割」——每條字幕只有 1-3 個英文字、沒有標點,逐條翻譯完全失去語意上下文,譯文會像被剁碎一樣難讀。
Shinkansen 對自動產生字幕導入專用流程:
- 分句改用 AI 重組:把整批 ASR 片段送 Gemini,由 AI 依語意重新分句(合併短條成完整句子、補上標點),再翻譯。中文字幕從「破碎的詞」變成「完整的句子」。
- 預設「混合模式」:先用本地啟發式快速分句顯示(秒出,使用者不必等),背景同時跑 AI 分句,回來後用更精緻版本替換——兼顧速度與品質。
- 字幕顯示 overlay 整句穩定:自家 overlay 完全旁路 YouTube 原生 caption-segment(避免「一個字一個字跳出來」),整句進整句出。控制列出現時自動上移避開進度條。
- 可關閉:如果只想要最低延遲、用 YouTube 原始分句邏輯翻,到設定頁「YouTube 字幕 → AI 分句模式」取消勾選即可。
- 翻譯引擎選 Google Translate 時自動停用:AI 分句需要 LLM,會走 Gemini 並產生費用;選了免費引擎時一律使用 YouTube 原始分句,不會在背後動用你的 API Key。
字幕雙語對照
字幕雙語與否跟隨「顯示模式」設定:點工具列 Shinkansen 圖示,顯示模式選「雙語對照」,字幕就會同時顯示原文與譯文兩行(英文在上、中文在下);選「單語覆蓋」(預設)則只顯示中文。網頁翻譯與字幕共用同一個顯示模式,不需分開設定。
適合場景:
- 練聽力:聽不清楚單字時,對著原文看一眼即可
- 對照確認:翻譯品質有疑慮時,直接看英文不必切回原文模式
- 學語言:把字幕當作雙語對照教材
- YouTube 與 Google Drive 影片共用同一個顯示模式(切到雙語對照後兩邊都會切到雙語)
- 即時切換:播放中切換不需重新載入,當下生效
- AI 分句模式相容:雙語對照在 AI 分句的整句字幕上一樣有效,英文整句 + 中文整句兩行
費用
字幕翻譯與網頁翻譯共用同一套計費邏輯與用量追蹤。翻過的字幕自動快取,重播或拖回已翻段落完全不花錢。AI 分句模式 token 用量略高於關閉時(多送一次語意分句的 prompt),但對中文閱讀體驗的提升明顯,建議開啟。
注意事項
- 需要影片有字幕(手動上傳或自動產生皆可)
- 字幕翻譯使用獨立的 system prompt,可在設定頁「YouTube 字幕」Tab 自訂
- 若 CC 未開啟,Shinkansen 會自動幫你開啟(每個影片 session 只主動開一次,尊重使用者後續手動關 CC)
- 換影片後需重新開啟開關(或開啟自動翻譯)
翻譯快取與費用計算
Shinkansen 有兩層快取機制,各自在不同階段省錢:
第一層:本地翻譯快取——翻譯過的段落以 SHA-1 雜湊為 key 存在瀏覽器的 chrome.storage.local 裡。下次遇到相同原文(即使在不同網頁)直接取用,完全不呼叫 API、不花錢。快取以原文、目標語言、模型、術語表與禁用詞、自訂 prompt 等一起當 key,改了設定就不會命中舊譯文;版本更新不會清空快取,若某次更新的修正會改變譯文,更新紀錄會註明「建議手動清快取」,可到設定頁一鍵清除。快取滿了會自動淘汰最久沒用的條目(LRU)。
第二層:Gemini implicit context cache——Google 伺服器端自動做的,當連續請求的 prompt 前綴相同(例如 system prompt + 術語表)時,Gemini 會快取這段前綴,命中的 input token 只收折扣價(Gemini 3 系列折 90%,即正常價格的 10%;各模型折扣見設定頁計價表)。實際上 Gemini 3 只對約 4,096 token 以上的完整前綴區塊計快取,網頁翻譯每批的固定前綴約 2,400 token 達不到,所以一般網頁翻譯看到的命中率多為 0%,大型術語表或文件翻譯才比較容易命中。這不需要使用者設定,Shinkansen 會自動從 API 回應中讀取命中數據。
翻譯完成後,頁面右下角的通知會即時顯示兩行數據:
- 第一行:
{計費 tokens} tokens (XX% hit)— 計費 token 數,以及 Gemini implicit cache 的命中率(命中的 input tokens 佔全部 input tokens 的比例) - 第二行:
${計費金額} (XX% saved)— 實付金額,以及相比沒有 cache 折扣時省了多少百分比
過去每筆翻譯的 token 用量、費用與 cache hit rate 都會留存紀錄,可在設定頁的「用量紀錄」Tab 回查。
固定術語表
你可以在設定頁的「術語表」Tab 自訂翻譯對照表,指定特定原文詞彙一律翻成你要的譯名。例如把 "Arrow" 固定翻成「艾蘿」而不是「箭頭」,或把 "Arrow" 在 DC Comics 相關網站上翻成「乙太翠雀之箭」。
術語表分兩層:「全域」適用於所有網站,「網域專屬」只在指定網域生效。當全域和網域有相同原文詞條時,網域規則覆蓋全域。
固定術語表的優先級高於自動術語表一致化。翻譯時,固定術語表的指令會放在 system prompt 的最末端,LLM 會給予最高權重。修改術語表後不需要手動清快取,Shinkansen 會自動讓舊快取失效。
固定術語表與禁用詞清單存在瀏覽器本機(不受瀏覽器同步空間每項 8KB 的上限影響,幾百條都放得下),不跨裝置同步;要搬到另一台裝置請用設定頁的「匯出 / 匯入設定」,備份檔會包含這兩份清單。
自訂模型(OpenAI 相容端點)
除了 Gemini 與 Google Translate 兩條既有引擎,你還可以接一組 OpenAI 相容端點,使用 Gemini 之外的模型——例如:
- OpenRouter(
https://openrouter.ai/api/v1):一個端點接百種模型,含 Anthropic / Gemini / Llama / Qwen / Grok / xAI / Mistral 等 - Together / Groq / Fireworks 等模型供應商
- Ollama 本機(
http://localhost:11434/v1):跑你自己的開源模型,零成本零延遲 - OpenAI 自家(
https://api.openai.com/v1)
設定步驟
- 到設定頁的「自訂模型」分頁
- 填三個必填欄位:
https://openrouter.ai/api/v1(系統會自動接 /chat/completions)
- 模型 ID:例如 anthropic/claude-sonnet-4-5(OpenRouter 的格式為 provider/model)
- API Key:對應 provider 的 Bearer token,按右側「測試」按鈕可立即驗證連線(耗 ~1 token)
- 選填:翻譯 Prompt(留空 = 用內建簡短預設,預設值與 Gemini 相同)/ Temperature(留空 = 請求不送這個參數,給只接受自家預設值的推理模型用)/ 推理(thinking)等級與進階參數 JSON 透傳 / 模型計價 input / output 單價與快取命中折扣(USD / 1M tokens;填 0 = 不顯示費用)
- 儲存
- 到「一般設定」分頁的「翻譯快速鍵」,把任一組預設引擎改為「自訂模型」
- 對該 preset 的快速鍵翻譯時就會走自訂模型端點
設計重點
- 翻譯 Prompt 獨立:自訂模型用獨立的翻譯 prompt,不繼承 Gemini 分頁的設定
- 禁用詞清單與固定術語表共用:兩個分頁的設定會自動注入到 prompt 末端,自訂模型也享有,改一處兩邊同步生效
- 快取分區:cache key 自帶 base URL hash,不同端點的同 model name 不會互相污染
- API Key 不上雲:
customProvider.apiKey只存在你的瀏覽器本機,不跨裝置同步、也不在匯出 JSON 範圍內 - 429 退避重試內建:provider 回 429(配額限制)時自動退避重試
- 強化段序號標記(預設開啟):本機量化模型(如 gemma-4 量化版)會把預設的緊湊段序號「«1» «2»」當自然語言誤譯為「N1、N2」洩漏到譯文。開啟後改用
<<格式弱模型不會誤翻;代價是每段批次多約 7 tokens。商用 API(OpenRouter / Groq 等)通常用不到此選項,但開啟也無害>>
限制
- 目前只能設定一組自訂模型
- 必須是真正 OpenAI 相容(
POST /chat/completions+BearerAuthorization + 標準messages結構 +usage.prompt_tokens/completion_tokens欄位)。Anthropic 與 Gemini 的原生 API 不能直接接,但透過 OpenRouter 中轉就可以 - 計價必須自填,token 估算依賴 provider 在 response 的
usage物件正確回傳
Firefox 連本機 server 注意事項
Firefox 的「HTTPS-Only Mode」(about:preferences#privacy 滑到底)若開啟,會把 extension 發出的 http:// 請求強制升級成 https://,導致連 http://localhost:11434/v1(Ollama)、http://192.168.x.x:8081/v1(llama.cpp 本機 server)等 HTTP 端點直接失敗。Chrome 沒類似機制,是 Firefox 獨有問題。
解法:到 about:preferences#privacy → HTTPS-Only Mode 改成「Don't enable」,或對該網址加入例外。設定頁的 Base URL 欄位若填了 http://,Shinkansen 會自動偵測 Firefox 並顯示提示。
禁用詞清單
AI 模型翻成繁中時雖然會盡量用台灣慣用語,但偶爾還是會吐出「視頻」、「軟件」、「數據」、「網絡」、「用戶」這類非台灣慣用譯法——尤其原文是英文(video / software / data / user)時模型容易直接套用最常見的中譯。為此 Shinkansen 內建一份禁用詞清單,明確告訴模型哪些詞絕對不能出現在譯文裡。
每條只有「禁用詞」必填,「替換詞」可留空:填了替換詞就要求模型改用指定詞;留空時則只要求模型不可使用該詞、由它自行改寫成自然的台灣慣用說法——適合「單純討厭某個詞、但一時提不出固定替換詞」的情境(例如陳腔濫調)。
禁用詞清單適用任何翻譯目標語言;多數目標語言預設為空,只有繁體中文(台灣)目標預設帶一份 26 條清單,涵蓋常見的雷區:視頻→影片、音頻→音訊、軟件→軟體、程序→程式、進程→行程(process)、線程→執行緒(thread)、數據→資料、數據庫→資料庫、網絡→網路、信息→資訊、質量→品質、用戶→使用者、默認→預設、創建→建立、實現→實作、運行→執行、發布→發表、屏幕→螢幕、文檔→文件、操作系統→作業系統,另含「劍指→針對」、「痛點→要害」、「硬傷→罩門」這類風格詞,以及三條留空替換詞的純禁用詞(沒有之一、橫空出世、啃硬骨頭)作為範例。
你可以在設定頁的「禁用詞清單」Tab 編輯這份清單——新增、修改、刪除自己常踩到的詞,或按「還原預設清單」回到該目標語言的預設。每條有三欄:禁用詞(必填)、替換詞(可留空)、備註(可空)。切換翻譯目標語言時,只有當你目前的清單仍與前一個目標語言的預設完全相同才會自動重設,你手動編輯過的條目會被保留。
此外,每次翻譯回應後 Shinkansen 會掃描譯文,若仍有禁用詞漏進譯文,會在 Debug 分頁記一筆 forbidden-term-leak warning(含原文片段與譯文片段),讓你能追查模型漏網案例——但不會自動改寫譯文,遵循「中文排版偏好交給 prompt 處理、不做事後 regex replace」的設計原則,避免誤傷譯文中合法的引述場景。
只翻文章開頭
對 token 用量敏感、想先預覽再決定要不要看完整文章的使用者,可在 Gemini 分頁的「節省模式」section 開啟「只翻文章開頭」toggle。啟用後翻譯只跑前 N 段(按 DOM 順序,預設 25 段,範圍 5-50),跳過後段,大幅減少 token 用量。
漸進式體驗:先翻開頭 → 讀完覺得想繼續 → 右下角提示會出現「翻譯剩餘段落」按鈕,點按即走完整翻譯。前面已翻好的段落從本地快取 fast path 命中(0 token / ~9ms),只後段才打 API;toggle 設定本身不會被改寫,下次翻新頁面仍走節省模式。
預設關閉。對部落格 / 新聞 / Substack 這類文章型網站特別有用——很多文章前 5-10 段就能判斷值不值得讀完。Wikipedia / GitHub 等「DOM 前段是 nav / chrome」的網站不建議開(會翻到導覽列而非主文)。
術語表一致化
LLM 在翻譯長文時,前後文的人名、地名翻譯容易出現不一致(例如同一個人名前面翻「強森」、後面變成「約翰森」)。開啟「術語表一致化」後,Shinkansen 會先掃描全文建立專有名詞對照表,再讓後續翻譯遵循同一套譯名。
這個功能預設不開啟,建議在特別需要精準翻譯(例如人名眾多的報導、學術文章)時才手動打開。副作用是術語翻譯會跳過 system prompt 的部分指示——例如原本設定「英文人名保留不翻」,開啟術語表後會一律翻成中文。此外,建立術語表需要額外的 API 呼叫,會增加少量 token 消耗與翻譯時間。
目前版本
v2.5.2 — 完整功能清單與規格詳見 SPEC.md。
授權
本專案採用 Elastic License 2.0 (ELv2) 授權。
白話來說:你可以自由查看原始碼、學習、修改、自己使用,但不能把 Shinkansen(或改寫版本)包成服務拿去賣。完整條款請見 LICENSE 檔案。
第三方資源
Shinkansen 整合下列開源軟體與字型,完整來源、授權與授權檔位置見 THIRD-PARTY-NOTICES.md:
- PDF.js(Mozilla,Apache 2.0)— 文件翻譯的 PDF 解析 / render
- pdf-lib(@cantoo/pdf-lib,MIT)— 譯文 PDF 下載重組
- fontkit(pdf-fontkit,MIT)— pdf-lib 的字型解析 / subset 後端
- Chart.js(Chart.js Contributors,MIT)— 用量明細分頁的圖表繪製
- fflate(Arjun Barrett,MIT)— EPUB 解壓與譯本重新打包
- @mozilla/readability(Mozilla / Arc90,Apache 2.0)— 送到 Instapaper 前的正文抽取
- opencc-js/OpenCC 字典(nk2028/BYVoid,MIT/Apache 2.0)— 簡繁本地互轉
- Noto Sans CJK TC(Google Noto,SIL OFL 1.1)— 譯文 PDF 內嵌中文字型(Regular + Bold);目標語言為簡中 / 日文 / 韓文時另於首次使用從專案網站下載 Noto Sans SC / JP / KR(同授權)