grip – GitHub風Markdownをローカルでプレビュー/書き出し

整形・フォーマット

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を含むディレクトリ、-で標準入力。
  • ADDRESSHOST[:PORT] または PORT だけでも可。既定ポートは 6419。 (Debian Manpages)

主なオプション一覧

オプション説明使用例
(なし)サーバを起動してプレビュー(自動リロードあり)grip (GitHub)
PATH対象ファイル/ディレクトリを指定grip README.md (Debian Manpages)
ADDRESSHOST[: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/REPOuser-content描画時のリポジトリ文脈を指定grip --user-content --context=org/proj (GitHub)
--user USER / --pass TOKENGitHub認証(APIレート上限引き上げ。2FA環境はトークン必須)grip --user alice --pass <token> (GitHub)
--wide横幅広めで描画(サイドナビ折り畳み相当)grip --wide (Debian Manpages)
--title TITLEページタイトルを指定grip --title "My Docs" (Debian Manpages)
--api-url URLGitHub 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--passPersonal Access Token推奨)で認証すると緩和できます。2要素認証のアカウントではトークン必須です。 (GitHub)
  • 設定ファイル~/.grip/settings.py に既定のHOST/PORTAUTOREFRESH/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)
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント