terminal-print について
Terminal Printは、iTerm2のターミナル出力をHPネットワークプリンターで印刷するSkillです。ANSI制御コードを除去してPDFを作成し、プレビュー後の印刷やPDFのみの生成に対応します。
主な機能
- 01クリップボードまたはファイルから読み込み
- 02ANSI制御コードを除去してPDFを作成
- 03プレビュー、直接印刷、PDFのみの出力
- 04プリンターキュー指定とAirPrint回避
- 05等幅フォントと横向きレイアウト
活用シーン
- 01iTerm2からコピーしたコマンド出力の印刷
- 02コマンドラインセッションのPDF保存
- 03印刷用ターミナルログの作成
- 04会議や文書でのターミナル出力共有
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill terminal-printインストール後、Claude Code で/terminal-printを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/print-terminal.shsetup-socket-9100-queue.shreferences/airprint-blank-page-troubleshooting.mdevolution-log.mdworkflow.md詳細
ターミナル印刷
1 つのコマンドで、iTerm2 のターミナル出力を HP ネットワークプリンターに印刷します。
自己進化型スキル:このスキルは使用を重ねることで改善されます。手順に誤りがある場合、パラメーターが変わっている場合、または回避策が必要だった場合は、先送りせず、すぐにこのファイルを修正してください。実際に再現できる問題がある場合にのみ更新してください。
このスキルを使う場面
次のような場合にこのスキルを使います。
- ターミナル出力をネットワークプリンターに印刷する
- コマンドラインセッションの出力を PDF として保存する
- 印刷に適した形式でターミナルログをアーカイブする
- 会議やドキュメントでターミナル出力を共有する
クイックスタート
- iTerm2 でターミナル出力をコピーします(Cmd+C)
- このスキルを呼び出します
- PDF のプレビューを確認し、Enter キーを押して印刷します
仕組み
Clipboard → Strip ANSI → Markdown code block → pandoc/xelatex → PDF → Preview → Print
- ANSI コードを除去:色とエスケープシーケンスを取り除き、白黒で見やすく出力します
- 等幅フォント:文字を適切に揃えるため、DejaVu Sans Mono を使用します
- 横向き:1 行あたり約 120 文字を表示できます
- US Letter 用紙:プリンター設定から自動検出します
実行方法
/usr/bin/env bash << 'PRINT_EOF'
SKILL_DIR="$(cc-plugin-root doc-tools)/skills/terminal-print"
bash "$SKILL_DIR/assets/print-terminal.sh"
PRINT_EOF
オプション
実行ブロックを変更して、引数を指定して実行します。
/usr/bin/env bash << 'PRINT_EOF'
SKILL_DIR="$(cc-plugin-root doc-tools)/skills/terminal-print"
bash "$SKILL_DIR/assets/print-terminal.sh" --no-preview
PRINT_EOF
| フラグ | 説明 |
|---|---|
--file FILE | クリップボードではなく、ファイルから読み込みます |
--no-preview | PDF のプレビューを省略し、直接印刷します |
--no-print | PDF のみを生成し、プリンターには送信しません |
--printer NAME | 対象のプリンターキューを指定します(デフォルト:システムのデフォルト) |
--bypass-airprint | socket-9100 と PostScript キューを使用します。HP LaserJet Pro MFP 3101/3108/3201/3208/3301/3308 の AirPrint で白紙が出る問題への回避策です。 |
-h, --help | ヘルプメッセージを表示します |
使用例
クリップボードから印刷(デフォルト)
# Copy terminal output in iTerm2, then:
/usr/bin/env bash << 'EOF'
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh"
EOF
ファイルから印刷
/usr/bin/env bash << 'EOF'
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh" --file ~/session.log
EOF
PDF のみを生成(印刷しない)
/usr/bin/env bash << 'EOF'
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh" --no-print
EOF
前提条件
MacTeX をインストールした macOS では、必要な依存関係をすべて利用できます。
| ツール | 用途 | 状態 |
|---|---|---|
pandoc | Markdown から PDF へ | 必須 |
xelatex | PDF エンジン | 必須(MacTeX) |
pbpaste | クリップボードへのアクセス | 標準搭載 |
lpr | CUPS 印刷 | 標準搭載 |
出力
- PDF の保存先:
/tmp/terminal-output-YYYYMMDD_HHMMSS.pdf - Markdown ソース:
/tmp/terminal-YYYYMMDD_HHMMSS.md - クリーンアップ:macOS が
/tmpを定期的に自動クリーンアップします
トラブルシューティング
「クリップボードにテキストがありません」
まず iTerm2 で Cmd+C を使ってターミナル出力をコピーしてください。
「pandoc が見つかりません」または「xelatex が見つかりません」
MacTeX をインストールしてください:brew install --cask mactex
プリンターが見つからない
プリンターの状態を確認します:lpstat -p -d
このスクリプトはシステムのデフォルトプリンターを自動検出します。--printer NAME で別のプリンターを指定するか、環境変数 TERMINAL_PRINT_PRINTER を設定してください。
空白ページが出力される(またはlprが成功を報告するのに何も印刷されない)
HP LaserJet Pro MFP 3101/3108/3201/3208/3301/3308 AirPrintの空白ページ問題でよく見られる症状です。プリンターのIPP-Everywhere PDFインタープリターがジョブを黙って破棄する一方で、CUPSはcompletedと報告します。このまったく同じ症状を2026-05-09に確認しました。
簡単な修正方法:
# 1. One-time setup of bypass queue (socket-9100 + Generic PostScript PPD)
"$(cc-plugin-root doc-tools)/skills/terminal-print/assets/setup-socket-9100-queue.sh"
# 2. Reprint with --bypass-airprint
bash "$(cc-plugin-root doc-tools)/skills/terminal-print/assets/print-terminal.sh" --bypass-airprint
コマンドシーケンスと判断ツリーを含む詳細な診断手順: airprint-blank-page-troubleshooting.mdを参照してください。
要点:lpstat -oやjob-state=completedを信用しないでください。ipptool -tv ipp://<printer>.local.:631/ipp/printを使って、プリンター自身のジョブ台帳からjob-impressions-completedとjob-media-sheets-completedを照会してください。CUPSは嘘をつきますが、プリンターは(たいてい)真実を語ります。
関連スキル
- pandoc-pdf-generation - MarkdownをPDFに変換する一般的な方法
- asciinema-converter - ターミナルの録画を変換
実行後の振り返り
このスキルの実行後、終了前に次の点を確認してください。
- コマンドは成功しましたか? — 失敗した場合は、原因となった手順またはエラーテーブルを修正してください。
- パラメーターや出力は変わりましたか? — 基盤となるツールのインターフェイスに変更があった場合は、使用例とパラメーターの表を実際に合わせて更新してください。
- 回避策が必要でしたか? — 別のフラグや追加手順など、その場で工夫する必要があった場合は、次回同じ回避策が不要になるよう、このSKILL.mdを更新してください。
問題が実際に発生し、再現できる場合にのみ更新してください。推測に基づいて更新しないでください。