Loading...
Loading...
Open-source AI marketing automation skills for growth experiments, sales pipeline, content ops, outbound, SEO, and finance automation
npx skill4agent add aradotso/marketing-skills ai-marketing-skills-automationSkill by ara.so — Marketing Skills collection.
# Clone the repository
git clone https://github.com/ericosiu/ai-marketing-skills.git
cd ai-marketing-skills
# Navigate to a specific skill category
cd growth-engine # or sales-pipeline, content-ops, etc.
# Install dependencies for that category
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env.env# Common environment variables across skills
ANTHROPIC_API_KEY=your_anthropic_key_here
OPENAI_API_KEY=your_openai_key_here
# Growth Engine specific
GOOGLE_ANALYTICS_KEY=your_ga_key
LINKEDIN_API_KEY=your_linkedin_key
# Sales Pipeline specific
RB2B_API_KEY=your_rb2b_key
INSTANTLY_API_KEY=your_instantly_key
APOLLO_API_KEY=your_apollo_key
# SEO Ops specific
GOOGLE_SEARCH_CONSOLE_CREDENTIALS=path/to/credentials.json
# Revenue Intelligence specific
GONG_API_KEY=your_gong_key
SALESFORCE_API_KEY=your_salesforce_keyfrom experiment_engine import ExperimentEngine
# Initialize the engine
engine = ExperimentEngine(
api_key=os.getenv("ANTHROPIC_API_KEY"),
data_source="google_analytics"
)
# Create an experiment
experiment = engine.create_experiment(
hypothesis="Thread posts get 2x engagement vs single posts",
variable="format",
variants=["thread", "single"],
metric="impressions",
duration_days=14,
traffic_split=0.5
)
# Run the experiment
results = engine.run_experiment(experiment.id)
# Get statistical significance
analysis = engine.analyze_results(
experiment.id,
confidence_level=0.95,
test_method="mann_whitney"
)
print(f"Winner: {analysis['winner']}")
print(f"P-value: {analysis['p_value']}")
print(f"Confidence: {analysis['confidence_interval']}")from pacing_alert import PacingMonitor
monitor = PacingMonitor(
budget_monthly=10000,
platform="linkedin"
)
# Check daily pacing
alert = monitor.check_pacing(
spend_to_date=3500,
days_elapsed=8,
days_in_month=30
)
if alert['status'] == 'overpacing':
print(f"Alert: Overpacing by {alert['variance_percent']}%")
print(f"Recommended daily spend: ${alert['recommended_daily']}")# Create experiment
python experiment-engine.py create \
--hypothesis "Carousel posts outperform static images" \
--variable post_type \
--variants '["carousel", "static"]' \
--metric engagement_rate \
--duration 14
# Check pacing
python pacing-alert.py check \
--budget 10000 \
--spend 3500 \
--days-elapsed 8
# Generate weekly scorecard
python autogrowth-weekly-scorecard.py generate \
--start-date 2026-05-01 \
--end-date 2026-05-07from rb2b_instantly_router import RB2BRouter
router = RB2BRouter(
rb2b_key=os.getenv("RB2B_API_KEY"),
instantly_key=os.getenv("INSTANTLY_API_KEY")
)
# Fetch website visitors from RB2B
visitors = router.fetch_visitors(
lookback_hours=24,
min_intent_score=7
)
# Route to Instantly campaigns
for visitor in visitors:
# Score and enrich
enriched = router.enrich_visitor(visitor)
# Route based on criteria
if enriched['seniority'] in ['C-Level', 'VP', 'Director']:
router.add_to_campaign(
email=enriched['email'],
campaign_id="high-intent-vp",
personalization={
'company': enriched['company'],
'trigger': enriched['page_visited']
}
)from deal_resurrector import DealResurrector
resurrector = DealResurrector(
crm_api_key=os.getenv("SALESFORCE_API_KEY")
)
# Find stale deals with departed champions
stale_deals = resurrector.find_stale_deals(
days_inactive=90,
min_deal_value=10000
)
# Track champions to new companies
for deal in stale_deals:
champion_moves = resurrector.track_champion(
champion_email=deal['primary_contact'],
linkedin_api_key=os.getenv("LINKEDIN_API_KEY")
)
if champion_moves['new_company']:
resurrector.create_new_opportunity(
company=champion_moves['new_company'],
contact=champion_moves['new_email'],
context=deal['previous_context']
)from icp_learning_analyzer import ICPLearner
learner = ICPLearner()
# Analyze win/loss patterns
deals = learner.fetch_closed_deals(months_back=12)
patterns = learner.analyze_patterns(deals)
# Update ICP definition
new_icp = learner.update_icp(
current_icp="""
Company size: 50-500 employees
Industry: SaaS, E-commerce
Tech stack: React, Python
""",
win_loss_data=patterns
)
print(new_icp)from expert_panel import ExpertPanel
panel = ExpertPanel(
api_key=os.getenv("ANTHROPIC_API_KEY")
)
# Load expert personas
panel.load_experts([
'experts/seo_expert.json',
'experts/conversion_expert.json',
'experts/content_strategist.json'
])
# Score content
content = """
Your blog post content here...
"""
scores = panel.score_content(
content=content,
rubric='scoring-rubrics/blog_post.json',
min_score=90
)
# Recursive improvement
while scores['average'] < 90:
feedback = panel.get_improvement_suggestions(scores)
content = panel.improve_content(content, feedback)
scores = panel.score_content(content, 'scoring-rubrics/blog_post.json')
print(f"Final score: {scores['average']}")
print(f"Expert breakdown: {scores['by_expert']}")# CLI quality gate
python quality-gate.py check \
--file blog-post.md \
--rubric scoring-rubrics/blog_post.json \
--min-score 90 \
--experts seo conversion content-strategyfrom cold_outbound_optimizer import OutboundEngine
engine = OutboundEngine(
apollo_key=os.getenv("APOLLO_API_KEY"),
instantly_key=os.getenv("INSTANTLY_API_KEY")
)
# Define ICP
icp = {
'titles': ['VP Marketing', 'CMO', 'Head of Growth'],
'company_size': [50, 500],
'industries': ['SaaS', 'E-commerce'],
'technologies': ['HubSpot', 'Salesforce']
}
# Build lead list
leads = engine.build_lead_list(
icp=icp,
limit=1000,
exclude_domains=['competitor1.com', 'competitor2.com']
)
# Generate personalized emails
for lead in leads:
email = engine.generate_email(
lead=lead,
template='references/cold_email_template.md',
personalization_depth='high'
)
engine.add_to_sequence(
email=lead['email'],
campaign='q2-outbound',
message=email
)from content_attack_brief import SEOBrief
brief = SEOBrief(
gsc_credentials=os.getenv("GOOGLE_SEARCH_CONSOLE_CREDENTIALS")
)
# Analyze content gaps
gaps = brief.find_content_gaps(
target_domain='yoursite.com',
competitor_domains=['competitor1.com', 'competitor2.com'],
topic='marketing automation'
)
# Generate brief
content_brief = brief.generate_brief(
keyword=gaps[0]['keyword'],
search_intent=gaps[0]['intent'],
top_ranking_urls=gaps[0]['serp_results']
)
print(content_brief)# CLI GSC optimization
python gsc_client.py analyze \
--domain yoursite.com \
--lookback-days 90 \
--min-impressions 1000 \
--position-range 11-20from cfo_briefing import FinanceAnalyzer
analyzer = FinanceAnalyzer()
# Upload financial data
analyzer.load_data(
expenses='data/expenses_q1.csv',
revenue='data/revenue_q1.csv'
)
# Generate CFO briefing
briefing = analyzer.generate_briefing(
focus_areas=['hidden_costs', 'vendor_optimization', 'budget_variance']
)
# Get cost-saving recommendations
recommendations = analyzer.find_savings_opportunities(
min_impact=5000 # Minimum $5k annual savings
)
print(briefing)
for rec in recommendations:
print(f"{rec['category']}: Save ${rec['annual_savings']:,.0f}")from gong_insight_pipeline import GongAnalyzer
analyzer = GongAnalyzer(
gong_api_key=os.getenv("GONG_API_KEY")
)
# Fetch recent calls
calls = analyzer.fetch_calls(
date_range='last_7_days',
min_duration_minutes=20
)
# Extract insights
for call in calls:
insights = analyzer.extract_insights(call['id'])
# Key patterns
print(f"Objections: {insights['objections']}")
print(f"Competitor mentions: {insights['competitors']}")
print(f"Next steps: {insights['next_steps']}")
# Update CRM
analyzer.sync_to_crm(
call_id=call['id'],
insights=insights,
crm='salesforce'
)# All scripts include retry logic with exponential backoff
from utils import retry_with_backoff
@retry_with_backoff(max_retries=5, base_delay=2)
def api_call():
return client.make_request()# Scan for sensitive data before commits
python3 security/sanitizer.py --scan --dir . --recursive
# Install pre-commit hook
cp security/pre-commit-hook.sh .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit# Each category has isolated dependencies
cd growth-engine
pip install --upgrade -r requirements.txt
# If conflicts, use virtual environment
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txtfrom security.sanitizer import sanitize_output
# Automatically removes emails, phone numbers, API keys
safe_data = sanitize_output(raw_data)# Example: SEO → Content → Quality Gate → Publish
from content_attack_brief import SEOBrief
from expert_panel import ExpertPanel
# 1. Get SEO brief
brief = SEOBrief().generate_brief(keyword='ai marketing automation')
# 2. Generate content
content = generate_from_brief(brief) # Your content generation
# 3. Score with expert panel
panel = ExpertPanel()
scores = panel.score_content(content, min_score=90)
# 4. Publish if passed
if scores['average'] >= 90:
publish_to_cms(content)# View local usage stats
python3 telemetry/telemetry_report.py
# Check for updates
python3 telemetry/version_check.py
# Opt out of remote telemetry (local logging still works)
export AI_MARKETING_SKILLS_TELEMETRY=falseai-marketing-skills/
├── growth-engine/ # Experiments, pacing, scorecards
├── sales-pipeline/ # RB2B, deal resurrector, ICP learner
├── content-ops/ # Expert panel, quality gates
├── outbound-engine/ # Cold email automation
├── seo-ops/ # Content gaps, GSC analysis
├── finance-ops/ # CFO briefings, cost analysis
├── revenue-intelligence/ # Gong insights, attribution
├── conversion-ops/ # CRO audits, lead magnets
├── podcast-ops/ # Episode → content pipeline
├── sales-playbook/ # Value pricing frameworks
├── autoresearch/ # Evolutionary content optimization
├── deck-generator/ # AI slide decks
├── yt-competitive-analysis/ # YouTube outlier detection
└── x-longform-post/ # Human-sounding X postsSKILL.mdscripts/requirements.txt.env.exampleREADME.md