运行时依赖
安装命令
点击复制技能文档
品牌DNA提取器 从任何网站URL中提取结构化的品牌身份-profile。分析颜色、字体和视觉风格,以生成可重用的品牌-profile,用于创建符合品牌的内容。 环境变量 export OPENAI_API_KEY="你的openai_key" #用于VLM视觉分析(备用) export GOOGLE_GENAI_API_KEY="你的gemini_key" #用于VLM视觉分析(主) export SUPABASE_URL="你的supabase_url" #可选:用于缓存结果 export SUPABASE_KEY="你的supabase_key" #可选:服务角色密钥 它提取的内容 组件详细信息 颜色调色板 主色、次色、强调色、背景色和文本色——从CSS变量、计算样式和K-means图像聚类中获取 字体 标题和正文字体、字重、来源(Google Fonts、Adobe Fonts、系统) 视觉风格 情绪描述、摄影风格、构图注释、照明特征、品牌个性、目标受众信号 图像 Logo、favicon、英雄图像、产品图像、其他图像——分类和排名 Python使用 import asyncio from brand_dna_extractor.extractor import BrandDNAExtractor, extract_brand_dna # 快速提取 async def main(): result = await extract_brand_dna( url="https://example.com", user_id="可选用户ID", force_refresh=False, ) if result.success: dna = result.brand_dna print(dna.color_palette.dominant_color) # "#2563EB" print(dna.typography.primary_font.family) # "Inter" print(dna.visual_style.moods) # ["温暖极简", "友好"] print(dna.visual_style.brand_personality) # "自信和平静..." else: print(result.error) asyncio.run(main()) # 完全控制 extractor = BrandDNAExtractor( vlm_provider="gemini", # "gemini"(默认)或"openai" enable_storage=True, # 在Supabase中缓存结果 enable_embeddings=False, # 跳过CLIP嵌入生成 ) result = await extractor.extract( url="https://example.com", include_subpages=True, # 也爬取关于/产品页面 max_subpages=5, force_refresh=False, ) 5步提取流程 步骤1:网站爬取 使用两级爬取策略: 主爬取——DOM结构爬取(SimpleScraper) 快速HTTP请求,结构化HTML解析 提取CSS变量、计算样式、样式表、JSON-LD数据 针对Shopify商店进行优化(读取产品JSON-LD) 遵循include_subpages爬取最多max_subpages个附加URL 备用爬取——Playwright爬取(PlaywrightScraper) 在简单爬取产生<3个画廊/产品图像时激活 处理JavaScript渲染内容 可选依赖:pip install playwright && playwright install 步骤2:图像提取和分类 图像被分类为以下类型: 类型 描述 logo 网站Logo(通过位置、alt文本、大小检测) favicon 网站favicon hero 大型上方折叠横幅图像 product 产品摄影 lifestyle 上下文/生活方式图像 other 其余UI图像 最多提取100个图像;保留前30个产品+30个其他图像。 步骤3:颜色分析 多源颜色提取和分类: CSS自定义属性(--primary-color、--brand-color等) + 计算元素样式(headerBackground、ctaBackground、linkColor等) + K-means聚类在Logo像素(3种颜色) + K-means聚类在英雄/产品图像(每个3种颜色,最高5个图像) ↓ 删除重复(欧几里得距离阈值=30) ↓ 按照亮度/饱和度分类: L > 0.9 → 背景 L < 0.15 → 文本 S > 0.6 → 强调色 source=primary → 主色 否则 → 次色 ColorPalette输出: palette.dominant_color # "#2563EB"(十六进制字符串) palette.primary_colors # List[ColorInfo](最多3种) palette.secondary_colors # List[ColorInfo](最多3种) palette.accent_colors # List[ColorInfo](最多2种) palette.background_colors # List[ColorInfo](最多2种) palette.text_colors # List[ColorInfo](最多2种) ColorInfo字段: hex、rgb、hsl、role、source、name、frequency、css_property 步骤4:字体分析 从三个来源检测字体: CSS计算字体 解析从计算元素样式中声明的font-family 按角色分类:标题、正文、cta、nav 区分系统字体和自定义字体 Google Fonts(从样式表URL中检测) 解析旧(/css?family=)和新(/css2?family=)API格式 提取家族名称和字重变体 Adobe Fonts / Typekit(从样式表URL中检测) 标志使用use.typekit.net或use.adobe.com Typography输出: typography.primary_font # FontInfo — 主体字体 typography.secondary_font # FontInfo — 标题字体(如果不同) typography.heading_fonts # List[FontInfo] typography.body_fonts # List[FontInfo] typography.accent_fonts # List[FontInfo] typography.google_fonts_urls # List[str] typography.detected_