create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Extract visual branding (colors, typography, layout patterns) from a client's website and generate a style preset compatible with the HTML slides skill and a brand config JSON for the content asset creator. Uses WebFetch to read pages and analyzes CSS/HTML to identify the color
$ npx -y skills add gooseworks-ai/goose-skills --skill visual-brand-extractor --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/visual-brand-extractorContext preview
The summary Claude sees to decide when to auto-load this skill.
Extract visual branding (colors, typography, layout patterns) from a client's website and generate a style preset compatible with the HTML slides skill and a brand config JSON for the content asset creator. Uses WebFetch to read pages and analyzes CSS/HTML to identify the color
name: visual-brand-extractor description: > Extract visual branding (colors, typography, layout patterns) from a client's website and generate a style preset compatible with the HTML slides skill and a brand config JSON for the content asset creator. Uses WebFetch to read pages and analyzes CSS/HTML to identify the color palette, font pairings, and aesthetic patterns. tags: [brand]
Extract a client's visual identity from their website and generate reusable style presets for slides and content assets. This is an agent-executed skill — the AI reads pages via WebFetch and performs the analysis directly.
Extract visual branding from https://vapi.ai for the Vapi client.
| Input | Required | Description | |-------|----------|-------------| | **Website URL** | Yes | Client's homepage or landing page URL | | **Client name** | Yes | For naming the output files | | **Additional pages** | No | Product page, docs page, etc. for richer extraction |
Two files saved to `clients/<client-name>/brand/visual-identity.md`:
1. **Slide preset** — CSS custom properties, typography, and signature elements matching the format in `skills/create-html-slides/STYLE_PRESETS.md` 2. **Brand config JSON** — Simple color/font config matching `skills/content-asset-creator` format
---
Fetch 2-3 pages to get a representative sample of the brand:
1. **Homepage** (mandatory) — the primary brand expression 2. **Product/feature page** (if available) — deeper color and layout usage 3. **Blog or about page** (optional) — secondary design context
Use WebFetch on each URL with a prompt like:
> "Extract the full content of this page. I need: all color values (hex, rgb, hsl), font family names, CSS class names (especially Tailwind utility classes), any CSS custom properties/variables, meta tags, and the general structure of the page layout. Preserve exact color codes and font names."
Analyze the fetched content to identify the color palette. Look for these sources in priority order:
Look for `:root`, `html`, or `body` blocks containing color variables:
--color-primary, --primary, --brand, --accent --bg-*, --background-* --text-*, --foreground-*
Check for:
Search for color values in these properties:
If the site uses Tailwind CSS, map utility classes to hex values using the reference table below.
| Role | How to Identify | |------|----------------| | **bg-primary** | `background-color` on `body`, `html`, or outermost container. The most common background. | | **bg-secondary** | Background on cards, sections, or secondary containers. Slightly different from primary. | | **text-primary** | `color` on `body` or the most common text color. | | **text-secondary** | Muted text variant — used on subtitles, descriptions, `.text-gray-*` elements. | | **accent** | Most prominent non-bg, non-text color. Found on buttons, links, CTAs, highlights. Also check `<meta name="theme-color">`. | | **accent-secondary** | Second accent color, or gradient partner. Found on secondary buttons, hover states. | | **card-bg** | Background of cards, modals, or elevated surfaces (if different from bg-primary). |
Check the luminance of bg-primary:
---
Look for font loading in this order:
1. **Google Fonts `<link>` tags** — Font name is in the URL:
fonts.googleapis.com/css2?family=Inter:wght@400;700
→ Font: `Inter`, weights: 400, 700
2. **Fontshare `<link>` tags** — Similar URL pattern:
api.fontshare.com/v2/css?f[]=clash-display@400,700
→ Font: `Clash Display`
3. **`@font-face` declarations** — Extract the `font-family` value
4. **`font-family` CSS properties** — Direct declarations on elements
| Role | How to Identify | |------|----------------| | **Display font** | Font on `h1`, `h2`, `.title`, `.heading`, `.hero-title`, or the largest/boldest text. | | **Body font** | Font on `body`, `p`, or general content elements. |
If both use the same font family, it's a single-family pairing (like "Manrope + Manrope"). Note the different weights used for display (700-900) vs body (400-500).
If the site uses a font NOT available on Google Fonts or Fontshare, map it to the closest available equivalent using the **Font Fallback Table** below.
---
Examine the CSS and page structure for these aesthetic signals:
| Signal | What to Look For | Aesthetic Implication | |--------|-----------------|---------------------| | **Border radius** | `border-radius` values — large (12px+, 9999px) vs small (2-4px) vs none | Rounded = friendly/modern. Sharp = corporate/bold. | | **Gradients** | `linear-gradient`, `radial-gradient` in backgrounds | Gradient-forward = modern SaaS aesthetic | | **Shadows** | `box-shadow` frequency and intensity | Heavy shadows = depth/elevation. None = flat/minimal. | | **Spacing** | Padding/margin sizes — generous (4rem+) vs tight (1rem) | Airy = premium/minimal. Dense = information-rich. | | **Animations** | `@keyframes`, `transiti
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.