Community程式設計與開發github.com

PT210 藍牙熱感印表機列印

在 macOS 上將文字、Markdown 或 Excalidraw 場景列印到附近的 PT210 藍牙熱感印表機。

PT210 藍牙熱感印表機列印 是什麼?

這項技能讓 AI 助手能夠透過 macOS 將內容傳送到 PT210 品牌藍牙熱感印表機進行實體列印。它支援純文字 (ASCII 與 Unicode)、格式化的 Markdown (含標題、強調、清單、表格、程式碼區塊、連結等) 以及 Excalidraw 向量場景 (含內嵌點陣圖)。背後透過一個完整的 shell 輔助腳本 (`scripts/print.sh`) 來管理裝置掃描、連線設定、預覽與實際列印工作。工作流程依賴 `uv` 與 Google Chrome (用於 Markdown/Excalidraw 轉譯) 等本機工具,所有轉譯流程完全在本地端執行,不會外洩資料。 此技能強制要求一次性連線設定 (儲存 BLE UUID 於 `~/.config/pt210/printer.json`) 並拒絕同時重疊的列印工作。列印輸出後會附加一條虛線引導與 20 mm 的撕紙邊距,可透過參數調整。由於藍牙傳輸完成不代表紙張已確實輸出,初次設定或變更傳輸行為時需要人工確認紙張狀態。若印表機無法找到,會提示使用者開啟電源並關閉手機應用程式;若藍牙權限遭拒,則需透過 macOS 的「隱私權與安全性」設定手動核准。此技能不支援自動重送失敗的工作,以防部分列印造成浪費。支援的參數包含 `--file`、`--format`、`--mode raster`、`--transport conservative`、`--tear-margin-mm`、`--no-tear-line` 與 `--max-height`。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/guzus/pt-210/tree/HEAD/skills/print

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

在 PT210 上列印

使用完整的複製倉儲內附的輔助腳本。將 PRINT_SKILL_DIR 解析為此技能目錄,然後執行:

bash "$PRINT_SKILL_DIR/scripts/print.sh" --help

需要 macOS、uv、一台開機且有紙的 PT210,以及呼叫應用程式的藍牙權限。Markdown/Excalidraw 還需要本機安裝 Google Chrome。首次安裝相依套件時會使用網路;後續的轉譯流程完全在本地端進行。請勿假設此技能資料夾在脫離倉儲時仍能正常運作。

一次性連線

bash "$PRINT_SKILL_DIR/scripts/print.sh" scan
bash "$PRINT_SKILL_DIR/scripts/print.sh" setup --address UUID_FROM_SCAN

macOS 透過機器特定的 UUID 來識別 BLE 裝置,而非傳統的藍牙 MAC 位址。設定流程會驗證一個支援的可寫特性,並將選擇儲存在 ~/.config/pt210/printer.json 中。若只發現一台唯一的 PT210,可在不指定 --address 的情況下選取;若有多台相符裝置則必須明確指定目標。從未儲存裝置時,不會自動回退到其他印表機。--address 會覆蓋 PT210_ADDRESS 環境變數,再覆蓋已儲存的選擇。inspect 會連線但不會列印。

準備、預覽、列印

直接使用所要求的內容。一則列印請求即代表授權其紙張輸出;請勿加入多餘的確認關卡。先預覽不熟悉的版面。

bash "$PRINT_SKILL_DIR/scripts/print.sh" preview --file /tmp/note.md --output /tmp/note-preview.png
bash "$PRINT_SKILL_DIR/scripts/print.sh" print --file /tmp/note.md
  • 純文字:從 stdin 或 --file 讀取。ASCII 使用內建字體快速列印;Unicode(包含韓文)則使用點陣文字。--mode raster 強制使用點陣模式。
  • Markdown:.md/.markdown 會自動偵測;從 stdin 輸入時需使用 --format markdown。保留要求的格式設定。標題、強調、清單、任務核取方塊、引用、程式碼、表格和連結都會正確轉譯。寬表格會轉為標籤式行。連結包含目的地;圖片顯示為替代文字佔位符。原始 HTML 保持原樣,外部資源則被封鎖。
  • Excalidraw:.excalidraw/.excalidraw.json 會自動偵測;從 stdin 或一般 JSON 輸入時需使用 --format excalidraw。先透過 build-excalidraw 建置一次(需 npm)。請使用已儲存的場景,而非分享網址、圖庫、Obsidian 包裝器或 PNG。不要從 Mermaid 重新產生已編輯的場景。官方本機轉譯器會保留幾何形狀並按紙張寬度等比例縮放。小字型警告需要透過預覽檢查,請勿悄悄裁切或重新排列。支援內嵌的 PNG/JPEG/WebP/GIF;遠端嵌入與 SVG 圖片會明確失敗。Excalidraw 與 Markdown 一律使用點陣模式。

預覽不會存取藍牙,且拒絕覆寫現有檔案。Markdown/Excalidraw 的預覽與列印使用完全相同的選項。對於純文字,請使用 print --mode raster 以匹配預覽結果;內建字體在視覺上可能略有差異。每個列印工作結束時,都會附加一條虛線引導線與 20 mm 的空白撕紙邊距。可透過 --tear-margin-mm 0..50 調整,或使用 --no-tear-line 省略引導線。預設高度上限為 2,400 點(含邊距約 300 mm);可縮短較大的輸出內容,或為要求的長收據明確設定 --max-height。

傳送與失敗處理

等待程序完成。transmitted 表示藍牙寫入作業已完成,並非紙張已確實輸出的獨立證明。初次設定或變更傳輸行為時,需要對紙張輸出進行人工確認。本機鎖定機制可防止重疊的工作;請勿繞過此機制。失敗或中斷的傳送可能導致部分列印:重試前請先檢查紙張,且絕不自動重新傳送。

若找不到印表機,請使用者將其打開電源並關閉手機上的印表機應用程式。當藍牙處於沙盒環境時,使用執行環境所核准的權限路徑。藍牙權限被拒絕時需要使用者在 macOS 的「隱私權與安全性」中進行操作;請勿修改 TCC 設定。僅支援傳統藍牙的變體需要另一個經過驗證的傳輸方式;請勿猜測序列埠或使用辦公/預設印表機。

若輸出內容損毀,可對下一次授權的工作使用 --transport conservative 以使用較小的封包。印表機設定、鎖定檔案與轉譯快取均屬本機執行環境狀態;請勿將其提交到版本控制。完整功能、設定方式與限制請參閱倉儲中的 README。

相關技能