算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
adspirer-setup【设计与创意】Set up your brand workspace — connect to Adspirer, scan brand docs, pull campaign data, and create {{CONTEXT_FILE}}. Use on first time in a new brand folder, or when the user wants to refresh brand context.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Run the full brand workspace setup. Follow these steps in order:
Call get_connections_status directly.
"The Adspirer MCP server isn't connected. Add it to your Cursor MCP config:
https://mcp.adspirer.com/mcp~/.cursor/mcp.json:
{"mcpServers": {"adspirer": {"url": "https://mcp.adspirer.com/mcp"}}}
/adspirer-setup again.""The Adspirer MCP server isn't connected. Run:
codex mcp add adspirer --url https://mcp.adspirer.com/mcp
Then restart Codex, authenticate via /mcp, and run $adspirer-setup again."
"The Adspirer MCP server isn't connected. Open /mcp, select adspirer, and
authenticate in the browser. If it isn't listed, install the plugin from the xAI
marketplace with /plugin, then run /adspirer-setup again."
Search for brand documentation files: **/*.md, **/*.txt, **/*.csv, **/*.yaml, **/*.json, **/*.pdf
Read all discovered files. Extract:
If the folder is empty, that's fine — we'll build context from Adspirer data alone.
Follow adspirer-mcp for the call contract. Only these are callable by name; everything else goes
through its platform router with {"action": "list_tools"} then {"action": "execute", ...}.
Call directly:
get_connections_status — which platforms are connected. Do this first; only pull the rest for
platforms that came back connected.get_campaign_performance (lookback_days: 30) — Google Ads performanceget_meta_campaign_performance (lookback_days: 30) — Meta performanceThrough the router (action: "execute"):
google_ads → list_campaigns, get_business_profile, get_benchmark_contextlinkedin_ads → get_linkedin_campaign_performance (lookback_days: 30)If any tool errors (platform not connected), skip it and note the gap.
Existing-file guard — check before writing:
{{CONTEXT_FILE}} in the project root: create it (the user explicitly asked for setup, which covers this).{{CONTEXT_FILE}} exists and is already an Adspirer brand workspace: update it in place, preserving any edits the user made.{{CONTEXT_FILE}} exists and is anything else (e.g. a software project's instructions): NEVER overwrite, restructure, or delete it. Ask the user whether to append a clearly-marked ## Adspirer Brand Context section at the end, or to skip the file and keep brand context in the conversation only. Do not touch the file until they answer.Generate the brand workspace by combining local files + Adspirer data:
# [Brand Name] — Paid Media Workspace
## Brand Overview
[From docs + Adspirer: what they sell, who they sell to, industry, company size]
## Brand Voice
[From docs: tone, language style, prohibited words, preferred phrases]
[If not found: "No brand voice docs found — add guidelines to this folder to improve ad copy quality"]
## Target Audiences
[From docs + Adspirer campaign targeting data]
[List each audience with platform-specific targeting parameters if available]
## Active Platforms
[From get_connections_status]
- Google Ads: [connected/not connected] — [X active campaigns]
- Meta Ads: [connected/not connected] — [X active campaigns]
- LinkedIn Ads: [connected/not connected] — [X active campaigns]
- TikTok Ads: [connected/not connected] — [X active campaigns]
## Budget & Guardrails
[From docs if available, otherwise from Adspirer campaign data]
- Monthly total: [amount or "Not specified — ask user"]
- Platform allocation: [percentages or "Based on current spend: ..."]
- Max CPC: [if specified]
- Target CPA: [if specified]
- Min ROAS: [if specified]
## KPI Targets
[From docs if available]
- Primary goal: [leads/sales/awareness/traffic]
- Target metrics: [CTR, CPA, ROAS targets]
## Current Performance Snapshot
[From get_campaign_performance — most recent data]
| Platform | Campaigns | Monthly Spend | CTR | CPA | ROAS |
|----------|-----------|---------------|-----|-----|------|
| ... | ... | ... | ... | ... | ... |
## Key Findings from Existing Campaigns
[From analyze_search_terms + performance data]
- Top performing keywords: ...
- Top performing campaigns: ...
- Wasted spend areas: ...
- Recommendations: ...
## Competitors
[From docs if available]
## Seasonality
[From docs if available]
## Notes
[Anything else relevant found in docs]
[Gaps: "No brand voice guide found", "No budget specified", etc.]
[Known constraints:
- Conversion action primary/secondary setup is configured manually in Google Ads UI (not via Adspirer MCP)
- Campaign creation should be considered complete only after post-create verification of ads, keywords, and extensions]
## Strategy
Active strategy directives are maintained in `STRATEGY.md`. All skills and agents read
that file before campaign creation, keyword research, and ad copy generation.
Fill in every section with real data. Leave placeholders only for sections where no data was found — and note the gap.
Create STRATEGY.md at the project root alongside {{CONTEXT_FILE}}:
# [Brand Name] — Strategy Playbook
<!-- This file holds strategic decisions that guide campaign creation, keyword research,
audience targeting, and budget allocation across all platforms. Skills and agents
read this file before execution. Directives are guidance that informs research —
not rigid rules that bypass validation. Only save directives the user has confirmed. -->
## Active Directives
### Cross-Platform Strategy
[No active directives yet — run a strategy analysis to populate]
### Google Ads
[No active directives]
### Meta Ads
[No active directives]
### LinkedIn Ads
[No active directives]
### TikTok Ads
[No active directives]
### Budget Allocation
[No active directives]
---
## Decision Log
[No decisions yet — this log will be populated as strategy sessions occur]
---
## Archived Directives
[No archived directives]
Create .cursor/memory/performance-marketing-agent/MEMORY.md with initial template:
# Performance Marketing Agent — Memory
## Brand Learnings
[No learnings yet — will be populated as campaigns are managed]
## User Preferences
[Not yet determined — will learn from interactions]
## Decision Log
[No decisions yet]
Tell the user:
End with: "Your brand workspace is set up! I've saved everything to {{CONTEXT_FILE}}. Here's what I can help with:
What would you like to start with?"