business-directory-website-development.html
< BACK 複数のスクリーン上にディレクトリリストを表示するデザイナーのデスク

Hostlistを構築して学んだこと:25,000のウェブホスト

ホスト番号 11,000 付近で、自分が下してきた決断のすべてに本気で疑問を感じました。劇的な感じではなく、もっと静かで具体的な不安でした。成長し続けるデータセットと、せいぜい 500 エントリー程度を想定して設計されたスキーマで、自分の身を追い詰めてしまったという現実の不安です。それが HostList でした。ウェブホストのディレクトリ。すべてのホスト、あるいはできるだけすべてに近いものです。

実際に何が起きたのか、その全容をお話しします -- アーキテクチャの選択、データの悪夢、すべてがクリックした瞬間、そして今日から始めるとしたら完全に違うやり方をしていただろう部分も含めてです。

Webホスティングディレクトリが必要な理由

正直なところ、イライラしていました。Seahawk のクライアントのためのリサーチをしていました。ホストを移行する必要があるミッドマーケット SaaS でしたが、包括的で最新のディレクトリが 1 つも見つかりませんでした。ほとんどは、中立を装ったシンなアフィリエイトページか、2017 年に廃業したホストをまだリストしている古くなったリストのどちらかでした。and current. Most were either thin affiliate pages pretending to be neutral, or outdated lists that still featured hosts that had gone under in 2017.

ウェブホスティング業界には、数千のアクティブなプロバイダーがあります。数十ではなく。数千です。共有ホスト、管理されたWordPressホスト、VPSプロバイダー、ベアメタル専門家、聞いたことのない地域プレイヤー。誰もそれを正しくマップしていません。だから私は思いました:やります。6週間、私は自分に言いました。WordPress hosts, VPS providers, bare-metal specialists, regional players you've never heard of. Nobody had mapped it properly. So I thought: I'll do it. Six weeks, I told myself.

6週間よりもかなり長くかかりました。

とはいえ、市場はこの直感を検証しました。ニッチなディレクトリが適度な規模でどの程度の成果を上げられるか見てください -- Soak Oregon はシンプルな温泉ディレクトリですが、月間 25,000 訪問者でおおよそ月 1,000 ドルの広告収益を上げています。タイプミスではありません。月間 25,000 訪問者です。適切にターゲットされたディレクトリの経済性は、一般的なコンテンツサイトとは本当に異なるのです。Soak Oregon, a simple hot springs directory, pulls roughly $1,000 a month in ad revenue on just 25,000 monthly visitors. That's not a typo. 25,000 visitors. The economics of a well-targeted directory are genuinely different from a general content site.

誰も話さないデータ問題

ここがほとんどのディレクトリ構築ガイドが完全に役に立たないところです。カテゴリーとリスティングフィールドをセットアップするように言われます。いいでしょう。彼らが言わないことは、25,000の正確で構造化されたレコードを収集することは、まったく異なるクラスの問題だということです。

最初のアプローチは、手作業でのリサーチとスクレイピングレイヤーの組み合わせでした。土曜日の夜に急ごしらえしたものです。スクレーパー自体は大丈夫でした。データは混乱していました。ホスティングプロバイダーは絶えず料金を変更します。3 つの異なるブランド名を持つものもあります。リセラーのリセラー -- 同じインフラストラクチャが 15 の異なるロゴを着ているものもあります。重複排除だけで 3 週間かかりました。data was chaos. Hosting providers change their pricing constantly. Some had three different brand names. Some were resellers of resellers -- the same underlying infrastructure wearing fifteen different logos. Deduplication alone cost me three weeks.

もっと早く決めておきたかったいくつかのこと:

  • ブランドごとではなく、法人ごとに1つの正規レコード。一部のホストには4つのブランドがあります。彼らはまだ1つのホストです。, not per brand. Some hosts have four brands. They're still one host.
  • すべてのフィールドに最新性の日付を記入します。行の「最終更新」だけではなく、フィールドごとにです。料金は機能セットよりも早く古くなります。Not just "last updated" on the row -- per field. Pricing goes stale faster than feature sets.
  • 初日から人による審査キューを用意する。自動取り込みは初期段階には問題ない。しかしレコードが公開される前に不正確に見えるものにフラグを立てるプロセスが必要だ。Automated ingestion is fine for first-pass. But you need a process for flagging records that look wrong before they go live.

特に3番目のポイント。早期にそれをスキップして、ホストがプランをリブランドし、スクレイパーが古いページ構造で照合していたため、価格帯が完全に間違っているリスティングの塊になってしまいました。それを見つけるのに長時間かかりました。

正しいテックスタックの選択

私はWordPressを選びました。わかってます。でも聞いてください。

この規模のディレクトリでは、成熟したプラグインエコシステムと深く理解できるクエリレイヤーを備えたものが必要です。小さなプロジェクトで Directorist を使用していて、うまく機能していました -- 柔軟なスキーマ、Gutenberg と連携、分別のあるデフォルト設定です。HostList 特有の場合、既製のプラグインが想定していないフィールド (データセンターの場所、ピアリング配置、コントロールパネルバージョンなど) が必要だったため、その上にカスタム投稿タイプレイヤーを重ねました。Directorist on smaller projects and it held up well -- flexible schema, works with Gutenberg, sensible defaults. For Hostlist specifically I paired it with a custom post type layer on top, because I needed fields that no off-the-shelf plugin anticipated (things like data-centre locations, peering arrangements, control panel versions).

本当に重要な 4 つのページ -- ニッチに関係なく、すべてのディレクトリに当てはまると言えます -- は以下の通りです:

  1. 明確な目的、おすすめリスティング、そしてシンプルな検索を備えたホームページ
  2. 高速フィルタリング機能を備えたアーカイブ/ブラウズページ(ここはユーザーの80%が滞在する場所です)
  3. 完全なレコード、構造化データマークアップ、そして申し立て/報告する方法を備えた個別リスティング
  4. 投稿ページ(最初はユーザー投稿を行わない場合でも、準備ができた状態で構築してください)

アーカイブページの重要性は言うまでもない。ユーザーはホームページに来てから他のページに遷移するわけじゃない。Google からアーカイブページに直着して、4秒以内にそのデータが信頼できそうかどうかを判断します。アーカイブページを最初に完璧にしてください。then navigate. They land on an archive page from Google and decide within four seconds whether the data looks credible. Get that page right first.

スタックについて変更したいこと

カスタムテーブル。コアのリスティングデータを投稿メタの外に出して、適切なリレーショナルテーブルに移動させるべきでした。もっと早い段階でそうしておくべきでした。WordPress の投稿メタは、おおよそ 5,000 レコードまでは問題ありません。それを超えると、クエリが苦しくなります。大規模な Web アプリケーションのパフォーマンス考慮事項 -- RAM、クエリ最適化、キャッシュ戦略 -- はすべて、ものを立ち上げることに全力で取り組んでいるときには計画しないものです。performance considerations for large-scale web applications are real -- RAM, query optimisation, caching strategy -- none of which you plan for when you're just trying to get the thing launched.

ディレクトリ自体のホスティング(本当に厄介)

ウェブホスティングディレクトリを構築してから、それをホストするホストを選択する必要があるという特別な皮肉があります。最初の1年で3つのホストを経験しました。

最初のひとつは、名前は伏せておきますが、マネージド型のWordPressホストでした。インポート処理で失敗してしまった――WP-CLIで25,000件の投稿を流し込むというのは、彼らのインフラストラクチャが対応するように設計されていなかったのです。次のひとつはVPSで、すべてを自分で管理していました。リバースプロキシとしてのNginx、オブジェクトキャッシングのためのRedis、ファイアウォールのためのufw。このセルフホスト型のアーキテクチャアプローチは、あなたが何をしているか分かっていれば素晴らしく機能します――完全な可視性、謎のスロットリングなし、キャッシュヘッダーはあなたが管理する。ただし、木曜日の午後11時に何かが壊れると、それは完全にあなたの問題になります。That self-hosted architecture approach works brilliantly when you know what you're doing -- total visibility, no mystery throttling, you control the cache headers. But it's also 11pm on a Thursday when something breaks and it's entirely your problem.

マネージド VPS にルートアクセス付きで着地しました。両方の最高です。Nginx をフロントに保ち、静的アセット用に CDN レイヤーを追加しました。それ以来、機能しています。

教訓:どのホストを選ぶにしても、コミットする前に実際のデータ量でテストすること。サンプルではなく。本当のインポート。500投稿のブログを難なく処理するホストが、データベースの再構築時に2万5000レコードを投げつけられると完全に機能停止することがある。test it with your actual data volume before you commit. Not a sample. Your real import. A host that handles a 500-post blog with flying colours will sometimes completely fall over when you throw 25,000 records at it during a database rebuild.

収益化: 試したこと、うまくいったこと

2019年、あるクライアントが私に言いました、「金はトラフィックではなく掲載にある」。その時は完全には理解していませんでした。今は理解しています。

Hostlist の収益はいくつかの場所から来ました。実際に針を動かしたものの大体の順序:

  • フィーチャー/プレミアムリスティング――ホストが関連するカテゴリページの上部に表示されるために料金を支払う。これは機能します。インテント(購買意図)が高いため、CPMは良好です。 -- hosts pay to appear at the top of relevant category pages. This works. The CPMs are good because the intent is high.
  • 年次更新を伴う認証バッジ――フルプレミアムリスティングより軽めのタッチですが、積み重なります。 -- lighter-touch than a full premium listing, but it adds up.
  • ディスプレイ広告――これは後から追加しましたが、成績が最も悪いです。オーディエンスが小さく、非常に限定的なため、ブロードなアドネットワークが適切に価値を認めません。 -- I added this late and it's the weakest performer by quite a lot. The audience is too small and too specific for broad ad networks to value properly.
  • リード生成/アフィリエイト――HostListが他のバイアスのある比較サイトのように見えてほしくなかったため、ここでは慎重でした。小数の紹介アレンジメントがありますが、開示されており、限定的です。 -- I was cautious here because I didn't want Hostlist to look like every other biased comparison site. I have a small number of referral arrangements but they're disclosed and limited.

やってないのは、無料の基本掲載と有料アップグレードを組み合わせたフリーミアムモデルです。考えたことはあります。ウェブホスティングの問題は、プラットフォームに載せる価値があるプロバイダー=ディレクトリでの露出を本当は必要としていないプロバイダーだってことです。小規模なホストの方が掲載から利益を得られるけど、予算も一番小さい。経済学的に微妙です。not done is a freemium model where basic listings are free and upgrades are paid. I thought about it. The problem with web hosting specifically is that the providers worth having on your platform are also the ones least likely to need your directory for exposure. The smaller hosts benefit more from being listed, but they're also the ones with the smallest budgets. The economics are awkward.

Brilliant Directoriesや同様のプラットフォームは、より コミュニティ志向のディレクトリ(ウェディング業者、子育てリソースなど)ではこれをうまく機能させています。メンバーは本当に地元のユーザーに見つけてもらいたいのです。ウェブホスティングは異なります。これはグローバルで超競争的な市場です。 have this figured out for more community-oriented directories -- wedding vendors, parenting resources -- where the members genuinely want to be found by locals. Web hosting is different. It's a global, hyper-competitive market.

大規模ディレクトリの SEO: 実際に役立ったポイント

25,000 のエントリーを持つディレクトリは、正しく処理すれば SEO アセットです。処理しなければ SEO 負債です。

実際に役立った具体的なこと:

  1. ユニークで、テンプレート化されているが可変性のあるメタディスクリプション(リスティングごと) ――ホスト名 + 「ウェブホスティングレビュー」ではありません。実際のデータポイント(価格帯、主要なユースケース、設立年)を取り込み、本当に異なるディスクリプションを生成しました。 -- not just the host name + "web hosting review". I pulled in actual data points (price tier, primary use case, founding year) to generate descriptions that were genuinely different.
  2. 実際の編集コンテンツを含むカテゴリページとタグページ――カードのグリッドではありません。「マネージド型WordPressホスティング」が実際に意味するところを説明する200語の導入部を書き、一度だけ作成してカテゴリに適用します。Googleは誰かがそのページについて考えたことを確認したいのです。 -- not just a grid of cards. A 200-word intro explaining what "managed WordPress hosting" actually means, written once, applied to the category. Google wants to see that someone thought about the page.
  3. 構造化データ(Schema.org) ――すべてのリスティングにLocalBusinessまたはOrganizationマークアップがあります。これを正しく追加した後、クリックスルーレートが顕著に改善されました。 -- every listing has LocalBusiness or Organization markup. Click-through rates improved noticeably after I added this properly.
  4. フィルター組み合わせ上のCanonical――これはほぼ私を殺しました。ファセット検索は何千ものURL組み合わせを生成します。これらをクリーンなアーカイブURLにカノニカライズしなければ、1ヶ月以内にクロールバジェットが破産します。 -- this nearly killed me. Faceted search generates thousands of URL combinations. If you don't canonical them back to the clean archive URL, you'll be crawl-budget bankrupt within a month.
  5. アクティブなホストのみをインデックスリスティングに含める。操作を継続していることを確認できないものはすべてnoindexにする。デッドリスティングは、リスティングがないより悪い。 -- I noindex anything I can't confirm is still operating. Dead listings are worse than no listing.

初期段階で間違えたこと:すべてを即座にインデックスしてしまった。ほぼデータのないスタブページも含めてだ。Googleがそれらをクロールして、薄いページを見つけ、しばらくの間ドメイン全体を部分的に低く評価した。教訓:インデックスする価値があるまでインデックスするな。don't index it until it's worth indexing.

異なる方法でやること

いくつか、素早く:

  • 最初はより小さく、絞られたニッチから始める。「ウェブホスティングディレクトリ」は巨大だ。「マネージドWordPressホスト」で立ち上げるべきだった。おそらく300~400件のレコードで、コンセプトを実証してから拡大する。
  • フロントエンドの前にデータパイプラインを作りましょう。僕は逆順でやった。インポートプロセスがちゃんと出来上がる前にフロントエンドがライブになったので、ずっとライブデータに対してパッチ当てしてました。before the front end. I did it backwards. The front end was live before the import process was solid, which meant I was constantly patching live data.
  • 初日からリスティングに料金を請求してください。月 1 ポンドでも。無料リスティングはフォームを下手に記入し、更新リクエストに応じないホストを引き付けます。わずかな支払いは品質をフィルタリングします。
  • 適切な貢献者システムにもっと早く投資してください。私が受け取った最高のデータ修正の一部は、エラーを見つけたユーザーからでした。最初の 8 か月間、それらを受け入れる構造化された方法がありませんでした。

正直に言うと、HostListの構築は、私が手掛けてきた中で最も技術的に興味深いサイドプロジェクトの一つであり、同時に最も謙虚さを学ばされたプロジェクトだ。ディレクトリ形式は外見から見ると不当に簡単に見える。

---

FAQ

Hostlistの構築にはどのくらい時間がかかりましたか?

最初のバージョン――粗いもので、データギャップがあちこちにあったが、稼働しているものは――夜間とウィークエンドで約3ヶ月かかった。本当に誇りに思える状態に持ち込むには、ほぼ1年かかった。データ品質の仕事は本当に終わらない。

ディレクトリ機能にはどのWordPressプラグインを使用しましたか?

ベースはDirectoristで、その上に大量のカスタム開発を加えた。より小さなディレクトリであれば、プラグインをほぼそのままで使うだろう。25,000件のエントリーがあると、結局カスタムクエリを書く必要が出てくる。プラグインはあくまで出発点を与えてくれるだけだ。

Webホスティングディレクトリは実際に収益を上げることができますか?

できます。私のものはコストをカバーしその先の収益をあげていますが、これがパッシブインカムマシンだと主張するつもりはありません。マージンは、プレミアムリスティングを売却できるかどうかに大きく依存します。適度なトラフィックレベルでは、ディスプレイ広告だけではそこまで到達できません。

25,000のリスティングを最新の状態に保つにはどうしますか?

不完全です。価格ページの変更をチェックするスケジュール済みスクレーパー、コミュニティ報告の修正キュー、トラフィック上位500のホストの手動レビューサイクルを組み合わせています。ロングテールは時間とともに劣化します。それは受け入れています。

最初のプロジェクトとして大規模なディレクトリを構築することをお勧めしますか?

いいえ。500件でやれることから始めてください。人がそれを使ってるの、それにマネタイズの道があるの、そこまで証明してから。その後でスケールしてください。大規模ディレクトリの技術とデータ管理の複雑さは本当に甘くない。その問題には、理念を検証した後で直面したい。前でじゃなくて。Then scale. The technical and data-management complexity of a large directory is genuinely non-trivial, and you want to encounter those problems after you've validated the idea, not before.

---

ディレクトリについては、それは長期戦です。コンテンツサイトではなく、データ資産を構築しています。トラフィックはゆっくり成長し、仕事は地味で、最初の6ヶ月間は誰も気にしているのか疑問に思うでしょう。しかし、データが良く、ニッチが正しい場合、ディレクトリは他のフォーマットで複製するのが難しい一種の引力を開発します。それが私が引き続きそれらを構築する理由です。

< BACK