🧪 Skills

Marketing Orchestrator

Orchestrates marketing data collection from Instagram, Meta Ads, SEO, competitors, and website audits to generate a comprehensive marketing audit report.

v1.0.0
❤️ 0
⬇️ 116
👁 1
Share

Description

Marketing Orchestrator Skill

Purpose

Orchestrates the marketing audit pipeline by sequentially running the following collector agents:

  • Instagram Collector
  • Meta Ads Collector
  • SEO / Keyword Collector
  • Competitor Finder
  • Website Audit Collector

Aggregates the individual results and invokes the Report Generator skill to produce the final comprehensive marketing audit report.

Input Schema

interface MarketingInput {
  instagramHandle?: string;
  websiteDomain?: string;
}

Output Schema

interface MarketingAuditReport {
  reportMarkdown: string;
  rawData: any;
  error?: string;
}

Implementation Pattern

  • Validate input: either instagramHandle or websiteDomain is required
  • Sequentially call each collector skill, passing relevant input
  • Collect results in a composite data object
  • Call report-generator skill with the aggregated data
  • Return the final report markdown and raw data

Example Usage

const input = { instagramHandle: 'gymshark', websiteDomain: 'gymshark.com' };
const report = await marketingOrchestrator(input);
console.log(report.reportMarkdown);

Orchestration Logic (Pseudocode)

async function marketingOrchestrator(input: MarketingInput): Promise<MarketingAuditReport> {
  if (!input.instagramHandle && !input.websiteDomain) {
    throw new Error("Either instagramHandle or websiteDomain is required");
  }

  const auditData: any = {
    input,
    collectedAt: new Date().toISOString(),
  };

  if (input.instagramHandle) {
    auditData.instagram = await runSkill('instagram-collector', { handle: input.instagramHandle });
  }

  if (input.websiteDomain) {
    auditData.metaAds = await runSkill('meta-ads-collector', { brandName: input.websiteDomain, domain: input.websiteDomain });
    auditData.keywords = await runSkill('seo-collector', { domain: input.websiteDomain });
    auditData.competitors = await runSkill('competitor-finder', { brandName: input.websiteDomain, domain: input.websiteDomain });
    auditData.websiteAudit = await runSkill('website-audit', { domain: input.websiteDomain });
  }

  const report = await runSkill('report-generator', auditData);

  return {
    reportMarkdown: report.reportMarkdown,
    rawData: auditData,
  };
}

Notes

  • Each runSkill call corresponds to invoking another skill as a sub-agent or subprocess.
  • The calling framework should handle API keys, env vars for external services.
  • Errors in individual collectors should not block the overall orchestration.
  • Extend as needed for additional collectors or data sources.

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs