rcrewai 0.1.0 ā 0.2.1
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.
- checksums.yaml +4 -4
- data/README.md +32 -0
- data/docs/api/agent.md +429 -0
- data/docs/api/task.md +494 -0
- data/docs/examples/api-integration.md +829 -0
- data/docs/examples/async-execution.md +893 -0
- data/docs/examples/code-review-crew.md +660 -0
- data/docs/examples/content-marketing-pipeline.md +681 -0
- data/docs/examples/custom-tools.md +1224 -0
- data/docs/examples/customer-support.md +717 -0
- data/docs/examples/data-analysis-team.md +677 -0
- data/docs/examples/database-operations.md +1298 -0
- data/docs/examples/ecommerce-operations.md +990 -0
- data/docs/examples/financial-analysis.md +857 -0
- data/docs/examples/hierarchical-crew.md +479 -0
- data/docs/examples/product-development.md +688 -0
- data/docs/examples/production-ready-crew.md +384 -408
- data/docs/examples/research-development.md +1225 -0
- data/docs/examples/social-media.md +1073 -0
- data/docs/examples/task-automation.md +527 -0
- data/docs/examples/tool-composition.md +1075 -0
- data/docs/examples/web-scraping.md +1201 -0
- data/docs/tutorials/advanced-agents.md +1014 -0
- data/docs/tutorials/custom-tools.md +1242 -0
- data/docs/tutorials/deployment.md +1836 -0
- data/docs/tutorials/index.md +184 -0
- data/docs/tutorials/multiple-crews.md +1692 -0
- data/lib/rcrewai/llm_clients/anthropic.rb +1 -1
- data/lib/rcrewai/version.rb +1 -1
- data/rcrewai.gemspec +21 -2
- metadata +47 -5
@@ -0,0 +1,681 @@
|
|
1
|
+
---
|
2
|
+
layout: example
|
3
|
+
title: Content Marketing Pipeline
|
4
|
+
description: Complete content marketing workflow from research to publication using specialized AI agents
|
5
|
+
---
|
6
|
+
|
7
|
+
# Content Marketing Pipeline
|
8
|
+
|
9
|
+
This example demonstrates a complete content marketing pipeline that takes a topic from initial research through to ready-to-publish content. Multiple specialized agents collaborate to create high-quality, SEO-optimized content with supporting materials.
|
10
|
+
|
11
|
+
## Overview
|
12
|
+
|
13
|
+
Our content marketing pipeline includes:
|
14
|
+
- **Market research** and trend analysis
|
15
|
+
- **SEO keyword research** and strategy
|
16
|
+
- **Content creation** with multiple formats
|
17
|
+
- **Visual content planning** and recommendations
|
18
|
+
- **Social media adaptation** for multiple platforms
|
19
|
+
- **Performance optimization** and analytics setup
|
20
|
+
|
21
|
+
## Complete Implementation
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
require 'rcrewai'
|
25
|
+
require 'json'
|
26
|
+
require 'yaml'
|
27
|
+
|
28
|
+
# Configure RCrewAI for content creation
|
29
|
+
RCrewAI.configure do |config|
|
30
|
+
config.llm_provider = :openai
|
31
|
+
config.temperature = 0.7 # Higher creativity for content creation
|
32
|
+
end
|
33
|
+
|
34
|
+
# ===== CONTENT MARKETING CREW SETUP =====
|
35
|
+
|
36
|
+
# Market Research Specialist
|
37
|
+
market_researcher = RCrewAI::Agent.new(
|
38
|
+
name: "market_researcher",
|
39
|
+
role: "Content Marketing Research Specialist",
|
40
|
+
goal: "Identify trending topics, audience interests, and competitive content gaps",
|
41
|
+
backstory: "You are a data-driven content strategist with deep knowledge of market trends, audience behavior, and competitive analysis. You excel at identifying content opportunities that drive engagement and conversions.",
|
42
|
+
tools: [
|
43
|
+
RCrewAI::Tools::WebSearch.new(max_results: 15),
|
44
|
+
RCrewAI::Tools::FileWriter.new
|
45
|
+
],
|
46
|
+
verbose: true
|
47
|
+
)
|
48
|
+
|
49
|
+
# SEO Specialist
|
50
|
+
seo_specialist = RCrewAI::Agent.new(
|
51
|
+
name: "seo_specialist",
|
52
|
+
role: "SEO Content Strategist",
|
53
|
+
goal: "Optimize content for search engines while maintaining readability and value",
|
54
|
+
backstory: "You are an SEO expert who understands how to balance search engine optimization with user experience. You excel at keyword research, content structure, and technical SEO best practices.",
|
55
|
+
tools: [
|
56
|
+
RCrewAI::Tools::WebSearch.new(max_results: 20),
|
57
|
+
RCrewAI::Tools::FileWriter.new
|
58
|
+
],
|
59
|
+
verbose: true
|
60
|
+
)
|
61
|
+
|
62
|
+
# Content Writer
|
63
|
+
content_writer = RCrewAI::Agent.new(
|
64
|
+
name: "content_writer",
|
65
|
+
role: "Senior Content Writer",
|
66
|
+
goal: "Create engaging, valuable content that connects with target audiences",
|
67
|
+
backstory: "You are a versatile content writer with expertise across multiple formats and industries. You excel at translating complex topics into accessible, engaging content that drives action.",
|
68
|
+
tools: [
|
69
|
+
RCrewAI::Tools::FileReader.new,
|
70
|
+
RCrewAI::Tools::FileWriter.new,
|
71
|
+
RCrewAI::Tools::WebSearch.new(max_results: 10)
|
72
|
+
],
|
73
|
+
verbose: true
|
74
|
+
)
|
75
|
+
|
76
|
+
# Social Media Strategist
|
77
|
+
social_media_expert = RCrewAI::Agent.new(
|
78
|
+
name: "social_media_strategist",
|
79
|
+
role: "Social Media Content Specialist",
|
80
|
+
goal: "Adapt content for optimal performance across social media platforms",
|
81
|
+
backstory: "You are a social media expert who understands platform-specific best practices, audience behavior, and content formats that drive engagement across LinkedIn, Twitter, Facebook, and Instagram.",
|
82
|
+
tools: [
|
83
|
+
RCrewAI::Tools::FileReader.new,
|
84
|
+
RCrewAI::Tools::FileWriter.new
|
85
|
+
],
|
86
|
+
verbose: true
|
87
|
+
)
|
88
|
+
|
89
|
+
# Visual Content Planner
|
90
|
+
visual_planner = RCrewAI::Agent.new(
|
91
|
+
name: "visual_content_planner",
|
92
|
+
role: "Visual Content Strategy Specialist",
|
93
|
+
goal: "Plan visual elements that enhance content engagement and comprehension",
|
94
|
+
backstory: "You are a visual content strategist who understands how images, infographics, and multimedia enhance content performance. You excel at planning visual elements that support and amplify written content.",
|
95
|
+
tools: [
|
96
|
+
RCrewAI::Tools::FileReader.new,
|
97
|
+
RCrewAI::Tools::FileWriter.new
|
98
|
+
],
|
99
|
+
verbose: true
|
100
|
+
)
|
101
|
+
|
102
|
+
# Create content marketing crew
|
103
|
+
content_crew = RCrewAI::Crew.new("content_marketing_pipeline")
|
104
|
+
|
105
|
+
# Add agents to crew
|
106
|
+
content_crew.add_agent(market_researcher)
|
107
|
+
content_crew.add_agent(seo_specialist)
|
108
|
+
content_crew.add_agent(content_writer)
|
109
|
+
content_crew.add_agent(social_media_expert)
|
110
|
+
content_crew.add_agent(visual_planner)
|
111
|
+
|
112
|
+
# ===== PIPELINE TASKS DEFINITION =====
|
113
|
+
|
114
|
+
# Phase 1: Market Research
|
115
|
+
market_research_task = RCrewAI::Task.new(
|
116
|
+
name: "market_research",
|
117
|
+
description: "Conduct comprehensive market research on AI automation in business. Identify current trends, audience pain points, competitor content gaps, and emerging opportunities. Analyze what topics are resonating with target audiences and identify unique angles.",
|
118
|
+
expected_output: "Market research report with trend analysis, audience insights, competitor gaps, and recommended content angles with supporting data",
|
119
|
+
agent: market_researcher,
|
120
|
+
async: true
|
121
|
+
)
|
122
|
+
|
123
|
+
# Phase 2: SEO Strategy
|
124
|
+
seo_strategy_task = RCrewAI::Task.new(
|
125
|
+
name: "seo_keyword_strategy",
|
126
|
+
description: "Develop comprehensive SEO strategy based on market research findings. Identify primary and secondary keywords, analyze search intent, assess keyword difficulty, and create content structure recommendations for maximum search visibility.",
|
127
|
+
expected_output: "SEO strategy document with keyword clusters, search volumes, competition analysis, and content structure recommendations",
|
128
|
+
agent: seo_specialist,
|
129
|
+
context: [market_research_task],
|
130
|
+
async: true
|
131
|
+
)
|
132
|
+
|
133
|
+
# Phase 3: Content Creation
|
134
|
+
content_creation_task = RCrewAI::Task.new(
|
135
|
+
name: "content_creation",
|
136
|
+
description: "Create comprehensive blog post about AI automation in business based on market research and SEO strategy. Include introduction, main content sections, practical examples, actionable insights, and compelling conclusion. Optimize for both search engines and reader engagement.",
|
137
|
+
expected_output: "Complete blog post (2000+ words) with SEO optimization, engaging headlines, practical examples, and clear value proposition",
|
138
|
+
agent: content_writer,
|
139
|
+
context: [market_research_task, seo_strategy_task]
|
140
|
+
)
|
141
|
+
|
142
|
+
# Phase 4: Social Media Adaptation
|
143
|
+
social_adaptation_task = RCrewAI::Task.new(
|
144
|
+
name: "social_media_adaptation",
|
145
|
+
description: "Adapt the main content for optimal performance across social media platforms. Create platform-specific versions for LinkedIn, Twitter, Facebook, and Instagram. Include appropriate hashtags, calls-to-action, and engagement strategies.",
|
146
|
+
expected_output: "Platform-specific social media content packages with posts, captions, hashtags, and engagement strategies for each platform",
|
147
|
+
agent: social_media_expert,
|
148
|
+
context: [content_creation_task],
|
149
|
+
async: true
|
150
|
+
)
|
151
|
+
|
152
|
+
# Phase 5: Visual Content Planning
|
153
|
+
visual_planning_task = RCrewAI::Task.new(
|
154
|
+
name: "visual_content_planning",
|
155
|
+
description: "Plan comprehensive visual content strategy to support the written content. Design specifications for featured images, infographics, social media graphics, and supplementary visual elements. Include style guidelines and platform-specific requirements.",
|
156
|
+
expected_output: "Visual content plan with detailed specifications, design briefs, and platform-optimized visual recommendations",
|
157
|
+
agent: visual_planner,
|
158
|
+
context: [content_creation_task, social_adaptation_task]
|
159
|
+
)
|
160
|
+
|
161
|
+
# Add tasks to crew
|
162
|
+
content_crew.add_task(market_research_task)
|
163
|
+
content_crew.add_task(seo_strategy_task)
|
164
|
+
content_crew.add_task(content_creation_task)
|
165
|
+
content_crew.add_task(social_adaptation_task)
|
166
|
+
content_crew.add_task(visual_planning_task)
|
167
|
+
|
168
|
+
# ===== CONTENT BRIEF INPUT =====
|
169
|
+
|
170
|
+
content_brief = {
|
171
|
+
"topic" => "AI Automation in Business",
|
172
|
+
"target_audience" => "Business owners, entrepreneurs, and decision-makers looking to implement AI solutions",
|
173
|
+
"primary_goal" => "Generate leads for AI consulting services",
|
174
|
+
"secondary_goals" => [
|
175
|
+
"Establish thought leadership in AI automation",
|
176
|
+
"Drive website traffic and engagement",
|
177
|
+
"Build email list through content downloads"
|
178
|
+
],
|
179
|
+
"brand_voice" => "Professional yet approachable, data-driven, solution-focused",
|
180
|
+
"content_pillars" => [
|
181
|
+
"AI implementation strategies",
|
182
|
+
"Business process optimization",
|
183
|
+
"ROI and cost-benefit analysis",
|
184
|
+
"Real-world case studies"
|
185
|
+
],
|
186
|
+
"distribution_channels" => [
|
187
|
+
"Company blog",
|
188
|
+
"LinkedIn",
|
189
|
+
"Twitter",
|
190
|
+
"Email newsletter",
|
191
|
+
"Industry publications"
|
192
|
+
],
|
193
|
+
"success_metrics" => [
|
194
|
+
"Organic traffic increase",
|
195
|
+
"Social media engagement",
|
196
|
+
"Lead generation",
|
197
|
+
"Email sign-ups"
|
198
|
+
]
|
199
|
+
}
|
200
|
+
|
201
|
+
# Save content brief for agents to reference
|
202
|
+
File.write("content_brief.json", JSON.pretty_generate(content_brief))
|
203
|
+
|
204
|
+
puts "š Content Marketing Pipeline Starting"
|
205
|
+
puts "="*50
|
206
|
+
puts "Topic: #{content_brief['topic']}"
|
207
|
+
puts "Target Audience: #{content_brief['target_audience']}"
|
208
|
+
puts "Primary Goal: #{content_brief['primary_goal']}"
|
209
|
+
puts "Distribution Channels: #{content_brief['distribution_channels'].join(', ')}"
|
210
|
+
puts "="*50
|
211
|
+
|
212
|
+
# ===== EXECUTE CONTENT PIPELINE =====
|
213
|
+
|
214
|
+
puts "\nš Executing Content Marketing Pipeline"
|
215
|
+
|
216
|
+
# Execute the complete pipeline
|
217
|
+
results = content_crew.execute
|
218
|
+
|
219
|
+
# ===== PIPELINE RESULTS ANALYSIS =====
|
220
|
+
|
221
|
+
puts "\nš CONTENT PIPELINE RESULTS"
|
222
|
+
puts "="*50
|
223
|
+
|
224
|
+
puts "Overall Success Rate: #{results[:success_rate]}%"
|
225
|
+
puts "Total Tasks: #{results[:total_tasks]}"
|
226
|
+
puts "Completed Tasks: #{results[:completed_tasks]}"
|
227
|
+
puts "Pipeline Status: #{results[:success_rate] >= 80 ? 'SUCCESS' : 'NEEDS REVIEW'}"
|
228
|
+
|
229
|
+
puts "\nš PIPELINE STAGE BREAKDOWN:"
|
230
|
+
puts "-"*40
|
231
|
+
|
232
|
+
pipeline_stages = {
|
233
|
+
"market_research" => "š Market Research",
|
234
|
+
"seo_keyword_strategy" => "š SEO Strategy",
|
235
|
+
"content_creation" => "āļø Content Creation",
|
236
|
+
"social_media_adaptation" => "š± Social Adaptation",
|
237
|
+
"visual_content_planning" => "šØ Visual Planning"
|
238
|
+
}
|
239
|
+
|
240
|
+
results[:results].each do |task_result|
|
241
|
+
task_name = task_result[:task].name
|
242
|
+
stage_name = pipeline_stages[task_name] || task_name
|
243
|
+
status_emoji = task_result[:status] == :completed ? "ā
" : "ā"
|
244
|
+
|
245
|
+
puts "#{status_emoji} #{stage_name}"
|
246
|
+
puts " Agent: #{task_result[:assigned_agent] || task_result[:task].agent.name}"
|
247
|
+
puts " Status: #{task_result[:status]}"
|
248
|
+
|
249
|
+
if task_result[:status] == :completed
|
250
|
+
word_count = task_result[:result].split.length
|
251
|
+
puts " Output: #{word_count} words generated"
|
252
|
+
else
|
253
|
+
puts " Error: #{task_result[:error]&.message}"
|
254
|
+
end
|
255
|
+
puts
|
256
|
+
end
|
257
|
+
|
258
|
+
# ===== SAVE CONTENT DELIVERABLES =====
|
259
|
+
|
260
|
+
puts "\nš¾ SAVING CONTENT MARKETING DELIVERABLES"
|
261
|
+
puts "-"*40
|
262
|
+
|
263
|
+
completed_tasks = results[:results].select { |r| r[:status] == :completed }
|
264
|
+
|
265
|
+
# Create content package directory structure
|
266
|
+
content_package_dir = "content_marketing_package_#{Date.today.strftime('%Y%m%d')}"
|
267
|
+
Dir.mkdir(content_package_dir) unless Dir.exist?(content_package_dir)
|
268
|
+
|
269
|
+
deliverables = {}
|
270
|
+
|
271
|
+
completed_tasks.each do |task_result|
|
272
|
+
task_name = task_result[:task].name
|
273
|
+
content = task_result[:result]
|
274
|
+
|
275
|
+
case task_name
|
276
|
+
when "market_research"
|
277
|
+
filename = "#{content_package_dir}/01_market_research_report.md"
|
278
|
+
deliverables[:market_research] = filename
|
279
|
+
|
280
|
+
when "seo_keyword_strategy"
|
281
|
+
filename = "#{content_package_dir}/02_seo_strategy.md"
|
282
|
+
deliverables[:seo_strategy] = filename
|
283
|
+
|
284
|
+
when "content_creation"
|
285
|
+
filename = "#{content_package_dir}/03_main_blog_post.md"
|
286
|
+
deliverables[:main_content] = filename
|
287
|
+
|
288
|
+
when "social_media_adaptation"
|
289
|
+
filename = "#{content_package_dir}/04_social_media_content.md"
|
290
|
+
deliverables[:social_content] = filename
|
291
|
+
|
292
|
+
when "visual_content_planning"
|
293
|
+
filename = "#{content_package_dir}/05_visual_content_plan.md"
|
294
|
+
deliverables[:visual_plan] = filename
|
295
|
+
end
|
296
|
+
|
297
|
+
# Create formatted deliverable
|
298
|
+
formatted_content = <<~CONTENT
|
299
|
+
# #{pipeline_stages[task_name] || task_name.split('_').map(&:capitalize).join(' ')}
|
300
|
+
|
301
|
+
**Generated by:** #{task_result[:assigned_agent] || task_result[:task].agent.name}
|
302
|
+
**Date:** #{Time.now.strftime('%B %d, %Y')}
|
303
|
+
**Pipeline:** Content Marketing Pipeline
|
304
|
+
|
305
|
+
---
|
306
|
+
|
307
|
+
#{content}
|
308
|
+
|
309
|
+
---
|
310
|
+
|
311
|
+
**Content Brief Reference:**
|
312
|
+
- Topic: #{content_brief['topic']}
|
313
|
+
- Target Audience: #{content_brief['target_audience']}
|
314
|
+
- Brand Voice: #{content_brief['brand_voice']}
|
315
|
+
|
316
|
+
*Generated by RCrewAI Content Marketing Pipeline*
|
317
|
+
CONTENT
|
318
|
+
|
319
|
+
File.write(filename, formatted_content)
|
320
|
+
puts " ā
#{File.basename(filename)}"
|
321
|
+
end
|
322
|
+
|
323
|
+
# ===== CONTENT PACKAGE MANIFEST =====
|
324
|
+
|
325
|
+
manifest = {
|
326
|
+
"content_package" => {
|
327
|
+
"topic" => content_brief['topic'],
|
328
|
+
"generated_date" => Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
329
|
+
"pipeline_success_rate" => results[:success_rate],
|
330
|
+
"deliverables" => deliverables,
|
331
|
+
"metrics" => {
|
332
|
+
"total_content_pieces" => completed_tasks.length,
|
333
|
+
"total_words" => completed_tasks.sum { |t| t[:result].split.length },
|
334
|
+
"estimated_reading_time" => "#{(completed_tasks.sum { |t| t[:result].split.length } / 250.0).ceil} minutes",
|
335
|
+
"platforms_covered" => ["Blog", "LinkedIn", "Twitter", "Facebook", "Instagram"]
|
336
|
+
}
|
337
|
+
}
|
338
|
+
}
|
339
|
+
|
340
|
+
File.write("#{content_package_dir}/content_manifest.json", JSON.pretty_generate(manifest))
|
341
|
+
puts " ā
content_manifest.json"
|
342
|
+
|
343
|
+
# ===== CONTENT PERFORMANCE TRACKING SETUP =====
|
344
|
+
|
345
|
+
tracking_setup = <<~TRACKING
|
346
|
+
# Content Performance Tracking Setup
|
347
|
+
|
348
|
+
## Analytics Implementation
|
349
|
+
|
350
|
+
### Google Analytics 4 Events
|
351
|
+
```javascript
|
352
|
+
// Blog post engagement tracking
|
353
|
+
gtag('event', 'blog_engagement', {
|
354
|
+
'article_title': 'AI Automation in Business',
|
355
|
+
'content_group1': 'AI Automation',
|
356
|
+
'engagement_time_msec': engagement_time
|
357
|
+
});
|
358
|
+
|
359
|
+
// Social media click tracking
|
360
|
+
gtag('event', 'social_click', {
|
361
|
+
'platform': platform_name,
|
362
|
+
'content_type': 'blog_promotion',
|
363
|
+
'article_title': 'AI Automation in Business'
|
364
|
+
});
|
365
|
+
```
|
366
|
+
|
367
|
+
### UTM Parameters for Social Sharing
|
368
|
+
- **LinkedIn**: `?utm_source=linkedin&utm_medium=social&utm_campaign=ai_automation_content`
|
369
|
+
- **Twitter**: `?utm_source=twitter&utm_medium=social&utm_campaign=ai_automation_content`
|
370
|
+
- **Facebook**: `?utm_source=facebook&utm_medium=social&utm_campaign=ai_automation_content`
|
371
|
+
- **Email**: `?utm_source=email&utm_medium=newsletter&utm_campaign=ai_automation_content`
|
372
|
+
|
373
|
+
## Success Metrics Dashboard
|
374
|
+
|
375
|
+
### Week 1 Targets
|
376
|
+
- Blog page views: 500+
|
377
|
+
- Social media engagement: 50+ interactions
|
378
|
+
- Email sign-ups: 25+
|
379
|
+
- Average time on page: 3+ minutes
|
380
|
+
|
381
|
+
### Month 1 Targets
|
382
|
+
- Organic search traffic: 200+ sessions
|
383
|
+
- Backlinks generated: 5+
|
384
|
+
- Lead conversions: 10+
|
385
|
+
- Content shares: 100+
|
386
|
+
|
387
|
+
## A/B Testing Plan
|
388
|
+
|
389
|
+
### Email Subject Lines
|
390
|
+
- A: "How AI Automation Is Transforming Business Operations"
|
391
|
+
- B: "The Ultimate Guide to Business AI Implementation"
|
392
|
+
|
393
|
+
### Social Media Headlines
|
394
|
+
- A: Focus on ROI and cost savings
|
395
|
+
- B: Focus on efficiency and time savings
|
396
|
+
|
397
|
+
### Call-to-Action Variations
|
398
|
+
- A: "Download Free AI Assessment Tool"
|
399
|
+
- B: "Get Your Custom AI Strategy Session"
|
400
|
+
|
401
|
+
## Content Amplification Strategy
|
402
|
+
|
403
|
+
### Phase 1: Organic Distribution (Week 1)
|
404
|
+
- Publish on company blog
|
405
|
+
- Share across all social platforms
|
406
|
+
- Include in email newsletter
|
407
|
+
- Submit to relevant communities
|
408
|
+
|
409
|
+
### Phase 2: Paid Promotion (Week 2-3)
|
410
|
+
- LinkedIn Sponsored Content
|
411
|
+
- Google Ads for high-intent keywords
|
412
|
+
- Facebook/Instagram promotion to lookalike audiences
|
413
|
+
|
414
|
+
### Phase 3: Outreach & PR (Week 3-4)
|
415
|
+
- Industry publication submissions
|
416
|
+
- Influencer outreach
|
417
|
+
- Podcast appearance pitches
|
418
|
+
- Guest posting opportunities
|
419
|
+
TRACKING
|
420
|
+
|
421
|
+
File.write("#{content_package_dir}/06_performance_tracking.md", tracking_setup)
|
422
|
+
puts " ā
06_performance_tracking.md"
|
423
|
+
|
424
|
+
# ===== CONTENT CALENDAR INTEGRATION =====
|
425
|
+
|
426
|
+
content_calendar = {
|
427
|
+
"content_schedule" => {
|
428
|
+
"main_blog_post" => {
|
429
|
+
"publish_date" => (Date.today + 2).strftime('%Y-%m-%d'),
|
430
|
+
"platform" => "Company Blog",
|
431
|
+
"time" => "09:00 AM EST"
|
432
|
+
},
|
433
|
+
"social_media_rollout" => {
|
434
|
+
"linkedin_announcement" => {
|
435
|
+
"date" => (Date.today + 2).strftime('%Y-%m-%d'),
|
436
|
+
"time" => "10:00 AM EST"
|
437
|
+
},
|
438
|
+
"twitter_thread" => {
|
439
|
+
"date" => (Date.today + 2).strftime('%Y-%m-%d'),
|
440
|
+
"time" => "02:00 PM EST"
|
441
|
+
},
|
442
|
+
"facebook_post" => {
|
443
|
+
"date" => (Date.today + 3).strftime('%Y-%m-%d'),
|
444
|
+
"time" => "11:00 AM EST"
|
445
|
+
},
|
446
|
+
"instagram_carousel" => {
|
447
|
+
"date" => (Date.today + 3).strftime('%Y-%m-%d'),
|
448
|
+
"time" => "05:00 PM EST"
|
449
|
+
}
|
450
|
+
},
|
451
|
+
"email_newsletter" => {
|
452
|
+
"date" => (Date.today + 7).strftime('%Y-%m-%d'),
|
453
|
+
"time" => "10:00 AM EST",
|
454
|
+
"segment" => "AI Interested Subscribers"
|
455
|
+
},
|
456
|
+
"follow_up_content" => {
|
457
|
+
"case_study" => (Date.today + 14).strftime('%Y-%m-%d'),
|
458
|
+
"webinar" => (Date.today + 21).strftime('%Y-%m-%d'),
|
459
|
+
"email_series" => (Date.today + 30).strftime('%Y-%m-%d')
|
460
|
+
}
|
461
|
+
}
|
462
|
+
}
|
463
|
+
|
464
|
+
File.write("#{content_package_dir}/content_calendar.json", JSON.pretty_generate(content_calendar))
|
465
|
+
puts " ā
content_calendar.json"
|
466
|
+
|
467
|
+
# ===== FINAL PIPELINE SUMMARY =====
|
468
|
+
|
469
|
+
summary_report = <<~SUMMARY
|
470
|
+
# Content Marketing Pipeline - Execution Summary
|
471
|
+
|
472
|
+
**Topic:** #{content_brief['topic']}
|
473
|
+
**Execution Date:** #{Time.now.strftime('%B %d, %Y')}
|
474
|
+
**Pipeline Success Rate:** #{results[:success_rate]}%
|
475
|
+
|
476
|
+
## Content Package Delivered
|
477
|
+
|
478
|
+
ā
**Market Research Report** - #{deliverables[:market_research] ? 'Generated' : 'Missing'}
|
479
|
+
ā
**SEO Strategy & Keywords** - #{deliverables[:seo_strategy] ? 'Generated' : 'Missing'}
|
480
|
+
ā
**Main Blog Post** - #{deliverables[:main_content] ? 'Generated' : 'Missing'}
|
481
|
+
ā
**Social Media Content** - #{deliverables[:social_content] ? 'Generated' : 'Missing'}
|
482
|
+
ā
**Visual Content Plan** - #{deliverables[:visual_plan] ? 'Generated' : 'Missing'}
|
483
|
+
ā
**Performance Tracking Setup** - Generated
|
484
|
+
ā
**Content Calendar** - Generated
|
485
|
+
|
486
|
+
## Content Metrics
|
487
|
+
|
488
|
+
- **Total Words Generated:** #{completed_tasks.sum { |t| t[:result].split.length }.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse}
|
489
|
+
- **Estimated Reading Time:** #{(completed_tasks.sum { |t| t[:result].split.length } / 250.0).ceil} minutes
|
490
|
+
- **Content Pieces Created:** #{completed_tasks.length}
|
491
|
+
- **Platforms Covered:** 5 (Blog, LinkedIn, Twitter, Facebook, Instagram)
|
492
|
+
|
493
|
+
## Agent Performance
|
494
|
+
|
495
|
+
#{content_crew.agents.map do |agent|
|
496
|
+
assigned_tasks = completed_tasks.select do |task|
|
497
|
+
(task[:assigned_agent] || task[:task].agent.name) == agent.name
|
498
|
+
end
|
499
|
+
|
500
|
+
if assigned_tasks.any?
|
501
|
+
total_words = assigned_tasks.sum { |t| t[:result].split.length }
|
502
|
+
"- **#{agent.name}** (#{agent.role}): #{assigned_tasks.length} task(s), #{total_words} words"
|
503
|
+
end
|
504
|
+
end.compact.join("\n")}
|
505
|
+
|
506
|
+
## Next Steps
|
507
|
+
|
508
|
+
### Immediate Actions (Next 24 Hours)
|
509
|
+
1. Review all generated content for brand consistency
|
510
|
+
2. Create visual assets based on visual content plan
|
511
|
+
3. Set up tracking pixels and UTM parameters
|
512
|
+
4. Schedule social media posts in management tool
|
513
|
+
|
514
|
+
### Week 1 Actions
|
515
|
+
1. Publish main blog post with SEO optimizations
|
516
|
+
2. Execute social media rollout according to calendar
|
517
|
+
3. Begin email marketing sequence
|
518
|
+
4. Monitor initial performance metrics
|
519
|
+
|
520
|
+
### Week 2-4 Actions
|
521
|
+
1. Analyze performance data and optimize
|
522
|
+
2. Create follow-up content based on engagement
|
523
|
+
3. Reach out to industry publications
|
524
|
+
4. Plan next content in the series
|
525
|
+
|
526
|
+
## ROI Projections
|
527
|
+
|
528
|
+
Based on similar content campaigns:
|
529
|
+
- **Estimated Reach:** 5,000+ people
|
530
|
+
- **Projected Engagement:** 300+ interactions
|
531
|
+
- **Expected Leads:** 25-50 qualified prospects
|
532
|
+
- **Estimated Value:** $15,000-$30,000 in pipeline
|
533
|
+
|
534
|
+
## Content Amplification Opportunities
|
535
|
+
|
536
|
+
- Industry publications and guest posting
|
537
|
+
- Podcast appearances and interviews
|
538
|
+
- Speaking opportunities at conferences
|
539
|
+
- Partnership with complementary brands
|
540
|
+
- Influencer collaboration possibilities
|
541
|
+
|
542
|
+
---
|
543
|
+
|
544
|
+
**Content Package Location:** `#{content_package_dir}/`
|
545
|
+
**Ready for Review:** Yes
|
546
|
+
**Ready for Publication:** After final review and visual asset creation
|
547
|
+
|
548
|
+
*This comprehensive content marketing package was generated by RCrewAI's automated content pipeline, saving an estimated 20-25 hours of manual work while ensuring consistent quality and SEO optimization.*
|
549
|
+
SUMMARY
|
550
|
+
|
551
|
+
File.write("#{content_package_dir}/PIPELINE_SUMMARY.md", summary_report)
|
552
|
+
|
553
|
+
puts "\nš CONTENT MARKETING PIPELINE COMPLETED!"
|
554
|
+
puts "="*60
|
555
|
+
puts "š Complete content package saved to: #{content_package_dir}/"
|
556
|
+
puts ""
|
557
|
+
puts "š **Pipeline Results:**"
|
558
|
+
puts " ⢠Success Rate: #{results[:success_rate]}%"
|
559
|
+
puts " ⢠Content Pieces: #{completed_tasks.length}"
|
560
|
+
puts " ⢠Total Words: #{completed_tasks.sum { |t| t[:result].split.length }.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse}"
|
561
|
+
puts " ⢠Platforms Ready: 5 (Blog + Social Media)"
|
562
|
+
puts ""
|
563
|
+
puts "š **Ready for Publication:**"
|
564
|
+
puts " ⢠Main blog post optimized and ready"
|
565
|
+
puts " ⢠Social media content adapted for each platform"
|
566
|
+
puts " ⢠Visual content specifications provided"
|
567
|
+
puts " ⢠Performance tracking configured"
|
568
|
+
puts " ⢠Content calendar scheduled"
|
569
|
+
puts ""
|
570
|
+
puts "š” **Estimated Time Saved:** 20-25 hours of manual content creation"
|
571
|
+
puts "š° **Projected ROI:** $15,000-$30,000 in pipeline value"
|
572
|
+
```
|
573
|
+
|
574
|
+
## Key Pipeline Features
|
575
|
+
|
576
|
+
### 1. **Multi-Agent Collaboration**
|
577
|
+
Each agent specializes in a specific aspect of content marketing:
|
578
|
+
|
579
|
+
```ruby
|
580
|
+
market_researcher # Trend analysis and audience research
|
581
|
+
seo_specialist # Keyword strategy and optimization
|
582
|
+
content_writer # Main content creation
|
583
|
+
social_media_expert # Platform-specific adaptation
|
584
|
+
visual_planner # Visual content strategy
|
585
|
+
```
|
586
|
+
|
587
|
+
### 2. **Dependency-Based Workflow**
|
588
|
+
Tasks execute in logical order with proper dependencies:
|
589
|
+
|
590
|
+
```ruby
|
591
|
+
# Research feeds into SEO strategy
|
592
|
+
seo_strategy_task.context = [market_research_task]
|
593
|
+
|
594
|
+
# Both research and SEO inform content creation
|
595
|
+
content_creation_task.context = [market_research_task, seo_strategy_task]
|
596
|
+
|
597
|
+
# Content feeds into social and visual planning
|
598
|
+
social_adaptation_task.context = [content_creation_task]
|
599
|
+
visual_planning_task.context = [content_creation_task, social_adaptation_task]
|
600
|
+
```
|
601
|
+
|
602
|
+
### 3. **Complete Content Package**
|
603
|
+
The pipeline generates everything needed for content marketing success:
|
604
|
+
|
605
|
+
- Market research and trend analysis
|
606
|
+
- SEO-optimized main content
|
607
|
+
- Platform-specific social media versions
|
608
|
+
- Visual content specifications
|
609
|
+
- Performance tracking setup
|
610
|
+
- Content calendar with scheduling
|
611
|
+
|
612
|
+
### 4. **Performance Tracking**
|
613
|
+
Built-in analytics and optimization setup:
|
614
|
+
|
615
|
+
```ruby
|
616
|
+
# UTM parameters for tracking
|
617
|
+
# A/B testing plans
|
618
|
+
# Success metrics dashboard
|
619
|
+
# Content amplification strategy
|
620
|
+
```
|
621
|
+
|
622
|
+
## Content Marketing Patterns
|
623
|
+
|
624
|
+
### Research-Driven Creation
|
625
|
+
```ruby
|
626
|
+
Market Research ā SEO Strategy ā Content Creation
|
627
|
+
|
628
|
+
# Ensures content is data-driven and strategically aligned
|
629
|
+
```
|
630
|
+
|
631
|
+
### Multi-Platform Optimization
|
632
|
+
```ruby
|
633
|
+
Main Content ā Social Adaptation ā Visual Planning
|
634
|
+
|
635
|
+
# Maximizes reach across all distribution channels
|
636
|
+
```
|
637
|
+
|
638
|
+
### Performance-First Approach
|
639
|
+
```ruby
|
640
|
+
Content Creation ā Tracking Setup ā Amplification Strategy
|
641
|
+
|
642
|
+
# Ensures measurable ROI and continuous optimization
|
643
|
+
```
|
644
|
+
|
645
|
+
## Scaling the Pipeline
|
646
|
+
|
647
|
+
### Adding Content Types
|
648
|
+
```ruby
|
649
|
+
# Add specialized agents for different content formats
|
650
|
+
video_producer = RCrewAI::Agent.new(
|
651
|
+
name: "video_content_producer",
|
652
|
+
role: "Video Content Strategist",
|
653
|
+
goal: "Create engaging video content strategies"
|
654
|
+
)
|
655
|
+
|
656
|
+
podcast_producer = RCrewAI::Agent.new(
|
657
|
+
name: "podcast_producer",
|
658
|
+
role: "Podcast Content Specialist",
|
659
|
+
goal: "Develop podcast content and show formats"
|
660
|
+
)
|
661
|
+
```
|
662
|
+
|
663
|
+
### Industry Customization
|
664
|
+
```ruby
|
665
|
+
# Customize for specific industries
|
666
|
+
healthcare_content_crew = content_crew.clone
|
667
|
+
healthcare_content_crew.add_agent(compliance_specialist)
|
668
|
+
healthcare_content_crew.add_agent(medical_writer)
|
669
|
+
```
|
670
|
+
|
671
|
+
### Multi-Language Support
|
672
|
+
```ruby
|
673
|
+
# Add translation and localization
|
674
|
+
translator = RCrewAI::Agent.new(
|
675
|
+
name: "content_translator",
|
676
|
+
role: "Content Localization Specialist",
|
677
|
+
goal: "Adapt content for international markets"
|
678
|
+
)
|
679
|
+
```
|
680
|
+
|
681
|
+
This content marketing pipeline provides a comprehensive, automated solution for creating high-quality, multi-platform content that drives engagement and conversions while saving significant time and ensuring consistent quality.
|