OpenSource-Hub

open-seo

アプリケーション

every-app/open-seo

オープンソースの SEO ツール。Semrush と Ahrefs の代替。

概要

OpenSEO は従量課金制の SEO ツールで、キーワードリサーチ、順位追跡、バックリンク分析、サイトオーディットなどの機能を提供し、MCP を通じて AI エージェントと連携します。セルフホストに対応しており、データは DataForSEO API から取得されます。

README プレビュー

# OpenSEO\n\n> Open source alternative to Semrush and Ahrefs\n\nOpenSEO is an SEO tool for _the people_. If tools like Semrush or Ahrefs are too expensive or bloated, OpenSEO is a pay-as-you-go alternative that you actually control.\n\n> All-in-one SEO tool for you and your AI agent.\n\nConnect with any agent like Claude Code, OpenClaw or Hermes. We have pre-built skills, but you can build your own to tailor OpenSEO to your needs.\n\n\n\n## Table of Contents\n\n- [Why use OpenSEO?](#why-use-openseo)\n- [Main SEO Workflows](#main-seo-workflows)\n- [OpenSEO MCP](#openseo-mcp)\n- [OpenSEO Agent Skills](#openseo-agent-skills)\n- [Roadmap](#roadmap)\n- [Community](#community)\n- [Pricing / Costs (Free + API costs)](#pricing--costs)\n- [DataForSEO API Key Setup](#dataforseo-api-key-setup)\n- [Google Search Console](#google-search-console)\n- [Self-hosting](#self-hosting)\n  - [Docker Self Hosting](#docker-self-hosting)\n  - [Cloudflare Self-Hosting](#cloudflare-self-hosting)\n- [Local Development](#local-development)\n- [Contributing](#contributing)\n- [SEO API Cost Reference](#seo-api-cost-reference)\n\n## Hosted Version\n\nIf you not interested in self hosting, or just want to support the project, we also have a hosted version:\n\n[openseo.so](https://openseo.so)\n\n## Why use OpenSEO?\n\n- Best in class MCP and AI Skills.\n- Modern, simple UI.\n  - Focused workflows instead of a bloated, complex SEO suite.\n- No subscriptions.\n  - Bring your own DataForSEO API key and pay only for what you use.\n- Fork and vibe code your own custom tool.\n\n## Main SEO Workflows\n\n- Keyword research\n  - Find topics worth targeting, estimate demand, and prioritize what to write next.\n- Rank tracking\n  - Monitor keyword positions across desktop and mobile over time, with SERP feature detection.\n- Domain insights\n  - Understand where your domain is gaining or losing visibility so you can focus on the pages that move revenue.\n- Backlinks\n  - See who links to your site, which pages

FAQ (5)

トラブル対応
pnpm dev を実行した際に発生する SolidJS の "No matching export ... for import 'use'" エラーを修正するにはどうすればよいですか?

これは、@tanstack/react-devtools 0.10.12 が @tanstack/devtools-ui 0.7.1 を取り込む際に発生します。このバージョンは、use をエクスポートしていない SolidJS 1.9.11 のサーバービルドから use をインポートします。devtools は src/routes/__root.tsx で静的にインポートされているため、VITE_SHOW_DEVTOOLS=false を設定しても効果がありません。

回避策: @tanstack/react-devtools を互換性のある最後のバージョンに固定します:

"@tanstack/react-devtools": "0.10.8"

次に依存関係を更新します:

pnpm install --no-frozen-lockfile
pnpm dev

これにより @tanstack/devtools-ui 0.6.0 に解決され、開発サーバーが起動できるようになります。よりクリーンな恒久的な修正方法は、コミット db8bde17e245d01f9ca4ab06acaf37fe22aac361 で実装されているように、src/routes/__root.tsx でクライアント専用の動的インポートを使用して devtools を読み込むことです。

参照 Issue #382
トラブル対応
サイト監査が minified HTML 上で単語数を過少にカウントし、誤った thin-content 警告を表示するのはなぜですか?

これは open-seo の v0.1.16 より前のバージョンにおけるバグです。空白なしで連結されたブロックレベルタグ(例: <p>one</p><p>two</p>)は、連結されたテキスト(onetwo)として解析され、単語数が減少して誤った thin-content 警告が発生していました。また、<li>、<td>、<br> 要素にも影響し、同等の HTML に対して異なるコンテンツハッシュが生成されていました。修正方法: open-seo を v0.1.16 以降にアップグレードしてください(コミット 756538cc5 で修正済み)。アップグレード後は、ミニファイされた HTML と整形された HTML で同一の単語数とコンテンツハッシュが得られ、Open<strong>SEO</strong> のようなインラインマークアップは引き続き1単語としてカウントされます。

参照 Issue #400
トラブル対応
上にスクロールして以前のメッセージを読もうとしているときに、SAMチャットが自動的に一番下までスクロールしてしまうのを止めるにはどうすればよいですか?

これは、messages が更新されるたびにチャットのスクロールコンテナが最下部に固定されるために発生します。SAM のストリーミングレスポンス中はトークンごとに更新が発生するため、ビューはすぐに最下部へ引き戻されます。修正方法は、チャットの自動スクロール修正を含むリリースにアップデートすることです。コード上の回避策として、SamConversation と OnboardingChatConversation では、ユーザーがすでに最下部付近にいる場合にのみ自動スクロールを行います。例: const nearBottom = el.scrollHeight - el.scrollTop - el.clientHeight < 80; if (nearBottom) el.scrollTop = el.scrollHeight;。メッセージが変更されるたびに scrollTop = scrollHeight を強制しないでください。

参照 Issue #160
トラブル対応
open-seo の Docker コンテナが再起動のたびに `vite build` を実行し、応答に90秒かかるのはなぜですか?

v0.1.0 のセルフホストイメージは、起動コマンドで無条件に pnpm run build を実行し、Vite のクライアント/SSR バンドルを再ビルドして、配信前に tsc --noEmit を実行します。修正方法は、PR #120 を含むイメージを使用することです。起動スクリプトは、Vite にインライン化された VITE_* 変数とイメージビルド ID をハッシュ化し、ビルド出力を永続データボリュームにキャッシュして、両方が変更されていない場合はビルドをスキップします。また、ランタイムの tsc --noEmit チェックも削除されます。データボリュームをマウントしたまま、docker compose pull && docker compose up -d で更新してください。初回の起動ではビルドが実行される場合がありますが、それ以降の再起動ではスキップされます。ビルドに関係する VITE_* 変数を変更するか、イメージを更新すると、再ビルドがトリガーされます。v0.1.0 を使い続ける必要がある場合は、PR #120 ベースのイメージをビルドまたは実行してください。古いイメージには、起動時のビルドを無効にする組み込みフラグはありません。

参照 Issue #100
トラブル対応
nextCheckAtが過去のまま固まっていて、lastSkipReasonがnullの場合、スケジュールされたランクトラッキングチェックがまったく実行されないのはなぜですか?

これは、スケジュールされたランクチェックの cron が nextCheckAt を進める前、または run レコードを作成する前に失敗した場合に発生します。手動チェックは別のコードパスを使用するため、引き続き成功する場合があります。ホステッド版の問題は、スケジューラのコミット f048dc3bd1c671e28aa4ceaaf22ca6663cdcb321 および eec998a76233bb33e2dddbd921fc81da2eba1e0a をデプロイすることで修正されました。また、スケーリング関連の障害を受けて、データベースの容量も増強されました。セルフホストインスタンスの場合: 1) これらのコミットを含むリリースにアップグレードしてください。2) cron ログで [cron] Error processing config と影響を受ける config ID を検索してください。例: grep '\[cron\] Error processing config' app.log | grep -E 'aea7a4ae-b6f3-4334-8196-eb9406d20dbf|845f59d5-c4cd-440f-953a-2be68374ca38'。3) データベースの CPU、接続数、レイテンシ、リソース枯渇を確認し、必要に応じて増強してください。4) 暫定的な回避策として、手動で **Check rankings** を使用してください。これにより順位は更新されますが、固まったスケジュールは修復されません。5) 修正をデプロイした後、nextCheckAt が固まったままになっている config については、キューに再登録するか、サポートにお問い合わせください。

参照 Issue #198