New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Analyzes sales data from PayPal and QuickBooks to find top

Content strategy

by anthropics · Apache-2.0 license · ★ 25,507 on GitHub · updated Sep 23

Content strategy cover

Analyzes sales data from PayPal and QuickBooks to find top performers and slow movers, layers in seasonality, and produces a prioritized 30-day content brief: what to push, what offers to run, what to hold. Strategic output only — no…

---
name: content-strategy
description: >
  Analyzes sales data from PayPal and QuickBooks to find top performers and
  slow movers, layers in seasonality, and produces a prioritized 30-day
  content brief: what to push, what offers to run, what to hold. Strategic
  output only — no calendars or assets. Use when the user asks what to post,
  wants a content plan, asks what's selling, or what to promote this month.
allowed-tools: Read, WebFetch
---

# Content Strategy

## Quick start

When an SMB owner asks "what should I post this month?" or "what's my content plan?", this skill:

1. **Pulls sales data** from QuickBooks or PayPal (transaction history, product/service revenue by date)

Overview

When an SMB owner asks "what should I post this month?" or "what's my content plan?", this skill:

What you get

  • Visual artifact (the default)render the brief as an HTML page in the house style — what to promote as the lead, the why behind each pick with its numbers in tabular-nums, and the channel call per push. The structured JSON for downstream tools rides along unchanged; it is an input to other skills, not a second deliverable.
  • docx / md / notion / canva preferencedeliver the same content in that form — a DOCX or markdown file, a Notion page created via the connector (named destination, never overwriting), or a Canva Doc created via the Canva connector (a new design each run, named with the date; tables become lists); fall back to the visual artifact if Notion or Canva is not connected — and say that is why.
  • Best for skilluse the visual artifact — this output is a decision page, not prose.
Manual install (npx, ZIP)
Claude Codenpx skills add anthropics/knowledge-work-plugins --skill content-strategy -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/anthropics/knowledge-work-plugins/tar.gz/da38ec1ee89d \ | tar -xz -C ~/.claude/skills --strip-components=3 knowledge-work-plugins-da38ec1ee89d/small-business/skills/content-strategy
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/cbdc54e98b0a5e6717a1/content-strategy.zip" -OutFile "$env:TEMP\content-strategy.zip"; Expand-Archive "$env:TEMP\content-strategy.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md8.1 KB
  • reference/3 files · 8.6 KB
Read the files here
anthropics/da38ec14 files
Shared references1SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text153 lines

Content Strategy

Quick start

When an SMB owner asks "what should I post this month?" or "what's my content plan?", this skill:

  1. Pulls sales data from QuickBooks or PayPal (transaction history, product/service revenue by date)
  2. Identifies patterns — top-selling products, slow movers, seasonal trends
  3. Layers in context — seasonality (user-provided or industry benchmarks), past performance
  4. Produces a 30-day brief — ranked recommendations of what to push, what to hold, what offers to consider
  5. Gets owner approval before the brief feeds into social-content-engine for asset generation

The output is strategic only — no calendar scheduling, no creative assets.


Workflow

Step 1: Pre-flight check (QuickBooks only)

If using QuickBooks, verify the business profile is set up:

  1. Call company-info to check if Industry is populated
  2. If missing or "Unknown":
    • Ask: "I need your business category to pull the right seasonality benchmarks. What industry are you in?" (e.g., retail, services, SaaS)
    • Call quickbooks-profile-info-update with the user's industry
    • Confirm: "Profile updated. Ready to pull your sales data."
  3. If profile is set, proceed to Step 2

Note: PayPal and Square do not require profile setup.

Step 2: Clarify priorities & metrics

When triggered, ask the user:

  • "How do you want me to measure 'top performers'?"

    • By total revenue?
    • By profit margin?
    • By sales velocity (how fast they're selling)?
    • Combination of the above?
  • "Do you have seasonality patterns in mind?"

    • If yes: "Tell me about them" (capture user's known seasonality)
    • If no: "I'll use industry benchmarks for your category"
Step 3: Pull and analyze sales data

Fetch data from the authenticated connector (QuickBooks, PayPal, or Square, user's choice):

  • Date range: Last 90 days (or full history if <90 days available)
  • Extract: Product/service name, date sold, revenue, quantity

Connector-specific notes:

  • QuickBooks: Fetch invoice line items via profit_loss_quickbooks_account (pre-flight sets industry context). Read the rows or monthlyBreakdown; the response's totalExpenses reports 0 against real rows, so never read the summary fields
  • PayPal: Fetch merchant transactions via list_transactions. Rate-limiting: If you hit rate limits, pause 30 seconds and retry once. If still blocked, gracefully offer: "PayPal is rate-limited. Would you like to switch to QuickBooks or Square instead, or I can continue with historical data I already pulled?"
  • Square: Requires location ID first. Call make_api_request(service="locations", method="list") to discover available locations, then fetch orders for each location.

No connectors at all? This still runs, and it is a supported path — not a degraded one. Ask the owner to export their sales history and upload it. Name the export by the label they will actually see in the app:

  • QuickBooks — Reports, then the "Sales by Product/Service Detail" report, set to the last 90 days, exported to Excel or CSV
  • PayPal — Activity, then Download, set to the last 90 days, "Completed transactions" as CSV
  • Square — Reports, then Item Sales, set to the last 90 days, exported as CSV

Any one of those carries product name, date, revenue, and usually quantity, which is everything Step 3 needs. A pasted list of what sold and roughly when also works — say plainly that the read is rougher, and run it.

Fallback: If <3 months of data, use industry seasonality benchmarks for the SMB's category (e.g., retail, services, e-commerce)

Identify:

  • Top 3–5 performers (by user's chosen metric)
  • Bottom 3–5 slow movers (consider holding or repositioning)
  • Trending up (gaining momentum in last 30 days)
  • Trending down (losing momentum)
Step 4: Layer in seasonality
  • User-provided: If they shared seasonal patterns, weight recommendations against them
  • Industry benchmarks: For categories without strong user data (e.g., "Q1 is strong for tax services")
  • Timing: Flag products that should ramp up/down in the next 30 days based on seasonal patterns
Step 5: Build the 30-day brief

Structure:

  • Executive summary (1–2 sentences: "Your best sellers are X and Y. Seasonal shift to Z is starting.")
  • Push hard (Top 2–3 products + recommended content angle, e.g., "Case study on ROI", "How-to video")
  • Hold steady (Middle performers; maintain visibility but no heavy lift)
  • Reposition or pause (Slow movers; consider discounting, bundling, or pausing)
  • Seasonal opportunities (What's coming next month that you should position for now)
  • Recommended offers (Bundle, discount, or free-trial strategy based on data)

Example length: 200–400 words (brief and actionable, not essay-length).

Step 6: Owner approval & iteration

Present the brief to the owner. Ask:

  • "Does this match your gut?"
  • "Anything to adjust?"
  • "Ready to feed this to social-content-engine for asset generation?"

Iterate if needed; once approved, return the final brief as structured JSON (ready for downstream tools).


More sources, and direct invocation

Read reference/v2_sources.md for the mapping:

  • Shopify — per-SKU velocity, variant performance, and product images that flow straight into asset generation downstream
  • Stripe — subscription and recurring revenue, where relevant
Direct invocation

If the owner asks for a sales brief, run this and return the brief. Don't route them anywhere.

Gotchas & edge cases

See reference/gotchas.md for common pitfalls.


Examples

See reference/examples/ for worked examples (SaaS, retail, services).


Output

Deliver the 30-day brief per the owner's stored output preference — never default to a markdown file. Check the ## Business context block's Output preference (shared style guide rule, ../../shared/artifact-style.md):

  • Visual artifact (the default): render the brief as an HTML page in the house style — what to promote as the lead, the why behind each pick with its numbers in tabular-nums, and the channel call per push. The structured JSON for downstream tools rides along unchanged; it is an input to other skills, not a second deliverable.
  • docx / md / notion / canva preference: deliver the same content in that form — a DOCX or markdown file, a Notion page created via the connector (named destination, never overwriting), or a Canva Doc created via the Canva connector (a new design each run, named with the date; tables become lists); fall back to the visual artifact if Notion or Canva is not connected — and say that is why.
  • Best for skill: use the visual artifact — this output is a decision page, not prose.

After the brief

The 30-day brief is approved and ready to act on. The natural next step is "make the content" — social-content-engine turns the brief into the standing calendar and the posts. Also nearby: "run this brief" (canva-creator) for a one-shot campaign build from this exact brief, and "is my marketing working" (growth-pulse) to check whether last month's push paid off. Offer at most three, and skip any offer the owner already declined this session.

Using a tool that isn't listed

The connectors named in this skill are the tested paths, not a wall. If the owner wants this flow to use a tool that isn't connected or listed, offer build-connector — it checks the connector directory first and connects through Zapier otherwise, never hand-building against a raw API. Once the connection exists, the tool joins this skill like any other optional connector, under the same approval gates.

1---
2name: content-strategy
3description: >
4 Analyzes sales data from PayPal and QuickBooks to find top performers and
5 slow movers, layers in seasonality, and produces a prioritized 30-day
6 content brief: what to push, what offers to run, what to hold. Strategic
7 output only — no calendars or assets. Use when the user asks what to post,
8 wants a content plan, asks what's selling, or what to promote this month.
9allowed-tools: Read, WebFetch
10---
11 
12# Content Strategy
13 
14## Quick start
15 
16When an SMB owner asks "what should I post this month?" or "what's my content plan?", this skill:
17 
181. **Pulls sales data** from QuickBooks or PayPal (transaction history, product/service revenue by date)
192. **Identifies patterns** — top-selling products, slow movers, seasonal trends
203. **Layers in context** — seasonality (user-provided or industry benchmarks), past performance
214. **Produces a 30-day brief** — ranked recommendations of what to push, what to hold, what offers to consider
225. **Gets owner approval** before the brief feeds into `social-content-engine` for asset generation
23 
24The output is strategic only — no calendar scheduling, no creative assets.
25 
26---
27 
28## Workflow
29 
30### Step 1: Pre-flight check (QuickBooks only)
31 
32If using QuickBooks, verify the business profile is set up:
33 
341. Call `company-info` to check if `Industry` is populated
352. If missing or "Unknown":
36 - Ask: "I need your business category to pull the right seasonality benchmarks. What industry are you in?" (e.g., retail, services, SaaS)
37 - Call `quickbooks-profile-info-update` with the user's industry
38 - Confirm: "Profile updated. Ready to pull your sales data."
393. If profile is set, proceed to Step 2
40 
41**Note:** PayPal and Square do not require profile setup.
42 
43### Step 2: Clarify priorities & metrics
44 
45When triggered, ask the user:
46 
47- **"How do you want me to measure 'top performers'?"**
48 - By total revenue?
49 - By profit margin?
50 - By sales velocity (how fast they're selling)?
51 - Combination of the above?
52 
53- **"Do you have seasonality patterns in mind?"**
54 - If yes: "Tell me about them" (capture user's known seasonality)
55 - If no: "I'll use industry benchmarks for your category"
56 
57### Step 3: Pull and analyze sales data
58 
59Fetch data from the authenticated connector (QuickBooks, PayPal, or Square, user's choice):
60 
61- **Date range:** Last 90 days (or full history if <90 days available)
62- **Extract:** Product/service name, date sold, revenue, quantity
63 
64**Connector-specific notes:**
65 
66- **QuickBooks:** Fetch invoice line items via `profit_loss_quickbooks_account` (pre-flight sets industry context). Read the rows or `monthlyBreakdown`; the response's `totalExpenses` reports 0 against real rows, so never read the summary fields
67- **PayPal:** Fetch merchant transactions via `list_transactions`. *Rate-limiting:* If you hit rate limits, pause 30 seconds and retry once. If still blocked, gracefully offer: "PayPal is rate-limited. Would you like to switch to QuickBooks or Square instead, or I can continue with historical data I already pulled?"
68- **Square:** Requires location ID first. Call `make_api_request(service="locations", method="list")` to discover available locations, then fetch orders for each location.
69 
70**No connectors at all?** This still runs, and it is a supported path — not a degraded one. Ask the owner to export their sales history and upload it. Name the export by the label they will actually see in the app:
71 
72- **QuickBooks** — Reports, then the "Sales by Product/Service Detail" report, set to the last 90 days, exported to Excel or CSV
73- **PayPal** — Activity, then Download, set to the last 90 days, "Completed transactions" as CSV
74- **Square** — Reports, then Item Sales, set to the last 90 days, exported as CSV
75 
76Any one of those carries product name, date, revenue, and usually quantity, which is everything Step 3 needs. A pasted list of what sold and roughly when also works — say plainly that the read is rougher, and run it.
77 
78**Fallback:** If <3 months of data, use industry seasonality benchmarks for the SMB's category (e.g., retail, services, e-commerce)
79 
80Identify:
81- **Top 3–5 performers** (by user's chosen metric)
82- **Bottom 3–5 slow movers** (consider holding or repositioning)
83- **Trending up** (gaining momentum in last 30 days)
84- **Trending down** (losing momentum)
85 
86### Step 4: Layer in seasonality
87 
88- **User-provided:** If they shared seasonal patterns, weight recommendations against them
89- **Industry benchmarks:** For categories without strong user data (e.g., "Q1 is strong for tax services")
90- **Timing:** Flag products that should ramp up/down in the next 30 days based on seasonal patterns
91 
92### Step 5: Build the 30-day brief
93 
94Structure:
95- **Executive summary** (1–2 sentences: "Your best sellers are X and Y. Seasonal shift to Z is starting.")
96- **Push hard** (Top 2–3 products + recommended content angle, e.g., "Case study on ROI", "How-to video")
97- **Hold steady** (Middle performers; maintain visibility but no heavy lift)
98- **Reposition or pause** (Slow movers; consider discounting, bundling, or pausing)
99- **Seasonal opportunities** (What's coming next month that you should position for now)
100- **Recommended offers** (Bundle, discount, or free-trial strategy based on data)
101 
102Example length: **200–400 words** (brief and actionable, not essay-length).
103 
104### Step 6: Owner approval & iteration
105 
106Present the brief to the owner. Ask:
107- "Does this match your gut?"
108- "Anything to adjust?"
109- "Ready to feed this to social-content-engine for asset generation?"
110 
111Iterate if needed; once approved, return the final brief as structured JSON (ready for downstream tools).
112 
113---
114 
115## More sources, and direct invocation
116 
117Read `reference/v2_sources.md` for the mapping:
118 
119- **Shopify** — per-SKU velocity, variant performance, and product images that flow straight into asset generation downstream
120- **Stripe** — subscription and recurring revenue, where relevant
121 
122### Direct invocation
123 
124If the owner asks for a sales brief, run this and return the brief. Don't route them anywhere.
125 
126## Gotchas & edge cases
127 
128See [`reference/gotchas.md`](reference/gotchas.md) for common pitfalls.
129 
130---
131 
132## Examples
133 
134See [`reference/examples/`](reference/examples/) for worked examples (SaaS, retail, services).
135 
136---
137 
138## Output
139 
140**Deliver the 30-day brief per the owner's stored output preference — never default to a markdown file.** Check the `## Business context` block's `Output preference` (shared style guide rule, `../../shared/artifact-style.md`):
141 
142- **Visual artifact (the default):** render the brief as an HTML page in the house style — what to promote as the lead, the why behind each pick with its numbers in tabular-nums, and the channel call per push. The structured JSON for downstream tools rides along unchanged; it is an input to other skills, not a second deliverable.
143- **docx / md / notion / canva preference:** deliver the same content in that form — a DOCX or markdown file, a Notion page created via the connector (named destination, never overwriting), or a Canva Doc created via the Canva connector (a new design each run, named with the date; tables become lists); fall back to the visual artifact if Notion or Canva is not connected — and say that is why.
144- **Best for skill:** use the visual artifact — this output is a decision page, not prose.
145 
146## After the brief
147 
148The 30-day brief is approved and ready to act on. The natural next step is "make the content" — `social-content-engine` turns the brief into the standing calendar and the posts. Also nearby: "run this brief" (`canva-creator`) for a one-shot campaign build from this exact brief, and "is my marketing working" (`growth-pulse`) to check whether last month's push paid off. Offer at most three, and skip any offer the owner already declined this session.
149 
150## Using a tool that isn't listed
151 
152The connectors named in this skill are the tested paths, not a wall. If the owner wants this flow to use a tool that isn't connected or listed, offer `build-connector` — it checks the connector directory first and connects through Zapier otherwise, never hand-building against a raw API. Once the connection exists, the tool joins this skill like any other optional connector, under the same approval gates.
153 
View all files on GitHub →

Details

Updated
Sep 23, 2026
License
Apache-2.0
Stars on the repo
★ 25,507
Checked
Source
anthropics/knowledge-work-plugins ↗
Creator
anthropics · 35 listings
View creator

Similar skills

See all →
MCP3-5 days | Agents: 6 | Gate Keepers: DevOps Automator +⚙️ Phase 2 Playbook — Foundation & Scaffoldingmsitarzewski/agency-agents · by msitarzewski> Duration: 3-5 days | Agents: 6 | Gate Keepers: DevOps Automator + Evidence Collector★ 154k GitHub starsMCPNEXUS transforms The Agency's independent AI specialists🌐 NEXUS — Network of EXperts, Unified in Strategymsitarzewski/agency-agents · by msitarzewski> NEXUS transforms The Agency's independent AI specialists into a synchronized intelligence network. This is not a prompt collection — it…★ 154k GitHub starsSkillGenerate an Ansoff Matrix analysis mapping growth strategiesphuryn/pm-skills · by phurynGenerate an Ansoff Matrix analysis mapping growth strategies across market penetration, market development, product development, and diversification. Use when considering growth options, planning market expansion, or evaluating strategic growth paths.★ 26.6k GitHub starsSkillSurvey any codebase as a senior advisorImproveshadcn/improve · by shadcnSurvey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute. Strictly read-only on source code — never implements, fixes, or refactors anything itself. Use when asked to audit a codebase, find improvement opportunities (bugs, security, performance, test coverage, tech debt, migrations, DX), suggest features or where to take the project next (roadmap, product direction), or generate handoff plans for another agent to implement.★ 9.2k GitHub starsSkillTranslate skills from one industry to anotherCareer changer translatorParamchoudhary/ResumeSkills · by ParamchoudharyTranslate skills from one industry to another, identify transferable skills★ 2.4k GitHub starsSkillA collection of 37 battle-tested marketing skillsOpenClaw Marketing SkillsLeoYeAI/openclaw-marketing-skills · by LeoYeAIA collection of 37 battle-tested marketing skills for OpenClaw agents. Use when you want to install or reference any marketing skill including: CRO (page-cro, signup-flow-cro, onboarding-cro, form-cro, popup-cro, paywall-upgrade-cro), copywriting, copy-editing, cold-email, email-sequence, social-content, seo-audit, ai-seo, programmatic-seo, site-architecture, schema-markup, content-strategy, paid-ads, ad-creative, ab-test-setup, analytics-tracking, referral-program, free-tool-strategy, churn-prevention, revops, sales-enablement, launch-strategy, pricing-strategy, competitor-alternatives, marketing-ideas, marketing-psychology, lead-magnets, product-marketing-context, and data connectors (google-ads-connect, search-console-connect, meta-ads-connect, x-twitter-connect). Start with product-marketing-context to set up your product context document, then use any other skill naturally. Powered by MyClaw.ai.★ 1k GitHub stars

More from anthropics

SkillStop and check this skill before finishing any replyAcademy guideanthropics/skills · by anthropicsStop and check this skill before finishing any reply to a question about how to use Claude or a Claude product — it recommends matching courses, tutorials, and use cases from Claude Academy (academy.claude.com), Anthropic's learning hub. Trigger on: "how do I", "how can I", "getting started with", "what can Claude do", "teach me", "learn to use"; questions about artifacts, projects, skills, plugins, connectors, MCP; requests about rolling Claude out to a team, class, or organization; and any ask for training materials, onboarding content, or learning resources. Use it when the user is learning how to use a feature or product — not when they are mid-task and just want the task done. This skill composes with other skills: after consulting product documentation to answer how a Claude feature works, also check here for a matching course or tutorial — a docs-grounded answer and an Academy recommendation belong together. Only recommend on a strong match; never invent Academy content.★ 178k GitHub starsSkillCreating algorithmic art using p5.js with seeded randomnessanthropics/skills · by anthropicsCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.★ 178k GitHub starsSkillApplies Anthropic's official brand colorsBrand Guidelinesanthropics/skills · by anthropicsApplies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.★ 178k GitHub starsSkillSet up the Discord channel/discord:configure — Discord Channel Setupanthropics/claude-plugins-official · by anthropicsSet up the Discord channel — save the bot token and review access policy. Use when the user pastes a Discord bot token, asks to configure Discord, asks "how do I set this up" or "who can reach me," or wants to check channel status.★ 37.6k GitHub starsSkillEnd-to-end onboarding for a freshly-plugged-in M5Stack ESP32M5Stack Onboardinganthropics/claude-plugins-official · by anthropicsEnd-to-end onboarding for a freshly-plugged-in M5Stack ESP32 device (Cardputer, Cardputer-Adv, Core, CoreS3, Stick) — detect on USB, flash UIFlow 2.0 firmware, and install the Claude Buddy MicroPython app bundle. Use whenever the user plugs in or wants to flash/provision/reset an M5Stack or ESP32 board, or says "m5-onboard go".★ 37.6k GitHub starsSkillDrive this repo's build/release scripts end-to-endVerifying the build scriptsanthropics/claude-agent-sdk-python · by anthropicsDrive this repo's build/release scripts end-to-end without touching the network. Use when verifying changes to scripts/download_cli.py, scripts/build_wheel.py, scripts/update_cli_version.py, or scripts/_cli_version_validation.py.★ 8.2k GitHub stars