任意のウェブサイトから色、タイポグラフィ、余白(スペーシング)、ビジュアルアイデンティティを自動で抽出し、それらをプロフェッショナルな PDF ドキュメントとしてまとめるブランドスタイルガイドジェネレーターを構築します。

このガイドで構築するもの#
任意のウェブサイトの URL を入力として受け取り、Firecrawl の branding format を使ってブランドアイデンティティを完全に抽出し、次の内容を含む洗練された PDF スタイルガイドを生成する Node.js アプリケーションです:
- HEX 値付きのカラーパレット
- タイポグラフィシステム(フォント、サイズ、ウェイト)
- スペーシングとレイアウトの仕様
- ロゴおよびブランド画像
- テーマ情報(ライト / ダークモード)

前提条件#
- Node.js 18 以降がインストールされていること
- firecrawl.dev から取得した Firecrawl API キー
- TypeScript と Node.js の基礎知識
新しい Node.js プロジェクトの作成
まず、プロジェクト用の新しいディレクトリを作成し、プロジェクトを初期化します:
package.json を更新し、ES モジュールを利用するようにします:
依存関係のインストール
WebスクレイピングとPDF生成に必要なパッケージをインストールします。
これらのパッケージは次の機能を提供します:
firecrawl: ウェブサイトからブランドアイデンティティを抽出するための Firecrawl SDKpdfkit: PDF ドキュメント生成ライブラリtsx: Node.js 向けの TypeScript 実行環境
ブランドスタイルガイド生成ツールを作成する
メインのアプリケーションファイル index.ts を作成します。このスクリプトは、URL からブランドアイデンティティを抽出し、プロフェッショナルな PDF 形式のスタイルガイドを生成します。
このシンプルなプロジェクトでは、API キーをコード内に直接記述しています。GitHub にプッシュしたり他者と共有したりする予定がある場合は、キーを .env ファイルに移し、代わりに process.env.FIRECRAWL_API_KEY を使用してください。
fc-YOUR-API-KEY を、firecrawl.dev から取得した Firecrawl の API キーに置き換えてください。
コードの解説#
主要コンポーネント:
- Firecrawl Branding Format:
brandingフォーマットは、色、タイポグラフィ、余白、画像などを含む包括的なブランドアイデンティティを抽出します - PDFKit Document: 適切なマージンとセクションを備えたプロフェッショナルな A4 PDF を生成します
- Color Swatches: 16 進数表記の値と意味のある名前付きで色ブロックを視覚的に表示します
- Typography Display: フォントファミリーとサイズを整理されたレイアウトで表示します
- Spacing & Theme: デザインシステムのスペーシング (余白) 単位とカラースキームを文書化します
ジェネレーターを実行する
次のスクリプトを実行してブランドスタイルガイドを生成します:
このスクリプトは次の処理を行います:
- Firecrawl のブランディングフォーマットを使用して、対象 URL からブランドアイデンティティを抽出する
brand-style-guide.pdfという名前の PDF を生成する- それをプロジェクトディレクトリに保存する
別の Web サイト向けのスタイルガイドを生成するには、index.ts 内の URL 定数を変更するだけです。
動作の仕組み#
抽出プロセス#
- URL 入力: ジェネレーターが対象サイトの URL を受け取る
- Firecrawl スクレイピング:
brandingフォーマットを指定して/scrapeエンドポイントを呼び出す - ブランド分析: Firecrawl がページの CSS、フォント、ビジュアル要素を解析する
- データ返却: すべてのデザイントークンを構造化された
BrandingProfileオブジェクトとして返す
PDF 生成プロセス#
- ヘッダー作成: ブランドのプライマリカラーを使ってカラーのヘッダーを生成します
- ロゴ取得: 利用可能な場合はロゴまたはファビコンをダウンロードして埋め込みます
- カラーパレット: 各色をメタデータ付きの色見本としてレンダリングします
- タイポグラフィセクション: フォントファミリー、サイズ、ウェイトを記載します
- スペーシング情報: ベースユニット、ボーダー半径、テーマモードを含みます
ブランディングプロファイルの構造#
branding format では、ブランドに関する詳細な情報が返されます。
主な機能#
自動カラー抽出#
ジェネレーターはすべてのブランドカラーを検出し、カテゴリ分けします:
- Primary & Secondary: メインのブランドカラー
- Accent: ハイライトやCTA用のアクセントカラー
- Background & Text: UIの土台となる背景・テキストカラー
- Semantic Colors: 成功・警告・エラーなどの状態を表すカラー
タイポグラフィドキュメント#
タイポグラフィシステム全体を網羅しています:
- Font Families: 基本、見出し、等幅フォント
- Size Scale: すべての見出しと本文テキストのサイズ
- Font Weights: 利用可能なウェイト(太さ)のバリエーション
ビジュアル出力#
PDF には以下が含まれます:
- ブランドカラーに合わせたヘッダー
- 利用可能な場合のロゴの埋め込み
- 明確な階層構造を持つプロフェッショナルなレイアウト
- 生成日時を含むメタデータフッター

カスタマイズのアイデア#
コンポーネント用ドキュメントを追加する#
ジェネレーターを拡張して、UI コンポーネントのスタイルも含めるようにします:
複数フォーマットでエクスポート#
PDFに加えて、JSON形式でのエクスポートも追加します:
バッチ処理#
複数のウェブサイト用のガイドを生成します:
カスタム PDF テーマ#
抽出したテーマに基づいて、異なる PDF スタイルを作成します。
ベストプラクティス#
-
欠損データの扱い: すべてのウェブサイトが完全なブランディング情報を公開しているとは限りません。欠損しているプロパティには必ずフォールバック値を用意してください。
-
レート制限の順守: 複数サイトをバッチ処理する場合は、リクエスト間に遅延を挟み、Firecrawl のレート制限を順守してください。
-
結果のキャッシュ: 同じサイトに対する API コールを繰り返さないよう、抽出したブランディングデータを保存してください。
-
画像フォーマットの扱い: 一部のロゴは PDFKit がサポートしていないフォーマット(SVG など)である場合があります。フォーマット変換や、適切なフォールバック処理の追加を検討してください。
-
エラーハンドリング: 生成処理は try-catch ブロックで囲み、わかりやすいエラーメッセージを提供してください。

