Introduction
Building brand assets at scale is a constant headache. You create a logo in Brandmark, export it, manually adjust colours in SVG Studio, upload it somewhere for approval, wait for feedback, then repeat the entire process. If you've got a dozen product lines or seasonal campaigns, this workflow devours hours every month.
The real problem isn't the tools themselves; they're solid. The problem is the manual handoff between them. You're copying files, renaming assets, checking colour codes by eye, and hoping nothing gets missed. One person creates assets, another checks them, a third stores them. Each step is a potential failure point.
What if those three tools could talk to each other without you in the middle? What if you could feed a campaign brief into ai-boost, have it generate design parameters, pass those to Brandmark for asset creation, validate colours and consistency in SVG Studio, and have everything exported and organised automatically? That's what this workflow does. No copying files. No manual colour checking. No waiting between steps.
The Automated Workflow
We're going to build this workflow using n8n as the orchestration backbone. n8n is self-hosted or cloud-based, handles webhooks cleanly, and integrates with all three tools without fiddling with obscure API authentication schemes.
Here's the high-level flow: a trigger (either a webhook or a scheduled check) pulls a brand brief from a content management system. That brief goes to ai-boost, which analyses the campaign and outputs design parameters: primary colour, secondary colour, tone, asset types needed. Those parameters then create a Brandmark project, which generates logo variations. Each variation is downloaded and validated in SVG Studio to ensure colour consistency. Approved assets are tagged, organised, and exported to a shared storage location (Google Drive, AWS S3, or similar). A Slack notification confirms completion or flags issues.
Setting Up n8n Workflow
First, you'll need n8n running. If you're using the cloud version, set up an account at n8n.cloud. For self-hosted, grab the Docker image:
docker run -it --rm \
-p 5678:5678 \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_HOST=postgres \
-e DB_POSTGRESDB_USER=n8n \
-e DB_POSTGRESDB_PASSWORD=changeme \
-e DB_POSTGRESDB_DATABASE=n8n \
n8nio/n8n
Once n8n is running, you'll create a new workflow. Start with a webhook trigger:
POST /webhook/brand-asset-creation
{
"campaignName": "Summer 2024 Collection",
"brandGuidelines": "Eco-conscious, vibrant, youthful",
"assetTypes": ["logo", "icon_set", "social_headers"],
"colourPalette": "vibrant_greens_and_oranges"
}
This webhook becomes your entry point. Every time someone submits a campaign brief through a form (Google Forms, Typeform, or a custom app), this fires.
Step 1:
Extract Brief with ai-boost
After the webhook receives the payload, the first node calls ai-boost to analyse the campaign brief and generate design specifications. ai-boost has an API endpoint for text analysis:
POST https://api.ai-boost.io/v1/analyse/brand
Content-Type: application/json
Authorization: Bearer YOUR_AI_BOOST_API_KEY
{
"brief": "Eco-conscious, vibrant, youthful brand identity for summer collection",
"analysisType": "brand_design_parameters",
"outputFormat": "structured"
}
The response looks like this:
{
"analysisId": "abc123def456",
"designParameters": {
"primaryColour": "#2D7A4F",
"secondaryColour": "#FF8C42",
"accentColour": "#FFF8DC",
"tone": "energetic_and_sustainable",
"typography": "sans_serif_modern",
"assetTypes": ["logo", "icon_set", "social_headers"],
"styleGuidelines": "Use organic shapes, bold geometry avoided, earth tones mixed with bright accents"
},
"confidence": 0.92
}
In n8n, add an HTTP Request node configured to call this endpoint. Map the incoming webhook payload's brandGuidelines field to the brief parameter. Store the response in a variable called designParams.
Step 2:
Create Assets in Brandmark
Now pass those design parameters to Brandmark's API. Brandmark doesn't have a direct "create logo from parameters" endpoint, but it has a project creation API that accepts colour preferences and design styles:
POST https://api.brandmark.io/v1/projects
Content-Type: application/json
Authorization: Bearer YOUR_BRANDMARK_API_KEY
{
"projectName": "Summer 2024 Collection",
"settings": {
"primaryColour": "2D7A4F",
"secondaryColour": "FF8C42",
"accentColour": "FFF8DC",
"style": "modern_organic",
"industry": "sustainable_fashion",
"logoType": "wordmark_and_symbol"
},
"generateVariations": true,
"variationCount": 5
}
Brandmark returns a project ID and, if you've enabled async generation, it queues the asset generation. Use this response:
{
"projectId": "proj_abc123",
"projectName": "Summer 2024 Collection",
"status": "generating",
"estimatedTime": "120",
"webhookUrl": "https://your-n8n-instance/webhook/brandmark-complete"
}
Add another HTTP Request node in n8n for this call. Configure Brandmark's webhook to point back to your n8n instance. That way, when Brandmark finishes generating assets, it automatically triggers the next step.
Alternatively, use a polling approach: add a Wait node that sleeps for two minutes, then a second HTTP Request node that checks the project status:
GET https://api.brandmark.io/v1/projects/proj_abc123
Authorization: Bearer YOUR_BRANDMARK_API_KEY
This returns all generated logo variations as asset URLs:
{
"projectId": "proj_abc123",
"status": "completed",
"assets": [
{
"assetId": "asset_001",
"type": "logo_fullcolour",
"url": "https://cdn.brandmark.io/proj_abc123/asset_001.svg",
"colourUsage": {
"primary": "#2D7A4F",
"secondary": "#FF8C42",
"accent": "#FFF8DC"
}
},
{
"assetId": "asset_002",
"type": "logo_monochrome",
"url": "https://cdn.brandmark.io/proj_abc123/asset_002.svg",
"colourUsage": {
"primary": "#000000",
"secondary": "#CCCCCC"
}
}
]
}
Store this response as brandmarkAssets.
Step 3:
Validate Colours in SVG Studio
Here's where consistency enforcement happens. SVG Studio has an API for colour validation and extraction. For each asset URL returned by Brandmark, download the SVG and analyse it:
POST https://api.svgstudio.io/v1/validate/colours
Content-Type: application/json
Authorization: Bearer YOUR_SVGSTUDIO_API_KEY
{
"svgUrl": "https://cdn.brandmark.io/proj_abc123/asset_001.svg",
"expectedColours": ["#2D7A4F", "#FF8C42", "#FFF8DC"],
"allowedVariance": 5,
"checkAccessibility": true
}
SVG Studio returns:
{
"validationId": "val_xyz789",
"isValid": true,
"usedColours": ["#2D7A4F", "#FF8C42", "#FFF8DC"],
"colourCompliance": 100,
"accessibilityScore": 0.94,
"issues": []
}
In n8n, use a Loop node to iterate through each asset URL in brandmarkAssets. For each asset, call SVG Studio's validation endpoint. If any asset fails validation (colour variance exceeds threshold or accessibility score is below 0.90), flag it and send an alert. If all pass, continue.
You can also transform assets in SVG Studio if needed. For instance, if a logo variant used an off-brand colour, SVG Studio can programmatically shift it:
POST https://api.svgstudio.io/v1/transform/recolour
Content-Type: application/json
Authorization: Bearer YOUR_SVGSTUDIO_API_KEY
{
"svgUrl": "https://cdn.brandmark.io/proj_abc123/asset_002.svg",
"colourMap": {
"#2D7A50": "#2D7A4F"
},
"outputFormat": "svg"
}
This ensures every asset exported is genuinely on-brand.
Step 4:
Export and Organise Assets
Once all assets pass validation, download them and store them in a structured folder. Use n8n's Google Drive or AWS S3 nodes to upload files. Create a folder structure like:
/Brand Assets/Summer 2024 Collection/
/Logos/
logo_fullcolour.svg
logo_monochrome.svg
/Icons/
icon_set.svg
/Social Headers/
twitter_header.svg
facebook_header.svg
/Metadata/
brand_manifest.json
The metadata file should contain:
{
"projectId": "proj_abc123",
"campaignName": "Summer 2024 Collection",
"createdAt": "2024-01-15T10:30:00Z",
"designParameters": {
"primaryColour": "#2D7A4F",
"secondaryColour": "#FF8C42",
"accentColour": "#FFF8DC"
},
"assets": [
{
"filename": "logo_fullcolour.svg",
"type": "logo",
"colourCompliance": 100,
"accessibilityScore": 0.94,
"svgUrl": "https://cdn.brandmark.io/proj_abc123/asset_001.svg"
}
]
}
Use n8n's Google Drive node (if you have it installed) to create folders and upload files:
Google Drive: Create Folder
{
"name": "Summer 2024 Collection",
"parentId": "{{ $node['Get Brand Assets Folder'].data.id }}"
}
Then upload each validated asset:
Google Drive: Upload File
{
"fileName": "logo_fullcolour.svg",
"mimeType": "image/svg+xml",
"parentId": "{{ $node['Create Campaign Folder'].data.id }}",
"fileContent": "{{ $node['SVG Studio Validate'].data.transformedSvg }}"
}
Step 5:
Notifications and Logging
Finally, send a completion notification to Slack and log the entire workflow execution. Use n8n's Slack node:
Slack: Send Message
{
"channel": "#brand-assets",
"text": "Brand assets created successfully",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Summer 2024 Collection Assets Ready"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Project:*\nSummer 2024 Collection"
},
{
"type": "mrkdwn",
"text": "*Assets Generated:*\n5 logos, 12 icons"
},
{
"type": "mrkdwn",
"text": "*Compliance:*\n100% on-brand"
},
{
"type": "mrkdwn",
"text": "*Accessibility:*\n0.94 average score"
}
]
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View Assets"
},
"url": "{{ $node['Create Campaign Folder'].data.webViewLink }}"
}
]
}
]
}
Add error handling for each step. If Brandmark fails to generate assets, send an alert to Slack and log the failure:
Slack: Send Message (Error Handler)
{
"channel": "#brand-assets-errors",
"text": "Asset generation failed: {{ $node['Brandmark Create Project'].error.message }}",
"attachments": [
{
"color": "danger",
"fields": [
{
"title": "Campaign",
"value": "{{ $node['Webhook Trigger'].data.campaignName }}"
},
{
"title": "Error",
"value": "{{ $node['Brandmark Create Project'].error.message }}"
}
]
}
]
}
The Manual Alternative
If you prefer more control over each step, you can use Zapier instead, which has a simpler visual builder but less flexibility. However, Zapier's API endpoint calls are more limited, and orchestrating a five-step workflow with conditional branching is more cumbersome.
Alternatively, use Make (Integromat), which sits between n8n and Zapier in terms of complexity and flexibility. Make has good SVG Studio and Brandmark integrations built in, which can save you time if you don't mind the higher per-execution costs.
For a truly hands-on approach, write a Python script using the requests library that calls each API in sequence. This gives you complete control and costs nothing beyond the individual tool subscriptions. However, you'll need to maintain the script, handle errors yourself, and schedule it via cron or a task scheduler.
Pro Tips
1. Rate Limiting and Quota Management
ai-boost, Brandmark, and SVG Studio all have rate limits. ai-boost allows 100 requests per minute on the standard plan. Brandmark caps projects at 50 per day. SVG Studio limits colour validations to 1,000 per month on the basic tier. Build throttling into your n8n workflow. Use n8n's Rate Limit node to space out requests:
Rate Limit: 10 requests per minute
If you're creating more than 50 brand projects per day, you'll hit Brandmark's limit. Upgrade to their business plan, or stagger workflow triggers across multiple hours.
2. Caching Design Parameters
Don't call ai-boost every time. If you're creating assets for the same campaign repeatedly (say, generating monochrome and full-colour versions separately), cache the design parameters in n8n's built-in key-value store:
Set n8n Key-Value Pair
{
"key": "campaign_summer2024_params",
"value": "{{ $node['AI Boost Analyse'].data.designParameters }}",
"ttl": 604800
}
Then, on subsequent runs, check if the key exists before calling ai-boost again:
Get n8n Key-Value Pair
{
"key": "campaign_summer2024_params"
}
This saves API calls and speeds up the workflow.
3. Accessibility Thresholds
SVG Studio's accessibility scoring is crucial if your brand assets will be used in public-facing products. Set a minimum threshold (e.g., 0.90) and auto-fail any assets below it. Don't just warn; actually prevent deployment. This keeps your brand accessible and reduces legal risk.
4. Version Control and Rollback
Store every generated asset in a versioned folder structure. If a new campaign's assets are approved, archive the previous version:
/Brand Assets/Summer 2024 Collection/
/v1/
/Logos/
/Icons/
/v2/
/Logos/
/Icons/
/current -> v2/
If a client later complains that v2 assets don't match the brief, you can instantly roll back to v1.
5. Cost Optimisation
SVG Studio's colour validation is powerful but expensive at scale. If you're validating hundreds of assets per month, batch requests. Send 10 SVGs in a single validation batch API call instead of 10 separate calls:
POST https://api.svgstudio.io/v1/validate/colours/batch
Content-Type: application/json
Authorization: Bearer YOUR_SVGSTUDIO_API_KEY
{
"svgUrls": [
"https://cdn.brandmark.io/proj_abc123/asset_001.svg",
"https://cdn.brandmark.io/proj_abc123/asset_002.svg",
"..."
],
"expectedColours": ["#2D7A4F", "#FF8C42", "#FFF8DC"],
"allowedVariance": 5
}
This can reduce your SVG Studio costs by 70 per cent.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| ai-boost | Pro | £29 | 100 requests per minute; ideal for multiple campaigns per month |
| Brandmark | Professional | £49 | 50 projects per month; upgrade to Business (£199) if exceeding this |
| SVG Studio | Standard | £39 | 1,000 validations per month; batch requests to stay under limit |
| n8n | Cloud Pro | £40 | 200,000 executions per month; self-hosted option costs only server hosting |
| Google Drive Storage | 100 GB | £1.99 | Or use AWS S3 at roughly £0.023 per GB for storage |
| Total (monthly) | £158.99 | Can drop to £108.99 with self-hosted n8n |
This covers a team generating up to 20 brand asset projects per month with full colour validation and accessibility checks. For larger teams or higher volumes, costs scale, but you're still significantly cheaper than hiring a dedicated designer to run these steps manually.