
ogi v0.8.0
オープンソースのリンク分析&OSINTフレームワーク
OpenGraph Intel (OGI)
オープンソースのビジュアルリンク分析およびOSINTフレームワーク。 無料で自己ホスティング可能、コミュニティ主導。
機能 • スクリーンショット • クイックスタート • Docker • Transform Hub • アーキテクチャ • コントリビューション
注意: このプロジェクトは活発に進化しています。中核機能とテストカバレッジは確立されていますが、リリースごとにドキュメント、堅牢性、機能の充実を継続的に改善しています。コントリビューション、バグ報告、フィードバックを歓迎します。
機能
- ビジュアルグラフ調査 — エンティティのドラッグ&ドロップ、インタラクティブな接続探索
- 20以上のビルトイントランスフォーム — DNS、WHOIS、SSL証明書、ジオロケーション、Web/メール/ハッシュ/ソーシャルエンリッチメントなど
- Transform Hub — レジストリからコミュニティトランスフォームをブラウズ・インストール
- AI Investigator — トランスフォーム実行を計画し、進行状況をライブストリームし、監査可能な要約を生成するプロンプト駆動のエージェント調査
- インポート / エクスポート — JSON、CSV、GraphML、MTGX形式のインポート
- グラフ分析 — 中心性、コミュニティ検出、最短経路
- リアルタイムコラボレーション — Supabase Realtimeによるプロジェクト、共有、ライブ同期
- 非同期トランスフォームジョブ — WebSocket進捗更新付きのRedis/RQキュー
- プラグインシステム — YAMLマニフェストによるディレクトリベースのプラグイン検出
- CLIツール — ターミナルからのトランスフォーム検索、インストール、管理
- どこでも実行可能 — ローカルSQLiteモード(設定不要)またはチーム/クラウド向けPostgreSQL + Supabase
- Docker対応 —
docker compose upでワンコマンドデプロイ
スクリーンショット
| グラフ調査 | エンティティエンリッチメント |
|---|---|
![]() | ![]() |
| Transform Hub | エクスポート / インポート |
|---|---|
![]() | ![]() |
クイックスタート
前提条件
バックエンド```bash
cd backend uv sync uv run uvicorn ogi.main:app --reload
The API will be available at `http://localhost:8000`.
For local transform execution, Redis and the transform worker must also be running. Redis alone is not enough.
Start Redis:```bash
docker run -d --name ogi-redis -p 6379:6379 redis:7-alpine
2番目のターミナルで変換ワーカーを起動してください。```bash cd backend uv run python -m ogi.worker.run_worker
`Job queue not available` または `Redis not available` が表示された場合は、以下を確認してください:
- `OGI_REDIS_URL` がローカルホストベースの実行では `redis://localhost:6379/0` を指していること
- Redis が起動した後にバックエンドが再起動されたこと
- 別のワーカープロセスが実行中であること
- Docker Compose の外部で Docker 専用のホスト名 `redis` を使用していないこと
PostgreSQL (`OGI_USE_SQLITE=false`) に対してバックエンドを実行する場合、起動時にリクエストを処理する前に Alembic マイグレーションが自動的に適用されます。Docker デプロイでも、バックエンドコンテナのエントリポイントで同様の処理が行われます。
AI Investigator の実行は、別のワーカーによって処理されます:```bash
cd backend
uv run python -m ogi.agent.run_worker
フロントエンド```bash
cd frontend pnpm install pnpm dev
Open http://localhost:5173 を開く。以上です。
### AI Investigator
AI Investigatorは、プロバイダーを利用したオプションのワークフローで、変換シーケンスの計画、承認の要求、ワークスペース内での調査進捗の要約を行うことができます。
- プロジェクト内の`AI Investigator`タブを開く
- 調査設定ダイアログでプロバイダーとモデルを設定する
- プロバイダーのAPIキーを`API Keys`に保存する
- バックエンドと一緒に別個の`agent-worker`プロセスを実行する
現在の実装では、ユーザーごとのプロバイダー設定と、メインAPIサーバーから独立して調査ステップを実行する専用ワーカーをサポートしています。
### CLI
CLIを実行するための2つのサポート方法:
**推奨**(アクティベーション不要):```bash
cd backend
uv sync
uv run ogi --help
アクティブ化されたvirtualenv (プレーン ogi コマンド):```bash
cd backend
uv venv
PowerShell:
..venv\Scripts\Activate.ps1 uv pip install -e . ogi --help
## Docker
### 開発```bash
cp .env.example .env
docker compose up
本番
事前にビルドされたGHCRイメージを使用してください。
重要: docker-compose.prod.yml は外部のPostgreSQLデータベースが必要です。dbサービスは含まれていません。
すべてを内蔵したローカルDockerスタック(PostgresとRedisが組み込まれている)が必要な場合は、以下を使用してください:```bash docker compose up -d
既に到達可能なPostgreSQLインスタンスがあり、それに応じて `OGI_DATABASE_URL` を設定している場合にのみ、本番用のcomposeファイルを使用してください:```bash
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
.env内のOGI_IMAGE_TAGを設定して、特定のリリースイメージタグ(例:v0.2.6)を固定します。デフォルトはlatestです。
Hetzner Cloud
新しいHetznerユーザーは、最初のリンクを使用してHetzner Cloudのクレジットを利用してサインアップできます。これは紹介リンクであり、紹介が条件を満たした場合、OGIメンテナーもHetzner Cloudクレジットを受け取ることがあります。サーバーを作成した後、上記のDockerデプロイコマンドを使用してOGIを実行してください。
設定可能な変換上限
OGIには、max_results、max_links、max_urls、max_content_charsなどの項目に対して、適切なtransformごとの最大値が組み込まれていますが、これらの上限は中央で上書き可能になり、クラウドデプロイメントがローカル制限をハードコーディングせずに適用できるようになりました。
.env内のOGI_TRANSFORM_SETTING_MAX_OVERRIDESを使用します:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=50,max_urls=25,max_links=40,max_content_chars=20000
ローカルファーストデプロイメントで特定の制限を解除するには:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=none,max_urls=none,max_links=none,max_content_chars=none
オーバーライドはトランスフォーム設定名をキーとしており、ビルトイン・トランスフォームやOGIの共有トランスフォームベース/ランタイムを使用するコミュニティプラグインに適用されます。
ホスト型クラウドインスタンスとサポータープラン
ogi.khas.app のホスト型クラウドバージョンは、ユーザーがセルフホストする前にOGIをすばやく試せるように当初構築されました。その後、このプロジェクトで最も人気のある利用方法となり、350人以上のアクティブなクラウドユーザーがいます。
その利用により、このサイドプロジェクトのインフラコストも増加しました。そのため、リポジトリにはクラウド専用のサポーターサブスクリプションとトランスフォーマー実行のクールダウンシステムが含まれています。パブリッククラウドインスタンスでは、無料ユーザーはトランスフォーマーの実行間にタイムアウト制限を受けることがありますが、サポーターユーザーはSupabaseとVPSの費用を賄うために象徴的な月額3米ドルで購読できます。
サポーターサブスクリプションは、プロファイルの課金コントロールまたはStripeの課金ポータルからキャンセルできます。キャンセルすると将来の請求は停止されますが、支払い済みのサブスクリプション期間は返金または日割り計算されません。
この課金コードは設定によって意図的にガードされています。OGI_DEPLOYMENT_MODE=cloud かつ OGI_CLOUD_BILLING_ENABLED=true の場合にのみ効果を発揮します。セルフホストデプロイメントでは課金を無効にしたままにし、課金やペイウォールの動作は一切表示されないようにしてください。
テレメトリー
OGIには、特にセルフホストデプロイメント全体での実際の利用状況を把握するための、インストールレベルの製品テレメトリーが含まれています。
OGI_TELEMETRY_ENABLED=trueでテレメトリー収集を有効化OGI_TELEMETRY_LEVEL=fullがデフォルトの収集レベルOGI_TELEMETRY_ENABLED=falseと設定するとテレメトリーを完全に無効化OGI_TELEMETRY_LEVEL=basicと設定すると送信内容を削減
basic では以下が送信されます:
- OGIバージョン
- 毎日のアクティブインストールping
full ではさらに以下が送信されます:
- インスタンス作成日
- 期間内のプロジェクト、エンティティ、エッジ、トランスフォーム実行、調査官実行、アクティブユーザーの集計数
- インストールされているトランスフォームとそのバージョン
テレメトリーは、グラフの内容、エンティティ値、APIキー、プロンプト、その他の調査データを送信しないように設計されています。現在のポリシーの詳細はプライバシーポリシーにも公開されています。
開発用Composeサービス
| サービス | 説明 | ポート |
|---|---|---|
backend | FastAPIアプリケーションサーバー | 8000 |
worker | RQ非同期ジョブワーカー | - |
agent-worker | AI調査官ワーカー | - |
frontend | nginxで配信されるReactアプリ | 80 |
db | PostgreSQL 16 | 5432 |
redis | Redis 7(ジョブキュー) | 6379 |
本番用Composeサービス
| サービス | 説明 | ポート |
|---|---|---|
backend | FastAPIアプリケーションサーバー | 8000 |
worker | RQ非同期ジョブワーカー | - |
agent-worker | AI調査官ワーカー | - |
frontend | nginxで配信されるReactアプリ | 80 |
redis | Redis 7(ジョブキュー) | 6379 |
docker-compose.prod.yml は OGI_DATABASE_URL を介して外部のPostgreSQLデータベースを想定しています。
起動時プラグイン依存関係
プリビルドイメージを使用していて、プラグインに追加のPythonライブラリが必要な場合、OGIはコンテナ起動時に以下の場所からプラグインの依存関係をインストールします:
plugins/requirements.txt(推奨)、またはrequirements.txtがない場合、plugins/ogi-lock.jsonから自動生成された要件
環境変数:
| 変数 | デフォルト | 説明 |
|---|---|---|
OGI_BOOT_REQUIREMENTS_ENABLE | true | 起動時インストールの有効/無効 |
OGI_BOOT_REQUIREMENTS_FILE | /app/plugins/requirements.txt | requirementsファイルへのパス |
OGI_BOOT_LOCK_FILE | /app/plugins/ogi-lock.json | ロックファイルへのパス |
OGI_BOOT_REQUIREMENTS_STRICT | false | 要件がない場合に起動を失敗させる |
OGI_BOOT_REQUIREMENTS_CACHE_DIR | /tmp/ogi-boot | 生成された要件の一時/キャッシュディレクトリ |
トランスフォームハブ
OpenGraph Intelにはビルトインのトランスフォームマーケットプレイスがあります。コミュニティレジストリからトランスフォームを参照、インストール、管理できます。
セキュリティに関する注意: APIキーを必要とするプラグインは特権コードとして扱う必要があります。プラグインがシークレットにアクセスし、アウトバウンドのネットワークリクエストを行える場合、それらのシークレットを悪用または流出させる可能性があります。サードパーティのプラグインをインストールまたは実行する前に、信頼レベル、権限、必要なサービスを確認してください。```bash
Search for transforms
uv run ogi transform search dns
Install a transform
uv run ogi transform install shodan-host-lookup
### 組み込み変換カテゴリ
| カテゴリ | 例 |
| -------- | ------------------------------------- |
| DNS | A, AAAA, MX, NS, CNAME レコード |
| IP & ASN | GeoIP, リバースIP, ASN 情報 |
| SSL/TLS | 証明書透過性, SSL ラボ |
| Email | メールサーバー検証, 侵害チェック |
| Web | WHOIS, ドメイン情報, Web 抽出 |
| Social | ユーザー名列挙, ソーシャルプロフィール |
| Hash | MD5, SHA1, SHA256 ルックアップ |
| Location | ジオコーディング, 天気, 近隣の ASN データ |
### サポートされているエンティティタイプ
`Person` • `Username` • `Domain` • `IPAddress` • `EmailAddress` • `PhoneNumber` • `Organization` • `URL` • `SocialMedia` • `Hash` • `Document` • `Location` • `ASNumber` • `Network` • `MXRecord` • `NSRecord` • `Nameserver` • `SSLCertificate` • `Subdomain` • `HTTPHeader`
### 独自の変換を作成する
独自に作成したいですか?[貢献ガイド](https://github.com/opengraphintel/ogi-transforms/blob/main/CONTRIBUTING.md) を参照してください。
変換で外部サービスの認証情報が必要な場合は、`api_keys_required` で宣言してください。変換設定にシークレットを保存しないでください。OGI はそれらを `API Keys` の下で管理し、シークレットを使用するプラグインは特権コードと見なされます。
変換が `max_results` や `max_content_chars` などの上限付き設定を公開する場合は、可能な限り特注の一回限りの名前よりも安定した設定名を優先してください。OGI は `OGI_TRANSFORM_SETTING_MAX_OVERRIDES` を使用して中央で最大値を上書きでき、クラウドデプロイメントが制限を強制し、ローカルユーザーがそれらを削除するのに役立ちます。
各プラグインは `plugin.yaml` マニフェストを含むディレクトリです:```yaml
name: my-transform
version: "1.0.0"
display_name: My Transform
description: What it does
author: Your Name
license: MIT
category: dns
input_types: [Domain]
output_types: [IPAddress]
permissions:
network: true
filesystem: false
subprocess: false
アーキテクチャ
技術スタック
| 層 | 技術 |
|---|---|
| バックエンド | Python 3.14+, FastAPI, SQLModel, asyncpg / aiosqlite |
| フロントエンド | React 19, TypeScript 5.9, Sigma.js (graphology), Zustand, Tailwind CSS 4 |
| データベース | PostgreSQL 16 (primary) / SQLite (local fallback) |
| 認証・リアルタイム | Supabase Auth + JWT + Realtime (optional in local mode) |
| ジョブキュー | Redis 7 + RQ (async transforms) |
| AI ランタイム | Provider-backed AI Investigator worker with audited transform orchestration |
| パッケージマネージャー | uv (backend), pnpm (frontend) |
| デプロイ | Docker, nginx, GHCR |
プロジェクト構造```
ogi/ ├── backend/ │ └── ogi/ │ ├── api/ # REST API routes │ ├── cli/ # CLI tool (Typer) │ ├── db/ # Database layer (asyncpg + aiosqlite) │ ├── engine/ # Graph engine & transform engine │ ├── models/ # SQLModel definitions │ ├── store/ # Data stores │ ├── transforms/ # Built-in transforms │ │ ├── dns/ # DNS resolution transforms │ │ ├── cert/ # SSL certificate transforms │ │ ├── email/ # Email enrichment │ │ ├── hash/ # Hash lookups │ │ ├── ip/ # IP/ASN/geolocation │ │ ├── org/ # Organization info │ │ ├── social/ # Social media │ │ └── web/ # Web scraping/extraction │ ├── worker/ # Async job queue (RQ) │ ├── config.py # Pydantic settings │ └── main.py # FastAPI entry point ├── frontend/ │ └── src/ │ ├── api/ # API client │ ├── components/ # React components │ ├── hooks/ # Custom hooks (realtime sync, etc.) │ ├── stores/ # Zustand state management │ ├── types/ # TypeScript types │ └── App.tsx # Main application ├── plugins/ # Community plugins directory ├── docs/ # Documentation & images ├── docker-compose.yml # Development deployment ├── docker-compose.prod.yml # Production deployment └── .env.example # Environment template
### 設定
OGIは、`.env`ファイルをサポートする[pydantic-settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/)を使用します。ランタイム/バックエンド変数には`OGI_`プレフィックスが付きます。
リスト形式の設定は、次のいずれかを受け付けます。
- JSON配列(例:`["plugins","../plugins"]`)
- カンマ区切りの文字列(例:`plugins,../plugins`)
<details>
<summary><strong>主要な環境変数</strong></summary>
| 変数 | 説明 | デフォルト |
| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| `OGI_APP_NAME` | アプリケーション名 | `OGI` |
| `OGI_HOST` | バックエンドのバインドホスト | `0.0.0.0` |
| `OGI_PORT` | バックエンドのポート | `8000` |
| `OGI_CORS_ORIGINS` | 許可されるフロントエンドのオリジン | `http://localhost:5173,http://localhost:3000` |
| `OGI_USE_SQLITE` | PostgreSQLの代わりにSQLiteを使用する | `true` |
| `OGI_DB_PATH` | SQLiteデータベースファイルのパス | `ogi.db` |
| `OGI_DATABASE_URL` | PostgreSQL接続文字列 | `postgresql://postgres:postgres@localhost:5432/ogi` |
| `OGI_REDIS_URL` | RQ/ジョブ用のRedis接続文字列 | `redis://localhost:6379/0` |
| `OGI_RQ_QUEUE_NAME` | 変換ジョブのキュー名 | `transforms` |
| `OGI_TRANSFORM_TIMEOUT` | 変換ジョブごとのタイムアウト(秒) | `300` |
| `OGI_AGENT_WORKER_POLL_INTERVAL_SEC` | AI Investigatorワーカーのポーリング間隔 | `2.0` |
| `OGI_AGENT_CLAIM_TIMEOUT_SEC` | AI Investigatorステップ回復のための古いクレームのタイムアウト | `120` |
| `OGI_AUTO_RUN_MIGRATIONS` | ローカルの非SQLiteアプリ起動時にAlembicを自動実行 | `true` |
| `OGI_RUN_DB_MIGRATIONS` | コンテナエントリポイントでDBマイグレーションを実行 | `false` |
| `OGI_DB_MIGRATION_RETRIES` | エントリポイントのマイグレーション再試行回数 | `30` |
| `OGI_DB_MIGRATION_DELAY_SECONDS` | エントリポイントのマイグレーション再試行間の遅延 | `2` |
| `OGI_PLUGIN_DIRS` | プラグインの検索ディレクトリ | `plugins,../plugins` |
| `OGI_DEPLOYMENT_MODE` | デプロイメントモード(`self-hosted` または `cloud`) | `self-hosted` |
| `OGI_CLOUD_BILLING_ENABLED` | クラウド専用のSupporter請求と変換クールダウンを有効にする | `false` |
| `OGI_FREE_TRANSFORM_COOLDOWN_SECONDS` | 無料クラウドユーザーのトランスフォーマー実行間のクールダウン | `1800` |
| `OGI_PAID_TRANSFORM_COOLDOWN_SECONDS` | 有料クラウドユーザーのトランスフォーマー実行間のクールダウン | `0` |
| `OGI_STRIPE_SECRET_KEY` | Checkoutおよびポータルセッション用のStripeサーバー側シークレットキー | 未設定 |
| `OGI_STRIPE_WEBHOOK_SECRET` | Stripe Webhook署名シークレット | 未設定 |
| `OGI_STRIPE_SUPPORTER_PRICE_ID` | SupporterプランのStripe定期購入価格ID | 未設定 |
| `OGI_STRIPE_SUPPORTER_AMOUNT_CENTS` | Supporterプランの表示金額 | `300` |
| `OGI_STRIPE_SUPPORTER_CURRENCY` | Supporterプランの表示通貨 | `usd` |
| `OGI_BILLING_SUCCESS_URL` | オプションのStripe Checkout成功リダイレクト | リクエストから導出 |
| `OGI_BILLING_CANCEL_URL` | オプションのStripe Checkoutキャンセルリダイレクト | リクエストから導出 |
| `OGI_BILLING_PORTAL_RETURN_URL` | オプションのStripe請求ポータル戻りURL | リクエストから導出 |
| `OGI_REGISTRY_REPO` | 変換レジストリのGitHubリポジトリ | `opengraphintel/ogi-transforms` |
| `OGI_REGISTRY_CACHE_TTL` | レジストリキャッシュのTTL(秒) | `3600` |
| `OGI_TRANSFORM_SETTING_MAX_OVERRIDES` | オプションの変換設定のグローバル最大オーバーライドマップ | 空 |
| `OGI_GITHUB_TOKEN` | オプションのレジストリ/APIレート制限用GitHubトークン | 未設定 |
| `OGI_SUPABASE_URL` | SupabaseプロジェクトURL | 未設定 |
| `OGI_SUPABASE_ANON_KEY` | Supabase匿名/公開キー | 未設定 |
| `OGI_SUPABASE_SERVICE_ROLE_KEY` | Supabaseサービスロールキー | 未設定 |
| `OGI_SUPABASE_JWT_SECRET` | Supabase JWTシークレット | 未設定 |
| `OGI_SUPABASE_REDIRECT_URL` | フロントエンド認証フローで使用されるリダイレクトURL | 未設定 |
| `OGI_ADMIN_EMAILS` | レジストリ/プラグイン管理の管理ユーザー | 未設定 |
| `OGI_TELEMETRY_ENABLED` | インストールレベルのテレメトリを有効または無効にする | `true` |
| `OGI_TELEMETRY_LEVEL` | テレメトリレベル(`basic` または `full`) | `full` |
| `OGI_API_KEY_ENCRYPTION_KEY` | 暗号化されたAPIキーストレージ用のFernetキー | 未設定だが強く推奨 |
| `OGI_API_KEY_INJECTION_ALLOW_COMMUNITY_PLUGINS` | コミュニティプラグインが保存されたAPIキーを受け取ることを許可する | `true` |
| `OGI_API_KEY_INJECTION_TRUSTED_TIERS_ONLY` | 保存されたキーの注入を信頼できるティアのみに制限する | `false` |
| `OGI_API_KEY_INJECTION_ALLOWED_TIERS` | 信頼のみモードが有効な場合に許可されるティア | `official,verified` |
| `OGI_API_KEY_SERVICE_ALLOWLIST` | オプションの保存されたキー注入の許可サービス | 空 |
| `OGI_API_KEY_SERVICE_BLOCKLIST` | オプションの保存されたキー注入のブロックサービス | 空 |
| `OGI_LLM_PROVIDER` | デフォルトのAI Investigatorプロバイダーのフォールバック | `openai` |
| `OGI_LLM_MODEL` | デフォルトのAI Investigatorモデルのフォールバック | `gpt-4.1-mini` |
| `OGI_EXPOSE_ERROR_DETAILS` | 500応答に内部詳細を含める | `false` |
| `OGI_SANDBOX_ENABLED` | サンドボックス実行モードを有効にする | `false` |
| `OGI_SANDBOX_TIMEOUT` | サンドボックスのタイムアウト(秒) | `30` |
| `OGI_SANDBOX_MEMORY_MB` | サンドボックスのメモリ制限(MB) | `256` |
| `OGI_SANDBOX_ALLOWED_TIERS` | クラウドサンドボックスモードで許可されるティア | `official,verified` |
| `OGI_BOOT_REQUIREMENTS_ENABLE` | 起動時のプラグイン依存関係インストールを有効にする | `true` |
| `OGI_BOOT_REQUIREMENTS_FILE` | ブート要件ファイルのパス | `/app/plugins/requirements.txt` |
| `OGI_BOOT_LOCK_FILE` | ブートロックファイルのパス | `/app/plugins/ogi-lock.json` |
| `OGI_BOOT_REQUIREMENTS_STRICT` | プラグイン要件がない場合に起動を失敗させる | `false` |
| `OGI_BOOT_REQUIREMENTS_CACHE_DIR` | ブート要件生成用の一時/キャッシュディレクトリ | `/tmp/ogi-boot` |
| `OGI_FRONTEND_PORT` | ローカルDockerフロントエンドポートマッピング | `3000` |
| `OGI_IMAGE_TAG` | compose/Coolifyスタイルのデプロイ用プロダクションイメージタグ | `latest` |
| `OGI_BACKEND_IMAGE` | オプションのバックエンドイメージのオーバーライド | `ghcr.io/khashashin/ogi-backend` |
| `OGI_WORKER_IMAGE` | オプションのワーカーイメージのオーバーライド。デフォルトはバックエンドイメージ。ワーカーとバックエンドは同じイメージビルドを共有するため。 | `ghcr.io/khashashin/ogi-backend` |
| `OGI_FRONTEND_IMAGE` | オプションのフロントエンドイメージのオーバーライド | `ghcr.io/khashashin/ogi-frontend` |
| `OGI_CLI_BEARER_TOKEN` | オプションの認証対応バックエンド用CLIベアラートークン | 未設定 |
完全なリストは[`.env.example`](https://github.com/khashashin/ogi/blob/HEAD/.env.example)を参照してください。
</details>
## 開発
### テストの実行```bash
# Backend
cd backend
OGI_DB_PATH=":memory:" OGI_USE_SQLITE=true uv run pytest
# Frontend
cd frontend
pnpm test
リンティング & 型チェック```bash
Backend
cd backend uv run ruff check # Linting uv run mypy # Type checking
Frontend
cd frontend pnpm lint # ESLint
### CIパイプライン
[CIワークフロー](https://github.com/khashashin/ogi/blob/HEAD/.github/workflows/ci.yml)はすべてのプルリクエストで実行されます:
- **バックエンド:** ruff lint, mypy type check, pytest
- **フロントエンド:** vitest, eslint, vite build
## コントリビューション
PR歓迎! バグを見つけた場合やアイデアがある場合は、[イシューを開いて](https://github.com/khashashin/ogi/issues)ください。
新しいトランスフォームについては、[ogi-transforms](https://github.com/opengraphintel/ogi-transforms)にコントリビュートしてください。
### はじめに
1. リポジトリをフォーク
2. 機能ブランチを作成 (`git checkout -b feature/my-feature`)
3. 変更を加える
4. テストとリンターを実行
5. プルリクエストを送信
## 法的情報と責任ある使用
OGIは汎用OSINTおよびグラフ分析ツールです。**使用方法については、お客様が単独で責任を負います。** 完全な法的通知については[LEGAL.md](https://github.com/khashashin/ogi/blob/HEAD/LEGAL.md)を参照してください。
- **第三者サービスの利用規約を遵守してください。** 外部サービスを照会するトランスフォーム(DNS、WHOIS、Webスクレイピング、ユーザー名検索など)は、それらのサービスの利用規約に従って使用する必要があります。禁止しているサイトへの自動または一括照会は、それらの利用規約に違反する可能性があります。
- **データ保護法を尊重してください。** EUにお住まいの場合、またはEU居住者に関するデータを処理する場合は、データ管理者としてGDPRが適用されます。個人データ(名前、メールアドレス、IPアドレスなど)の収集、保存、または処理には、適法な根拠が必要です。OGI自体はローカルインスタンスを超えてデータを保存しません。収集および保持するものについてはお客様が責任を負います。
- **合法的な目的のみに使用してください。** OGIは、正当なセキュリティ研究、調査、脅威インテリジェンス、および教育目的での使用を意図しています。個人への嫌がらせ、不正アクセス、または適用される法律違反に使用しないでください。
- **ファイル形式の互換性。** OGIはMTGXグラフ交換形式のインポートをサポートしています。これは純粋にデータ相互運用性のために提供されるものであり、この形式を使用するツールの作成者との提携や承認を意味するものではありません。
> **免責事項:** OGIは「現状のまま」提供され、いかなる種類の保証もありません。著者は、本ソフトウェアの使用に起因する誤用または損害について責任を負いません。
## ライセンス
このプロジェクトは[GNU Affero General Public License v3.0](https://github.com/khashashin/ogi/blob/HEAD/LICENSE)の下でライセンスされています。
---
<div align="center">
**[バグを報告](https://github.com/khashashin/ogi/issues) • [機能をリクエスト](https://github.com/khashashin/ogi/issues) • [ディスカッション](https://github.com/opengraphintel/ogi-transforms/discussions)**
OGIコミュニティによって💜とともに作られました
</div>



