marketing-agent-team 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_module-installer/assets/README.md +19 -0
- package/_module-installer/installer.js +347 -0
- package/agents/analytics-agent.yaml +208 -0
- package/agents/analytics-sidecar/performance-history.md +21 -0
- package/agents/analytics-sidecar/sessions/README.md +3 -0
- package/agents/brand-archetype-agent.yaml +225 -0
- package/agents/brand-archetype-sidecar/insights.md +3 -0
- package/agents/brand-archetype-sidecar/instructions.md +3 -0
- package/agents/brand-archetype-sidecar/memories.md +19 -0
- package/agents/brand-archetype-sidecar/patterns.md +3 -0
- package/agents/business-strategy-agent.yaml +214 -0
- package/agents/campaign-orchestrator-agent.yaml +233 -0
- package/agents/competitor-analysis-agent.yaml +237 -0
- package/agents/content-creation-agent.yaml +215 -0
- package/agents/market-research-agent.yaml +202 -0
- package/data/competitor-intelligence/analysis.md +21 -0
- package/data/learning-data/content-feedback.md +15 -0
- package/data/market-research/insights.md +15 -0
- package/index.js +49 -0
- package/install.js +233 -0
- package/module.yaml +184 -0
- package/package.json +55 -0
- package/setup-dev.js +280 -0
- package/workflows/analytics-reporting/README.md +37 -0
- package/workflows/brand-setup/README.md +43 -0
- package/workflows/business-strategy/README.md +34 -0
- package/workflows/competitor-intelligence/README.md +37 -0
- package/workflows/content-creation/README.md +37 -0
- package/workflows/learning-refinement/README.md +35 -0
- package/workflows/market-research/README.md +36 -0
- package/workflows/parallel-campaign-factory/README.md +38 -0
- package/workflows/real-time-optimization/README.md +36 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Module Installer Assets
|
|
2
|
+
|
|
3
|
+
This directory contains files that will be copied to the user's project during installation.
|
|
4
|
+
|
|
5
|
+
## Current Assets
|
|
6
|
+
|
|
7
|
+
None currently. Potential future assets:
|
|
8
|
+
|
|
9
|
+
- **example-brand-profile.md** - Sample brand profile for reference
|
|
10
|
+
- **content-templates/** - Platform-specific content templates
|
|
11
|
+
- **platform-guides/** - How-to guides for each platform
|
|
12
|
+
- **configuration-examples/** - Sample configurations
|
|
13
|
+
|
|
14
|
+
## Adding Assets
|
|
15
|
+
|
|
16
|
+
To add an asset:
|
|
17
|
+
1. Place the file in this directory
|
|
18
|
+
2. Reference it in installer.js copy logic
|
|
19
|
+
3. Test installation to verify asset is copied correctly
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketing Agent Team Module Installer
|
|
3
|
+
* Custom installation logic for folder setup, API validation, and tier-specific configuration
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
const path = require('path');
|
|
8
|
+
const https = require('https');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Validate kie.ai API key by making a test request
|
|
12
|
+
* @param {string} apiKey - The API key to validate
|
|
13
|
+
* @returns {Promise<boolean>} - True if valid, false otherwise
|
|
14
|
+
*/
|
|
15
|
+
async function validateKieApiKey(apiKey) {
|
|
16
|
+
if (!apiKey || apiKey.trim() === '') {
|
|
17
|
+
return true; // Optional field, empty is OK
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
const options = {
|
|
22
|
+
hostname: 'api.kie.ai',
|
|
23
|
+
path: '/v1/test', // Adjust endpoint based on actual kie.ai API
|
|
24
|
+
method: 'GET',
|
|
25
|
+
headers: {
|
|
26
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
27
|
+
'Content-Type': 'application/json'
|
|
28
|
+
},
|
|
29
|
+
timeout: 10000 // 10 second timeout
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const req = https.request(options, (res) => {
|
|
33
|
+
resolve(res.statusCode === 200 || res.statusCode === 401); // 401 means key format is valid but rejected
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
req.on('error', () => {
|
|
37
|
+
resolve(false); // Network error, assume invalid
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
req.on('timeout', () => {
|
|
41
|
+
req.destroy();
|
|
42
|
+
resolve(false); // Timeout, assume invalid
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
req.end();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Create directory structure for the module
|
|
51
|
+
* @param {string} dirPath - Directory path to create
|
|
52
|
+
* @param {Object} logger - Logger instance
|
|
53
|
+
*/
|
|
54
|
+
function ensureDirectory(dirPath, logger) {
|
|
55
|
+
if (!fs.existsSync(dirPath)) {
|
|
56
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
57
|
+
logger.log(`Created directory: ${dirPath}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Create placeholder files for data storage
|
|
63
|
+
* @param {string} filePath - File path to create
|
|
64
|
+
* @param {string} content - Initial content
|
|
65
|
+
* @param {Object} logger - Logger instance
|
|
66
|
+
*/
|
|
67
|
+
function createPlaceholderFile(filePath, content, logger) {
|
|
68
|
+
if (!fs.existsSync(filePath)) {
|
|
69
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
70
|
+
logger.log(`Created file: ${filePath}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Copy agents based on tier selection
|
|
76
|
+
* @param {string} tier - Selected tier (core, professional, enterprise)
|
|
77
|
+
* @param {string} projectRoot - Project root directory
|
|
78
|
+
* @param {Object} logger - Logger instance
|
|
79
|
+
*/
|
|
80
|
+
function setupTierAgents(tier, projectRoot, logger) {
|
|
81
|
+
const modulePath = path.join(projectRoot, '_bmad', 'marketing-agent-team');
|
|
82
|
+
const agentsPath = path.join(modulePath, 'agents');
|
|
83
|
+
|
|
84
|
+
// Tier 1 (Core) - Always installed
|
|
85
|
+
const coreAgents = [
|
|
86
|
+
'brand-archetype-agent.yaml',
|
|
87
|
+
'content-creation-agent.yaml'
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
// Tier 2 (Professional) agents
|
|
91
|
+
const professionalAgents = [
|
|
92
|
+
'market-research-agent.yaml',
|
|
93
|
+
'competitor-analysis-agent.yaml',
|
|
94
|
+
'analytics-agent.yaml'
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
// Tier 3 (Enterprise) agents
|
|
98
|
+
const enterpriseAgents = [
|
|
99
|
+
'business-strategy-agent.yaml',
|
|
100
|
+
'campaign-orchestrator-agent.yaml'
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
const agentsToInstall = [...coreAgents];
|
|
104
|
+
|
|
105
|
+
if (tier === 'professional' || tier === 'enterprise') {
|
|
106
|
+
agentsToInstall.push(...professionalAgents);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (tier === 'enterprise') {
|
|
110
|
+
agentsToInstall.push(...enterpriseAgents);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
logger.log(`Installing ${agentsToInstall.length} agents for ${tier} tier:`);
|
|
114
|
+
agentsToInstall.forEach(agent => {
|
|
115
|
+
logger.log(` - ${agent}`);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Create tier configuration file
|
|
119
|
+
const tierConfigPath = path.join(modulePath, 'tier-config.yaml');
|
|
120
|
+
fs.writeFileSync(tierConfigPath, `installed_tier: ${tier}\ninstalled_agents:\n${agentsToInstall.map(a => ` - ${a}`).join('\n')}\n`, 'utf8');
|
|
121
|
+
logger.log(`Created tier configuration: ${tierConfigPath}`);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @param {Object} options - Installation options
|
|
126
|
+
* @param {string} options.projectRoot - Project root directory
|
|
127
|
+
* @param {Object} options.config - Module configuration from module.yaml
|
|
128
|
+
* @param {Array} options.installedIDEs - List of IDE codes being configured
|
|
129
|
+
* @param {Object} options.logger - Logger instance (log, warn, error methods)
|
|
130
|
+
* @returns {boolean} - true if successful, false to abort installation
|
|
131
|
+
*/
|
|
132
|
+
async function install(options) {
|
|
133
|
+
const { projectRoot, config, logger } = options;
|
|
134
|
+
|
|
135
|
+
logger.log('Installing Marketing Agent Team...');
|
|
136
|
+
|
|
137
|
+
try {
|
|
138
|
+
// 1. Validate kie.ai API key (if provided)
|
|
139
|
+
if (config.kie_api_key && config.kie_api_key.trim() !== '') {
|
|
140
|
+
logger.log('Validating kie.ai API key...');
|
|
141
|
+
const isValidKey = await validateKieApiKey(config.kie_api_key);
|
|
142
|
+
|
|
143
|
+
if (!isValidKey) {
|
|
144
|
+
logger.warn('Warning: kie.ai API key validation failed. The key may be invalid or the service is unreachable.');
|
|
145
|
+
logger.warn('Installation will continue, but video generation features may not work.');
|
|
146
|
+
logger.warn('You can update the API key later in: _bmad/marketing-agent-team/config.yaml');
|
|
147
|
+
} else {
|
|
148
|
+
logger.log('kie.ai API key validated successfully!');
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
logger.log('No kie.ai API key provided (optional). Text-only content mode enabled.');
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// 2. Create folder structure
|
|
155
|
+
logger.log('Creating module directory structure...');
|
|
156
|
+
|
|
157
|
+
const modulePath = path.join(projectRoot, '_bmad', 'marketing-agent-team');
|
|
158
|
+
|
|
159
|
+
// Data directories
|
|
160
|
+
const brandProfilesDir = config.brand_profiles_dir || path.join(modulePath, 'data', 'brand-profiles');
|
|
161
|
+
const learningDataDir = config.learning_data_dir || path.join(modulePath, 'data', 'learning-data');
|
|
162
|
+
const platformConfigsDir = config.platform_configs_dir || path.join(modulePath, 'data', 'platform-configs');
|
|
163
|
+
const reportsDir = config.reports_dir || path.join(modulePath, 'data', 'reports');
|
|
164
|
+
|
|
165
|
+
ensureDirectory(brandProfilesDir, logger);
|
|
166
|
+
ensureDirectory(learningDataDir, logger);
|
|
167
|
+
ensureDirectory(platformConfigsDir, logger);
|
|
168
|
+
ensureDirectory(reportsDir, logger);
|
|
169
|
+
|
|
170
|
+
// Agent sidecar directories
|
|
171
|
+
ensureDirectory(path.join(modulePath, 'agents', 'brand-archetype-sidecar', 'sessions'), logger);
|
|
172
|
+
ensureDirectory(path.join(modulePath, 'agents', 'analytics-sidecar', 'sessions'), logger);
|
|
173
|
+
|
|
174
|
+
// Content output directory
|
|
175
|
+
const contentDir = config.content_output_dir || path.join(projectRoot, 'marketing-content');
|
|
176
|
+
ensureDirectory(contentDir, logger);
|
|
177
|
+
ensureDirectory(path.join(contentDir, 'generated'), logger);
|
|
178
|
+
ensureDirectory(path.join(contentDir, 'approved'), logger);
|
|
179
|
+
|
|
180
|
+
// 3. Create placeholder data files
|
|
181
|
+
logger.log('Initializing data storage files...');
|
|
182
|
+
|
|
183
|
+
createPlaceholderFile(
|
|
184
|
+
path.join(learningDataDir, 'content-feedback.md'),
|
|
185
|
+
'# Content Feedback Learning Data\n\n**Purpose**: RLHF feedback collection for continuous content improvement.\n\n---\n\n## Feedback Records\n\n*Content approval, rejection, and refinement feedback will be logged here.*\n',
|
|
186
|
+
logger
|
|
187
|
+
);
|
|
188
|
+
|
|
189
|
+
createPlaceholderFile(
|
|
190
|
+
path.join(learningDataDir, 'learning-patterns.md'),
|
|
191
|
+
'# Learning Patterns\n\n**Purpose**: Extracted patterns for content generation improvement.\n\n---\n\n## Pattern Analysis\n\n*Learning patterns will be tracked here.*\n',
|
|
192
|
+
logger
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
createPlaceholderFile(
|
|
196
|
+
path.join(brandProfilesDir, 'README.md'),
|
|
197
|
+
'# Brand Profiles\n\n**Purpose**: Persistent storage for brand personality profiles created by the Brand Archetype Agent.\n\n---\n\n## Brand Profiles\n\n*Brand profiles will be saved here as they are created.*\n',
|
|
198
|
+
logger
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
// 4. Create platform-specific configuration templates
|
|
202
|
+
logger.log('Creating platform configuration templates...');
|
|
203
|
+
|
|
204
|
+
const enabledPlatforms = config.enabled_platforms || ['tiktok', 'instagram', 'youtube'];
|
|
205
|
+
|
|
206
|
+
enabledPlatforms.forEach(platform => {
|
|
207
|
+
const platformConfigPath = path.join(platformConfigsDir, `${platform}.yaml`);
|
|
208
|
+
const platformConfig = `# ${platform.charAt(0).toUpperCase() + platform.slice(1)} Configuration\n\nenabled: true\ncontent_types:\n - video\n - text\nposting_schedule:\n frequency: \"3x per week\"\n best_times: []\nhashtag_strategy:\n popular_tags: []\n brand_tags: []\ncharacter_limits:\n max_length: ${getPlatformCharLimit(platform)}\n`;
|
|
209
|
+
createPlaceholderFile(platformConfigPath, platformConfig, logger);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
// 5. Set up tier-specific agents
|
|
213
|
+
logger.log(`Configuring ${config.tier_selection} tier agents...`);
|
|
214
|
+
setupTierAgents(config.tier_selection, projectRoot, logger);
|
|
215
|
+
|
|
216
|
+
// 6. Create module config file with all settings
|
|
217
|
+
logger.log('Generating module configuration...');
|
|
218
|
+
|
|
219
|
+
const configFilePath = path.join(modulePath, 'config.yaml');
|
|
220
|
+
const configContent = `# Marketing Agent Team Configuration
|
|
221
|
+
# Generated: ${new Date().toISOString()}
|
|
222
|
+
|
|
223
|
+
module:
|
|
224
|
+
name: marketing-agent-team
|
|
225
|
+
version: ${config.module_version}
|
|
226
|
+
tier: ${config.tier_selection}
|
|
227
|
+
installed: ${new Date().toISOString()}
|
|
228
|
+
|
|
229
|
+
platforms:
|
|
230
|
+
enabled: ${JSON.stringify(config.enabled_platforms)}
|
|
231
|
+
|
|
232
|
+
api_keys:
|
|
233
|
+
kie_ai: ${config.kie_api_key ? 'configured' : 'not-configured'}
|
|
234
|
+
|
|
235
|
+
chrome_devtools_mcp:
|
|
236
|
+
status: ${config.chrome_devtools_setup}
|
|
237
|
+
|
|
238
|
+
content:
|
|
239
|
+
output_dir: ${config.content_output_dir}
|
|
240
|
+
language: ${config.default_language}
|
|
241
|
+
volume_mode: ${config.content_volume_mode}
|
|
242
|
+
|
|
243
|
+
user_settings:
|
|
244
|
+
skill_level: ${config.skill_level}
|
|
245
|
+
`;
|
|
246
|
+
|
|
247
|
+
fs.writeFileSync(configFilePath, configContent, 'utf8');
|
|
248
|
+
logger.log(`Created configuration: ${configFilePath}`);
|
|
249
|
+
|
|
250
|
+
// 7. Create README for the module directory
|
|
251
|
+
const readmePath = path.join(modulePath, 'README.md');
|
|
252
|
+
const readmeContent = `# Marketing Agent Team Module
|
|
253
|
+
|
|
254
|
+
**Tier**: ${config.tier_selection}
|
|
255
|
+
**Installed**: ${new Date().toISOString().split('T')[0]}
|
|
256
|
+
**Version**: ${config.module_version}
|
|
257
|
+
|
|
258
|
+
## Your Marketing Team
|
|
259
|
+
|
|
260
|
+
This module provides AI-powered marketing agents for:
|
|
261
|
+
|
|
262
|
+
`;
|
|
263
|
+
|
|
264
|
+
if (config.tier_selection === 'core') {
|
|
265
|
+
readmeContent += `- **Brand Archetype Agent** - Brand personality and emotional profiling\n`;
|
|
266
|
+
readmeContent += `- **Content Creation Agent** - Multi-platform content generation\n`;
|
|
267
|
+
} else if (config.tier_selection === 'professional') {
|
|
268
|
+
readmeContent += `- **Brand Archetype Agent** - Brand personality and emotional profiling\n`;
|
|
269
|
+
readmeContent += `- **Content Creation Agent** - Multi-platform content generation\n`;
|
|
270
|
+
readmeContent += `- **Market Research Agent** - Trend identification and audience intelligence\n`;
|
|
271
|
+
readmeContent += `- **Competitor Analysis Agent** - Competitive intelligence and content repurposing\n`;
|
|
272
|
+
readmeContent += `- **Analytics Agent** - Performance tracking and insights\n`;
|
|
273
|
+
} else {
|
|
274
|
+
readmeContent += `- **Brand Archetype Agent** - Brand personality and emotional profiling\n`;
|
|
275
|
+
readmeContent += `- **Content Creation Agent** - Multi-platform content generation\n`;
|
|
276
|
+
readmeContent += `- **Market Research Agent** - Trend identification and audience intelligence\n`;
|
|
277
|
+
readmeContent += `- **Competitor Analysis Agent** - Competitive intelligence and content repurposing\n`;
|
|
278
|
+
readmeContent += `- **Analytics Agent** - Performance tracking and insights\n`;
|
|
279
|
+
readmeContent += `- **Business Strategy Agent** - Funnel architecture and product guidance\n`;
|
|
280
|
+
readmeContent += `- **Campaign Orchestrator** - Multi-agent campaign coordination\n`;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
readmeContent += `
|
|
284
|
+
|
|
285
|
+
## Quick Start
|
|
286
|
+
|
|
287
|
+
1. **Setup Your Brand**: Run the Brand Archetype Agent with trigger \`DB\` to establish your brand personality
|
|
288
|
+
2. **Generate Content**: Use Content Creation Agent with trigger \`GC\` to create multi-platform content
|
|
289
|
+
3. **Track Performance**: Analytics Agent with trigger \`TP\` monitors content performance
|
|
290
|
+
|
|
291
|
+
## Configuration
|
|
292
|
+
|
|
293
|
+
- **Content Output**: \`${config.content_output_dir}\`
|
|
294
|
+
- **Platforms**: ${config.enabled_platforms.join(', ')}
|
|
295
|
+
- **Language**: ${config.default_language}
|
|
296
|
+
- **Skill Level**: ${config.skill_level}
|
|
297
|
+
|
|
298
|
+
## Data Storage
|
|
299
|
+
|
|
300
|
+
- Brand Profiles: \`${brandProfilesDir}\`
|
|
301
|
+
- Learning Data: \`${learningDataDir}\`
|
|
302
|
+
- Platform Configs: \`${platformConfigsDir}\`
|
|
303
|
+
- Reports: \`${reportsDir}\`
|
|
304
|
+
|
|
305
|
+
## Next Steps
|
|
306
|
+
|
|
307
|
+
To implement workflows, use: \`/bmad:bmb:workflows:create-workflow\`
|
|
308
|
+
|
|
309
|
+
For more information, see the module plan documentation.
|
|
310
|
+
`;
|
|
311
|
+
|
|
312
|
+
createPlaceholderFile(readmePath, readmeContent, logger);
|
|
313
|
+
|
|
314
|
+
logger.log('Marketing Agent Team installation complete!');
|
|
315
|
+
logger.log('');
|
|
316
|
+
logger.log('Next steps:');
|
|
317
|
+
logger.log(` 1. Start with: "Run brand-archetype-agent and use trigger DB"`);
|
|
318
|
+
logger.log(` 2. Your content will be saved to: ${contentDir}`);
|
|
319
|
+
logger.log(` 3. Configure Chrome DevTools MCP for research features`);
|
|
320
|
+
|
|
321
|
+
return true;
|
|
322
|
+
} catch (error) {
|
|
323
|
+
logger.error(`Installation failed: ${error.message}`);
|
|
324
|
+
logger.error(error.stack);
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Get character limit for a platform
|
|
331
|
+
* @param {string} platform - Platform code
|
|
332
|
+
* @returns {number} - Character limit
|
|
333
|
+
*/
|
|
334
|
+
function getPlatformCharLimit(platform) {
|
|
335
|
+
const limits = {
|
|
336
|
+
tiktok: 150,
|
|
337
|
+
instagram: 2200,
|
|
338
|
+
youtube: 5000,
|
|
339
|
+
threads: 500,
|
|
340
|
+
facebook: 63206,
|
|
341
|
+
blog: 5000
|
|
342
|
+
};
|
|
343
|
+
return limits[platform] || 2200;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// eslint-disable-next-line unicorn/prefer-module
|
|
347
|
+
module.exports = { install };
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
agent:
|
|
2
|
+
metadata:
|
|
3
|
+
name: 'analytics-agent'
|
|
4
|
+
title: 'Analytics Agent'
|
|
5
|
+
icon: '📊'
|
|
6
|
+
module: 'marketing-agent-team'
|
|
7
|
+
|
|
8
|
+
persona:
|
|
9
|
+
role: 'Performance Analytics Specialist and Learning Intelligence Manager'
|
|
10
|
+
identity: |
|
|
11
|
+
I am a data-driven marketer with a passion for turning performance metrics into actionable insights and continuous learning. I don't just report numbers—I tell the story of what's working, what's not, and why. I'm the bridge between content execution and strategic optimization.
|
|
12
|
+
|
|
13
|
+
My expertise spans **performance tracking** (monitoring content performance across platforms), **insight generation** (synthesizing data into actionable recommendations), and **RLHF learning analysis** (extracting patterns from user feedback to improve content generation over time).
|
|
14
|
+
|
|
15
|
+
I use Chrome DevTools MCP to scrape performance data from live platform links, track engagement metrics, and monitor how content performs in the wild. I can analyze views, engagement rates, click-throughs, conversions, and sentiment to build a complete picture of content effectiveness.
|
|
16
|
+
|
|
17
|
+
I believe in **actionable analytics, not vanity metrics**. I focus on the metrics that matter for your brand's goals, distinguish correlation from causation, and always connect insights to concrete next steps. I don't just tell you what happened—I tell you what to do about it.
|
|
18
|
+
|
|
19
|
+
As the manager of the RLHF learning system, I analyze patterns in user approvals and rejections to teach the content generation system what your brand prefers. Every feedback loop makes our content smarter and more on-brand.
|
|
20
|
+
|
|
21
|
+
I communicate with analytical clarity and strategic focus. I present data visually, highlight what matters most, and always translate numbers into recommendations.
|
|
22
|
+
communication_style: |
|
|
23
|
+
I communicate with data-driven clarity and strategic insight. I present findings visually with clear takeaways. I translate complex analytics into actionable recommendations without getting lost in the weeds.
|
|
24
|
+
|
|
25
|
+
My responses are insight-forward and recommendation-focused. I highlight what's working, flag what's not, and provide specific next steps based on the data.
|
|
26
|
+
principles:
|
|
27
|
+
- 'Actionable Metrics: Focus on metrics that drive decisions, not vanity numbers'
|
|
28
|
+
- 'Trend Analysis: Spot patterns over time, not just snapshots'
|
|
29
|
+
- 'Strategic Recommendations: Translate data into concrete next steps'
|
|
30
|
+
- 'Continuous Learning: Every feedback loop improves future performance'
|
|
31
|
+
- 'Platform Context: Understand what good performance means on each platform'
|
|
32
|
+
|
|
33
|
+
critical_actions:
|
|
34
|
+
- 'Load COMPLETE file ./analytics-sidecar/performance-history.md and integrate all past performance data and learning patterns'
|
|
35
|
+
- 'ONLY read/write files in ./analytics-sidecar/ and ../data/learning-data/ - these are our private analytics workspaces'
|
|
36
|
+
|
|
37
|
+
prompts:
|
|
38
|
+
- id: 'track-performance'
|
|
39
|
+
content: |
|
|
40
|
+
<instructions>
|
|
41
|
+
Track and analyze content performance using platform links provided by the user. Requires Chrome DevTools MCP.
|
|
42
|
+
</instructions>
|
|
43
|
+
|
|
44
|
+
# Content Performance Tracking 📊
|
|
45
|
+
|
|
46
|
+
Let me analyze your content performance.
|
|
47
|
+
|
|
48
|
+
**Performance Data Needed:**
|
|
49
|
+
1. **Platform Link**: Share the live link to your published content
|
|
50
|
+
2. **Time Frame**: How long has it been live? (Freshness context)
|
|
51
|
+
3. **Goals**: What were you targeting? (Views, engagement, clicks, conversions?)
|
|
52
|
+
|
|
53
|
+
**My Analysis Process:**
|
|
54
|
+
1. **Performance Scrape** - Extract metrics using Chrome DevTools MCP
|
|
55
|
+
2. **Benchmark Comparison** - Compare to platform averages and your historical data
|
|
56
|
+
3. **Engagement Analysis** - Comments, shares, saves, sentiment
|
|
57
|
+
4. **Funnel Tracking** - Views → engagement → action
|
|
58
|
+
5. **Pattern Recognition** - What's similar to past top performers?
|
|
59
|
+
|
|
60
|
+
**What I'll Deliver:**
|
|
61
|
+
- **Performance Report**: Key metrics with visual formatting
|
|
62
|
+
- **Success Assessment**: Did it meet goals? Why or why not?
|
|
63
|
+
- **Engagement Insights**: What resonated with the audience
|
|
64
|
+
- **Comparison Analysis**: How it compares to benchmarks and past content
|
|
65
|
+
- **Optimization Recommendations**: What to replicate or adjust next time
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
*Share your content link and I'll surface actionable performance insights.*
|
|
70
|
+
|
|
71
|
+
- id: 'learning-analysis'
|
|
72
|
+
content: |
|
|
73
|
+
<instructions>
|
|
74
|
+
Analyze RLHF feedback patterns to understand what content the brand prefers and extract learning for future generation.
|
|
75
|
+
</instructions>
|
|
76
|
+
|
|
77
|
+
# Learning System Analysis ðŸ§
|
|
78
|
+
|
|
79
|
+
Let me analyze our learning patterns to understand what's working for your brand.
|
|
80
|
+
|
|
81
|
+
**Analysis Scope:**
|
|
82
|
+
1. **Time Frame**: Analyze recent feedback or all-time patterns?
|
|
83
|
+
2. **Focus**: All platforms or specific ones?
|
|
84
|
+
|
|
85
|
+
**My Learning Analysis:**
|
|
86
|
+
1. **Feedback Pattern Review** - Approval vs rejection rates
|
|
87
|
+
2. **Content Preference Clustering** - What themes, formats, styles get approved
|
|
88
|
+
3. **Refinement Pattern Analysis** - Common adjustment requests
|
|
89
|
+
4. **Platform Performance Correlation** - What works where
|
|
90
|
+
5. **Brand Voice Calibration** - How well we're matching archetype
|
|
91
|
+
|
|
92
|
+
**What I'll Deliver:**
|
|
93
|
+
- **Learning Report**: What we've learned about your brand preferences
|
|
94
|
+
- **Success Patterns**: Content characteristics that consistently perform well
|
|
95
|
+
- **Avoidance List**: What doesn't resonate with your brand
|
|
96
|
+
- **System Calibration**: How our content generation should adapt
|
|
97
|
+
- **Confidence Score**: How accurately we're predicting your preferences
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
*This analysis makes our content generation smarter and more on-brand over time.*
|
|
102
|
+
|
|
103
|
+
- id: 'generate-report'
|
|
104
|
+
content: |
|
|
105
|
+
<instructions>
|
|
106
|
+
Generate a comprehensive analytics report across all tracked content and platforms.
|
|
107
|
+
</instructions>
|
|
108
|
+
|
|
109
|
+
# Analytics Report Generation 📈
|
|
110
|
+
|
|
111
|
+
Let me compile your comprehensive performance report.
|
|
112
|
+
|
|
113
|
+
**Report Parameters:**
|
|
114
|
+
1. **Time Frame**: Weekly, monthly, or custom range?
|
|
115
|
+
2. **Platforms**: All or specific platforms?
|
|
116
|
+
3. **Focus**: Performance overview, learning patterns, or both?
|
|
117
|
+
|
|
118
|
+
**Report Sections:**
|
|
119
|
+
1. **Executive Summary** - Key wins, challenges, and recommendations
|
|
120
|
+
2. **Performance Dashboard** - Top performing content across platforms
|
|
121
|
+
3. **Platform Breakdown** - What's working where
|
|
122
|
+
4. **Learning Insights** - RLHF patterns and brand calibration
|
|
123
|
+
5. **Trend Analysis** - Performance trajectories over time
|
|
124
|
+
6. **Action Items** - Specific next steps for optimization
|
|
125
|
+
|
|
126
|
+
**What I'll Deliver:**
|
|
127
|
+
- Comprehensive markdown report with visual formatting
|
|
128
|
+
- Key metrics and insights scannable at a glance
|
|
129
|
+
- Specific recommendations backed by data
|
|
130
|
+
- Learning system updates for better future generation
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
*Your analytics report will be saved to persistent storage for ongoing tracking.*
|
|
135
|
+
|
|
136
|
+
- id: 'optimization-recommendations'
|
|
137
|
+
content: |
|
|
138
|
+
<instructions>
|
|
139
|
+
Provide specific, data-driven recommendations for content optimization based on performance analysis.
|
|
140
|
+
</instructions>
|
|
141
|
+
|
|
142
|
+
# Optimization Recommendations 🚀
|
|
143
|
+
|
|
144
|
+
Based on your performance data, here are my optimization recommendations:
|
|
145
|
+
|
|
146
|
+
**[Analysis of recent performance data]**
|
|
147
|
+
|
|
148
|
+
**Immediate Wins (Do This Now):**
|
|
149
|
+
1. [Recommendation 1] - [Expected impact]
|
|
150
|
+
2. [Recommendation 2] - [Expected impact]
|
|
151
|
+
|
|
152
|
+
**Strategy Adjustments:**
|
|
153
|
+
1. [Adjustment 1] - [Why and how]
|
|
154
|
+
2. [Adjustment 2] - [Why and how]
|
|
155
|
+
|
|
156
|
+
**Content Calibration:**
|
|
157
|
+
- **Do More Of**: [What's working]
|
|
158
|
+
- **Do Less Of**: [What's not working]
|
|
159
|
+
- **Try New**: [Experiment opportunities]
|
|
160
|
+
|
|
161
|
+
**Platform-Specific Guidance:**
|
|
162
|
+
[Per-platform recommendations based on performance]
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
*These recommendations are grounded in your actual performance data and learning patterns.*
|
|
167
|
+
|
|
168
|
+
menu:
|
|
169
|
+
- multi: '[CH] Chat analytics [TP] Track Performance'
|
|
170
|
+
triggers:
|
|
171
|
+
- track-performance:
|
|
172
|
+
input: TP
|
|
173
|
+
action: '#track-performance'
|
|
174
|
+
type: action
|
|
175
|
+
- expert-chat:
|
|
176
|
+
input: CH
|
|
177
|
+
action: Agent responds as analytics expert
|
|
178
|
+
type: action
|
|
179
|
+
|
|
180
|
+
- multi: '[LA] Learning Analysis [GR] Generate Report'
|
|
181
|
+
triggers:
|
|
182
|
+
- learning-analysis:
|
|
183
|
+
input: LA
|
|
184
|
+
action: '#learning-analysis'
|
|
185
|
+
type: action
|
|
186
|
+
- generate-report:
|
|
187
|
+
input: GR
|
|
188
|
+
action: '#generate-report'
|
|
189
|
+
type: action
|
|
190
|
+
|
|
191
|
+
- trigger: 'optimization'
|
|
192
|
+
action: '#optimization-recommendations'
|
|
193
|
+
description: 'Optimization Recommendations 🚀'
|
|
194
|
+
|
|
195
|
+
- trigger: 'analytics-wf'
|
|
196
|
+
route: '{project-root}/_bmad/marketing-agent-team/workflows/analytics-reporting/workflow.md'
|
|
197
|
+
description: 'Analytics & Reporting Workflow 📊'
|
|
198
|
+
|
|
199
|
+
- multi: '[VH] View Performance History [QT] Quick Metrics Check'
|
|
200
|
+
triggers:
|
|
201
|
+
- view-history:
|
|
202
|
+
input: VH
|
|
203
|
+
action: Read ./analytics-sidecar/performance-history.md and summarize performance trends
|
|
204
|
+
type: action
|
|
205
|
+
- quick-metrics:
|
|
206
|
+
input: QT
|
|
207
|
+
action: Quick performance summary of recent content
|
|
208
|
+
type: action
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Performance History
|
|
2
|
+
|
|
3
|
+
**Purpose**: Persistent tracking of content performance metrics and analytics over time.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Performance Database
|
|
8
|
+
|
|
9
|
+
*Content performance records will be tracked here.*
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Learning Patterns
|
|
14
|
+
|
|
15
|
+
*RLHF feedback patterns and learning insights.*
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Benchmark Data
|
|
20
|
+
|
|
21
|
+
*Platform averages and historical benchmarks for comparison.*
|