运行时依赖
安装命令
点击复制技能文档
品牌DNA提取器 从任何网站URL提取结构化的品牌身份配置文件。分析颜色、字体和视觉风格,以生成可重用的品牌配置文件,用于创建品牌内容。 环境变量 export OPENAI_API_KEY="你的OpenAI密钥" #用于VLM视觉分析(备用) export GOOGLE_GENAI_API_KEY="你的Gemini密钥" #用于VLM视觉分析(主) export SUPABASE_URL="你的Supabase URL" #可选:用于缓存结果 export SUPABASE_KEY="你的Supabase密钥" #可选:服务角色密钥 提取内容 组件详细信息 颜色调色板 主色、次色、强调色、背景色和文本色——从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计算字体 解析计算元素样式的字体家族声明 根据角色分类:标题、正文、CTA、导航 区分系统字体和自定义字体 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_