grip は GitHub Flavored Markdown(GFM)をGitHubと同じ見た目でローカル表示・HTML書き出しできるPython製CLIです。内部的にGitHubのMarkdown APIを使うため、レンダリングはGitHubの挙動に忠実です(レート制限回避のための認証も可能)。デフォルトではローカルサーバを立ち上げ、README.md等をブラウザで即時プレビューできます。 (GitHub)
実務では、READMEやドキュメントをコミット前に最終確認したり、MarkdownをスタンドアロンHTMLにエクスポートする用途に使います。 (GitHub)
構文(Syntax)
# サーバ起動(既定で http://localhost:6419/ )
grip [OPTIONS] [PATH] [ADDRESS]
# 代表例
grip # カレントのREADMEを表示
grip FILE.md # 明示したMarkdownを表示
grip . 0.0.0.0:8000 # ホスト/ポートを指定
grip FILE.md --export [OUT.html] # HTMLに書き出し(--no-inline併用可)
PATHはファイルまたはREADME.mdを含むディレクトリ、-で標準入力。ADDRESSはHOST[:PORT]またはPORTだけでも可。既定ポートは6419。 (Debian Manpages)
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | サーバを起動してプレビュー(自動リロードあり) | grip (GitHub) |
PATH | 対象ファイル/ディレクトリを指定 | grip README.md (Debian Manpages) |
ADDRESS | HOST[:PORT] または PORT を指定 | grip . 0.0.0.0:8000 (Debian Manpages) |
-b, --browser | 起動後にブラウザを自動で開く | grip -b (Debian Manpages) |
--export [OUT] | サーバを介さずHTMLを書き出す(-ならstdout) | grip README.md --export index.html (GitHub) |
--no-inline | エクスポート時にCSS等を外部参照にする | grip README.md --export --no-inline page.html (GitHub) |
--user-content | コメント/Issue等の「user-content」スタイルで描画 | grip --user-content (GitHub) |
--context ORG/REPO | user-content描画時のリポジトリ文脈を指定 | grip --user-content --context=org/proj (GitHub) |
--user USER / --pass TOKEN | GitHub認証(APIレート上限引き上げ。2FA環境はトークン必須) | grip --user alice --pass <token> (GitHub) |
--wide | 横幅広めで描画(サイドナビ折り畳み相当) | grip --wide (Debian Manpages) |
--title TITLE | ページタイトルを指定 | grip --title "My Docs" (Debian Manpages) |
--api-url URL | GitHub Enterprise等のAPIベースURLを指定 | grip --api-url https://github.example.com/api/v3 (Debian Manpages) |
--norefresh | ファイル変更時の自動リロードを無効化 | grip --norefresh (Debian Manpages) |
--clear | ダウンロード済みスタイル等のキャッシュを削除 | grip --clear (Debian Manpages) |
--quiet | 端末への出力を抑制 | grip --quiet --export out.html (Debian Manpages) |
-h, --help / -V, --version | ヘルプ/バージョン表示 | grip --help (Debian Manpages) |
実行例
基本:READMEをローカルで確認
説明:カレントディレクトリのREADME.mdをプレビュー。
コマンド
cd myrepo
grip
出力例(例)
* Running on http://localhost:6419/
ブラウザで http://localhost:6419/ を開くとGitHub同等の見た目で表示されます。 (GitHub)
ホスト/ポートを指定して公開(LAN内共有など)
説明:全端末から閲覧できるようホストとポートを指定。
コマンド
grip . 0.0.0.0:8000 -b
出力例(例)
* Running on http://0.0.0.0:8000/
-b で既定ブラウザが開きます。 (Debian Manpages)
HTMLに書き出し(スタンドアロン配布)
説明:サーバを使わず単一HTMLを生成。外部公開や配布に。
コマンド
grip README.md --export docs.html
出力例(例)
Exporting to docs.html
必要に応じて --no-inline を付けるとCSS等を外部参照に変更できます。 (GitHub)
Issue/コメント風スタイルでプレビュー
説明:コメントやIssueに近い見た目(user-content)で表示。リポジトリ文脈を付けるとリンク解決が向上。
コマンド
grip --user-content --context=joeyespo/grip
出力例(例)
* Running on http://localhost:6419/
(GitHub)
エラー例:特権ポート(80)を一般ユーザーでバインド
説明:Linuxでは1024未満のポートは通常root権限が必要。
コマンド
grip 80
出力例(例)
OSError: [Errno 13] Permission denied
回避策:8000などの高位ポートを使うか、適切な権限設定を行います。
関連コマンド
pandoc:Markdown→HTML/PDF等の変換ツール。テンプレート制御向け。python -m http.server:--exportで生成したHTMLを簡易配信。mdbook/MkDocs:複数Markdownでサイト化する静的サイトジェネレータ。gh(GitHub CLI):リポジトリ操作やブラウザでの閲覧起動に。grip(Python API):”from grip import serve” でアプリに組み込み可能。 (GitHub)
備考
- 認証とレート制限:未認証だとAPIの時間当たり制限に当たる場合があります。
--userと--pass(Personal Access Token推奨)で認証すると緩和できます。2要素認証のアカウントではトークン必須です。 (GitHub) - 設定ファイル:
~/.grip/settings.pyに既定のHOST/PORTやAUTOREFRESH/QUIET等を記述できます。環境変数GRIPHOME(設定場所の変更)、GRIPURLも利用可。 (GitHub) - GitHub Enterprise:
--api-urlでエンタープライズ環境のAPIを指定できます。 (Debian Manpages) - 標準入出力:
-を使ってstdinから読み込み/ stdoutへ書き出し可能。パイプと組み合わせて処理できます。 (GitHub) - 依存/導入:Pythonパッケージとして提供(
pip install grip)。多くのディストリでパッケージ化もあります。 (PyPI)
参考
- GitHub:
joeyespo/grip(README・使い方・API・設定) (GitHub) - Debian manページ(オプション詳細・用法) (Debian Manpages)
- PyPI:
grip(配布) (PyPI)

コメント