AutoCorrect 是一個強大的文案格式化工具,能夠自動糾正中日韓(CJK)與英文混合使用時的常見問題,如標點符號、空格等。本文將介紹如何透過 GitHub Actions 的自動化工作流程,讓您的繁體中文文章在推送到 GitHub 時自動進行格式化,有效提升文章的專業度和可讀性。
AutoCorrect 簡介
AutoCorrect 是一個基於 Rust 編寫的工具,專門用於「自動糾正」或「檢查並建議」文案,特別針對中日韓與英文混寫的場景,補充正確的空格,糾正單詞,同時以安全的方式自動糾正標點符號。它的功能包括:
- 在 CJK 與英文單詞間添加適當的空格
- 在 CJK 文字附近將標點符號轉換為全形
- 在英文內容中將標點符號轉換為半形
- 支援拼寫檢查並依據您的詞典糾正單詞(實驗性功能)
與 ESLint、Rubocop 和 Gofmt 等類似工具一樣,AutoCorrect 可以整合到 CI/CD 流程中,進行自動化檢查和修正。
GitHub Actions 的隔離環境
在深入了解工作流程配置之前,讓我們先了解 GitHub Actions 的運作方式。GitHub Actions 是 GitHub 提供的 CI/CD 解決方案,能自動化軟體開發的各個工作流程。
GitHub 託管的執行器(GitHub-hosted runners)在短暫且乾淨的隔離虛擬機器中執行代碼,這意味著每次執行都是全新的環境,不會有持續性的狀態。這種隔離環境提供了幾個優點:
- 安全性:每次運行都在乾淨的環境中執行,不會受到之前運行的影響
- 一致性:無論何時運行工作流程,執行環境都是相同的
- 可靠性:不會因環境污染而導致不穩定的結果
這種隔離特性對於像 AutoCorrect 這樣的文本處理工具特別有用,因為它確保了處理過程的穩定性與可預測性。
解析工作流程檔案
現在讓我們來看一下提供的 .github/workflows/autocorrect-push.yml
工作流程檔案:
name: AutoCorrect Push Check
on:
push:
branches: [ main ]
workflow_dispatch:
schedule:
- cron: '0 0 * * 0' # Run weekly on Sunday at midnight
jobs:
autocorrect-push:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Check source code
uses: actions/checkout@v4
- name: Run AutoCorrect with fix mode
id: autocorrect
uses: huacnlee/autocorrect-action@v2
with:
args: --fix
continue-on-error: true
- name: Check for changes
id: git-check
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "changes=true" >> $GITHUB_OUTPUT
fi
- name: Create Pull Request with fixes
if: steps.git-check.outputs.changes == 'true'
id: cpr
uses: peter-evans/create-pull-request@v5
with:
commit-message: "chore: autocorrect text formatting"
title: "chore: autocorrect text formatting"
body: |
This PR was automatically created by the AutoCorrect GitHub Action.
It fixes text formatting issues like Chinese/Japanese full-width punctuation,
spacing between different languages, and other text formatting standardizations.
Please review the changes and merge if appropriate.
branch: autocorrect-fixes
delete-branch: true
labels: |
autocorrect
automated-pr
- name: Check outputs
if: steps.cpr.outputs.pull-request-number
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
這個工作流程的主要組成部分如下:
-
觸發條件:
- 當推送到 main 分支時
- 手動觸發(workflow_dispatch)
- 每週日午夜自動執行(使用 cron 排程)
-
執行環境:
- 使用 Ubuntu 最新版本作為執行環境
- 設置適當的權限以允許寫入內容和創建 Pull Request
-
工作步驟:
- 檢出代碼庫
- 使用 fix 模式運行 AutoCorrect
- 檢查是否有變更
- 如果有變更,創建一個包含修正的 Pull Request
- 輸出 Pull Request 資訊
此工作流程利用 huacnlee/autocorrect-action
這個官方 Action,它是專為在 GitHub Actions 中使用 AutoCorrect 而設計的。
提升繁體中文寫作品質
中文與英文混合寫作時,常見的排版問題包括:
- 空格問題:中英文間缺少適當的空格,導致閱讀困難
- 標點符號不一致:中文文本中使用半形標點,或英文文本中使用全形標點
- 格式不統一:不同部分的格式不一致,影響整體專業性
AutoCorrect 能有效解決這些問題。以下是一個簡單的例子:
修正前:
Hello世界,這是一個關於GitHub Actions的文章.它運行在隔離環境中。
修正後:
Hello 世界,這是一個關於 GitHub Actions 的文章。它運行在隔離環境中。
注意以下變化:
- 中英文之間添加了空格
- 半形逗號和句號變成了全形的「,」和「。」
- 整體視覺效果更協調,閱讀更輕鬆
實際應用效益
將 AutoCorrect 與 GitHub Actions 整合到部落格或文檔站點的工作流程中,帶來以下好處:
1. 自動化品質控制
每次推送內容到 main 分支後,AutoCorrect 會自動檢查並修正文案格式問題,無需人工干預。這不僅節省了時間,還確保了所有內容符合一致的格式標準。
2. 透過 Pull Request 進行審核
工作流程不會直接修改主分支,而是創建一個包含所有修正的 Pull Request。這讓您可以在合併前審核變更,保持對內容的控制。
3. 持續改進
通過每週自動執行,即使是舊的內容也會得到檢查和改進,確保整個部落格或文檔站點的格式一致性。
4. 跨多種文件類型工作
AutoCorrect 支援超過 28 種文件類型(包括 Markdown、JSON、YAML、JavaScript、HTML 等),能自動識別文件類型並只檢查字符串和注釋部分,這對於包含多種文件類型的網站項目特別有用。
集成考量
在實施這個工作流程時,有一些注意事項:
安全性考量
GitHub Actions 的隔離環境提供了良好的安全性保障。官方的執行器在短暫且乾淨的隔離虛擬機器中執行代碼,這意味著沒有持續性的環境可供破壞。使用官方的 Action(如 huacnlee/autocorrect-action
)也比使用第三方 Action 更安全,因為它們經過了更多的測試和審核。
配置靈活性
AutoCorrect 提供了豐富的配置選項。您可以通過在代碼庫根目錄創建 .autocorrectrc
文件來自定義規則,例如:
rules:
space-word: 1
space-punctuation: 1
fullwidth: 1
no-space-fullwidth: 1
halfwidth-word: 1
這讓您可以根據特定需求自定義行為。
結論
將 AutoCorrect 與 GitHub Actions 結合使用,為繁體中文寫作提供了一個強大的自動化格式化解決方案。通過自動糾正空格、標點符號和其他排版問題,它顯著提升了文章的可讀性和專業性。
本文介紹的工作流程不僅適用於部落格網站,還可以應用於各種需要高質量中文內容的項目,如文檔站點、新聞媒體或企業網站。通過自動化這些看似微小但重要的格式化任務,您可以專注於內容創作,同時確保輸出的一致性和專業性。
透過這種持續集成的方式,您的繁體中文內容將始終保持最高標準的排版質量,為讀者提供更好的閱讀體驗。
參考資源
如果您想了解更多關於 AutoCorrect 或如何在不同環境中使用它,可以參考以下資源:
- AutoCorrect GitHub 倉庫:https://github.com/huacnlee/autocorrect
- AutoCorrect Action:https://github.com/huacnlee/autocorrect-action
- AutoCorrect VSCode 擴展:https://marketplace.visualstudio.com/items?itemName=huacnlee.autocorrect