Build or update the BlueBubbles external channel plugin for Moltbot (extension package, REST...
npx skills add ahutanu/awesome-agent-skills --skill "website-branding-extractor"
Install specific skill from multi-skill repository
# Description
Use when a user wants to extract branding assets from a website, mirror its design system locally, generate reusable static templates from a URL, inventory logos/styles/fonts/images, or validate whether a locally bundled template matches the source site's UI and branding.
# SKILL.md
name: website-branding-extractor
description: Use when a user wants to extract branding assets from a website, mirror its design system locally, generate reusable static templates from a URL, inventory logos/styles/fonts/images, or validate whether a locally bundled template matches the source site's UI and branding.
Website Branding Extractor
Extract the target URL's brand surface end-to-end: discover, inventory, download, template, and validate.
Required Intake
Collect the exact page or site URL from the user before doing anything else.
Confirm scope explicitly:
- single page only, or full domain;
- include CDN-hosted assets, or same-domain only;
- strict visual parity target, or "close match" fallback.
Default to full domain with strict visual parity when the user does not specify.
Workflow
1. Inventory all assets from sitemap + page crawl
Run:
python scripts/site_asset_inventory.py "https://example.com" --use-playwright
Use --use-playwright for JS-heavy sites or when static crawl misses hero/content assets.
Use --ignore-ssl-errors only when the target site has a broken or expired certificate and you still need a one-off extraction.
Inventory script responsibilities:
- parse robots.txt for sitemap entries;
- crawl sitemap indexes and URL sets deeply, including off-host sitemap URLs declared in robots.txt;
- fetch discovered pages and extract asset references from HTML/CSS;
- recursively discover additional same-site HTML pages from internal links when sitemap coverage is incomplete;
- optionally capture runtime-loaded assets with Playwright network tracing;
- capture both desktop and mobile rendered HTML snapshots for responsive sites when Playwright is enabled;
- classify assets (image, icon, stylesheet, font, script, media, other);
- output machine-readable and human-readable inventory reports.
2. Pull all assets locally into assets/
Run:
python scripts/download_assets.py \
--inventory assets/inventory/<domain>/asset_inventory.json
Download script responsibilities:
- download all inventoried assets into assets/raw/<domain>/;
- preserve deterministic paths for stable references;
- generate checksums and manifest files;
- report failed downloads explicitly.
- accept --ignore-ssl-errors when the source cannot be fetched with normal TLS validation.
3. Build reusable static template bundle
Run:
python scripts/build_brand_template.py \
--source-url "https://example.com" \
--inventory assets/inventory/<domain>/asset_inventory.json \
--manifest assets/raw/<domain>/download_manifest.json
Template builder responsibilities:
- copy assets into a deployable static bundle;
- rewrite HTML/CSS references to local bundle paths;
- rewrite copied stylesheet url(...) and @import dependencies to local bundle paths;
- rewrite and neutralize non-essential runtime scripts that would otherwise reintroduce remote analytics/editor dependencies;
- generate an editable starter template preserving visual language;
- emit responsive desktop/mobile HTML variants plus a single index.html router when a site renders materially different DOMs by viewport;
- extract brand tokens (colors, fonts) into brand-tokens.css;
- create an asset showcase page for inspection;
- emit remote_reference_audit.json so remaining network dependencies are explicit.
- accept --ignore-ssl-errors when the reference page itself has an invalid TLS certificate.
Bundle output path:
- assets/templates/<domain>/bundle/
4. Validate UI/UX fidelity against source
Install dependencies when missing:
python -m venv .venv-branding
source .venv-branding/bin/activate
python -m pip install playwright pillow
python -m playwright install chromium
Run:
python scripts/validate_template_fidelity.py \
--source-url "https://example.com" \
--template-dir assets/templates/<domain>/bundle \
--threshold 2.5
Validation responsibilities:
- render source and generated template at desktop and mobile viewports;
- block outbound template requests so missing local dependencies cannot hide behind live network fetches;
- capture screenshots and thresholded pixel-diff artifacts;
- fail when mismatch exceeds threshold;
- write detailed report and diff images.
5. Deliver local outputs
Always provide these paths in the final response:
- assets/inventory/<domain>/asset_inventory.json
- assets/raw/<domain>/download_manifest.json
- assets/templates/<domain>/bundle/
- assets/templates/<domain>/bundle/remote_reference_audit.json
- assets/templates/<domain>/bundle/index.desktop.html and index.mobile.html when responsive variants were generated
- assets/validation/<domain>/ (when fidelity validation runs)
Quality Bar
Enforce these gates unless user explicitly relaxes them:
- Inventory completeness: crawl sitemaps and page HTML, then run Playwright capture when needed.
- Asset locality: templates must reference local bundle assets only.
- Visual parity: run screenshot diff for desktop + mobile, with outbound template requests blocked and low-intensity rasterization noise thresholded out.
- Reusability: include editable template page and extracted brand tokens.
- Documentation: provide generated notes + report files and exact local paths.
One-command pipeline
Run the orchestrator to execute the full workflow:
python scripts/run_branding_pipeline.py --url "https://example.com" --use-playwright --validate
For sites with broken certificates, use:
python scripts/run_branding_pipeline.py --url "https://example.com" --use-playwright --validate --ignore-ssl-errors
Read references/workflow-quality-gates.md for strict acceptance criteria and fallback behavior.
Read references/proven-practices.md for the external standards behind sitemap discovery and visual validation choices.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.