Gitingest
GitリポジトリをLLM向けのプロンプトに適したテキスト形式に変換します。
GitHubのURLでhub
をingest
に置き換えるだけで、対応するダイジェストにアクセスできます。
gitingest.com · Chrome拡張機能 · Firefoxアドオン
Deutsch | Español | Français | 日本語 | 한국어 | Português | Русский | 中文
🚀 特徴
- 簡単なコードコンテキスト: GitリポジトリURLまたはディレクトリからテキストダイジェストを取得
- スマートフォーマット: LLMプロンプト向けに最適化された出力形式
- 統計情報:
- ファイルとディレクトリ構造
- 抽出サイズ
- トークン数
- CLIツール: シェルコマンドとして実行可能
- Pythonパッケージ: コード内でインポートして使用可能
📚 要件
- Python 3.8以上
- プライベートリポジトリの場合: GitHub Personal Access Token (PAT)が必要。こちらでトークンを生成してください!
📦 インストール
GitingestはPyPIで利用可能です。 pip
を使用してインストールできます:
pip install gitingest
または
pip install gitingest[server]
セルフホスティング用のサーバー依存関係を含める場合
ただし、pipx
を使用してインストールするのが良いでしょう。 pipx
はお好みのパッケージマネージャーでインストールできます。
brew install pipx apt install pipx scoop install pipx ...
初めてpipxを使用する場合は、以下を実行してください:
pipx ensurepath
# install gitingest pipx install gitingest
🧩 ブラウザ拡張機能の使用方法
この拡張機能はオープンソースで、lcandy2/gitingest-extension で公開されています。
リポジトリでは問題報告や機能リクエストを歓迎しています。
💡 コマンドラインの使用方法
gitingest
コマンドラインツールを使用すると、コードベースを分析し、その内容をテキストダンプとして作成できます。
# Basic usage (writes to digest.txt by default) gitingest /path/to/directory # From URL gitingest https://github.com/coderamp-labs/gitingest # or from specific subdirectory gitingest https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils
プライベートリポジトリの場合は、--token/-t
オプションを使用してください。
# Get your token from https://github.com/settings/personal-access-tokens gitingest https://github.com/username/private-repo --token github_pat_... # Or set it as an environment variable export GITHUB_TOKEN=github_pat_... gitingest https://github.com/username/private-repo # Include repository submodules gitingest https://github.com/username/repo-with-submodules --include-submodules
デフォルトでは、.gitignore
にリストされているファイルはスキップされます。ダイジェストにこれらのファイルを含める必要がある場合は、--include-gitignored
を使用してください。
デフォルトでは、ダイジェストは現在の作業ディレクトリのテキストファイル (digest.txt
) に書き込まれます。出力をカスタマイズするには2つの方法があります:
--output/-o <filename>
を使用して特定のファイルに書き込みます。--output/-o -
を使用して直接STDOUT
に出力します(他のツールにパイプする場合に便利です)。
詳細なオプションと使用方法については以下を参照してください:
gitingest --help
🐍 Pythonパッケージの使用方法
# Synchronous usage from gitingest import ingest summary, tree, content = ingest("path/to/directory") # or from URL summary, tree, content = ingest("https://github.com/coderamp-labs/gitingest") # or from a specific subdirectory summary, tree, content = ingest("https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils")
プライベートリポジトリの場合は、トークンを渡すことができます:
# Using token parameter summary, tree, content = ingest("https://github.com/username/private-repo", token="github_pat_...") # Or set it as an environment variable import os os.environ["GITHUB_TOKEN"] = "github_pat_..." summary, tree, content = ingest("https://github.com/username/private-repo") # Include repository submodules summary, tree, content = ingest("https://github.com/username/repo-with-submodules", include_submodules=True)
デフォルトではファイルは書き込まれませんが、output
引数で有効にできます。
# Asynchronous usage from gitingest import ingest_async import asyncio result = asyncio.run(ingest_async("path/to/directory"))
Jupyter notebookでの使用方法
from gitingest import ingest_async # Use await directly in Jupyter summary, tree, content = await ingest_async("path/to/directory")
これは、Jupyter notebookがデフォルトで非同期であるためです。
🐳 セルフホスト
Dockerを使用する場合
-
イメージをビルド:
docker build -t gitingest .
-
コンテナを実行:
docker run -d --name gitingest -p 8000:8000 gitingest
アプリケーションは http://localhost:8000
で利用可能になります。
ドメインでホストする場合、環境変数 ALLOWED_HOSTS
を通じて許可するホスト名を指定できます。
# Default: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1". ALLOWED_HOSTS="example.com, localhost, 127.0.0.1"
環境変数
アプリケーションは以下の環境変数を使用して設定できます:
- ALLOWED_HOSTS: 許可されるホスト名のカンマ区切りリスト(デフォルト: "gitingest.com, *.gitingest.com, localhost, 127.0.0.1")
- GITINGEST_METRICS_ENABLED: Prometheusメトリクスサーバーを有効化(任意の値を設定で有効化)
- GITINGEST_METRICS_HOST: メトリクスサーバーのホスト(デフォルト: "127.0.0.1")
- GITINGEST_METRICS_PORT: メトリクスサーバーのポート(デフォルト: "9090")
- GITINGEST_SENTRY_ENABLED: Sentryエラートラッキングを有効化(任意の値を設定で有効化)
- GITINGEST_SENTRY_DSN: Sentry DSN(Sentry有効時必須)
- GITINGEST_SENTRY_TRACES_SAMPLE_RATE: パフォーマンスデータのサンプリングレート(デフォルト: "1.0", 範囲: 0.0-1.0)
- GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE: プロファイルセッションのサンプリングレート(デフォルト: "1.0", 範囲: 0.0-1.0)
- GITINGEST_SENTRY_PROFILE_LIFECYCLE: プロファイルライフサイクルモード(デフォルト: "trace")
- GITINGEST_SENTRY_SEND_DEFAULT_PII: デフォルトの個人識別情報を送信(デフォルト: "true")
- S3_ALIAS_HOST: S3リソースにアクセスするための公開URL/CDN(デフォルト: "127.0.0.1:9000/gitingest-bucket")
- S3_DIRECTORY_PREFIX: S3ファイルパスのオプションプレフィックス(設定時、全てのS3パスにこの値をプレフィックスとして付与)
Docker Composeを使用する場合
このプロジェクトには、開発環境と本番環境の両方でアプリケーションを簡単に実行できるcompose.yml
ファイルが含まれています。
Composeファイル構造
compose.yml
ファイルでは、YAMLのアンカー機能(&app-base
と<<: *app-base
)を使用して、サービス間で共有される共通設定を定義しています:
# Common base configuration for all services x-app-base: &app-base build: context: . dockerfile: Dockerfile ports: - "${APP_WEB_BIND:-8000}:8000" # Main application port - "${GITINGEST_METRICS_HOST:-127.0.0.1}:${GITINGEST_METRICS_PORT:-9090}:9090" # Metrics port # ... other common configurations
サービス
このファイルでは3つのサービスが定義されています:
-
app: 本番環境サービス設定
prod
プロファイルを使用- Sentry環境を"production"に設定
restart: unless-stopped
で安定稼働を確保
-
app-dev: 開発環境サービス設定
dev
プロファイルを使用- デバッグモードを有効化
- ソースコードをマウントしてライブ開発を可能に
- ホットリロードで開発効率向上
-
minio: 開発用S3互換オブジェクトストレージ
dev
プロファイル使用(開発モードでのみ利用可能)- ローカル開発用S3互換ストレージを提供
- アクセス方法:
- API: ポート9000 (localhost:9000)
- Webコンソール: ポート9001 (localhost:9001)
- デフォルト管理者認証情報:
- ユーザー名:
minioadmin
- パスワード:
minioadmin
- ユーザー名:
- 環境変数で設定可能:
MINIO_ROOT_USER
: カスタム管理者ユーザー名(デフォルト: minioadmin)MINIO_ROOT_PASSWORD
: カスタム管理者パスワード(デフォルト: minioadmin)
- Dockerボリュームによる永続ストレージを内蔵
- バケットとアプリケーション専用認証情報を自動生成:
- バケット名:
gitingest-bucket
(S3_BUCKET_NAME
で設定可能) - アクセスキー:
gitingest
(S3_ACCESS_KEY
で設定可能) - シークレットキー:
gitingest123
(S3_SECRET_KEY
で設定可能)
- バケット名:
- これらの認証情報は環境変数経由でapp-devサービスに自動伝達:
S3_ENDPOINT
: MinIOサーバーURLS3_ACCESS_KEY
: S3バケットアクセスキーS3_SECRET_KEY
: S3バケットシークレットキーS3_BUCKET_NAME
: S3バケット名S3_REGION
: S3バケットリージョン(デフォルト: us-east-1)S3_ALIAS_HOST
: S3リソースアクセス用公開URL/CDN(デフォルト: "127.0.0.1:9000/gitingest-bucket")
使用例
開発モードでアプリケーションを実行するには:
docker compose --profile dev up
本番モードでアプリケーションを実行するには:
docker compose --profile prod up -d
アプリケーションをビルドして実行するには:
docker compose --profile prod build docker compose --profile prod up -d
🤝 コントリビューション
技術的でない貢献方法
- Issueの作成: バグを見つけた場合や新機能のアイデアがある場合は、GitHubでissueを作成してください。これにより、リクエストの追跡と優先順位付けが容易になります。
- 広める: Gitingestが気に入ったら、友人や同僚、ソーシャルメディアで共有してください。コミュニティの成長とGitingestの改善に役立ちます。
- Gitingestを使用する: 実際の使用から得られるフィードバックが最良です!問題が発生したり改善のアイデアがある場合は、GitHubでissueを作成するか、Discordでお知らせください。
技術的な貢献方法
Gitingestは初めてのコントリビューターにも優しいPythonとHTMLのシンプルなコードベースを目指しています。コード作業中に助けが必要な場合は、Discordでご連絡ください。プルリクエストの作成方法の詳細はCONTRIBUTING.mdをご覧ください。
🛠️ 技術スタック
- Tailwind CSS - フロントエンド
- FastAPI - バックエンドフレームワーク
- Jinja2 - HTMLテンプレート
- tiktoken - トークン推定
- posthog - 優れた分析ツール
- Sentry - エラートラッキングとパフォーマンス監視
JavaScript/FileSystemNodeパッケージをお探しですか?
NPM代替品📦 Repomixをご覧ください: https://github.com/yamadashy/repomix