Content strategy

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.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/content-strategy-4.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit anthropics/knowledge-work-plugins/small-business/skills/content-strategy#main ~/.claude/skills/content-strategy-4

For one project only, change the path to .claude/skills/content-strategy-4.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Content strategy

Show the full text153 lines
namedescriptionallowed-tools
content-strategy> 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.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)
  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 

Discussion

Alternatives

Also in Roadmap & prioritiesSee all 277 in Product →