SkillHub

marketing-orchestrator

v1.0.0

整合Instagram、Meta广告、SEO、竞品及网站审计数据,生成综合营销审计报告。

Sourced from ClawHub, Authored by Adarsh More

Installation

Please help me install the skill `marketing-orchestrator` from SkillHub official store. npx skills add AdarshVMore/marketing-orchestrator

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.