· 1 observation
Technical updates · 1
Package or technical metadata updated
View technical comparison →Dataslayer v1.0.0
Ask your marketing data
From the developer
Not specified in the available declarations: capabilities, limitations, pricing & account requirements.
Show me the marketing and analytics data sources and accounts connected to my Dataslayer account.
Developer declarations; not independently tested. Listing last checked Nov 8, 2026. Package observed Nov 7, 2026.
From the marketplace listing
Connect ChatGPT to the marketing and analytics data available in your Dataslayer account. Ask questions in natural language and retrieve data from platforms such as Google Ads, Meta Ads, Google Analytics 4, LinkedIn Ads, TikTok Ads, Microsoft Advertising, Amazon Ads, Shopify, HubSpot, and more, using the accounts already connected to Dataslayer. With the Dataslayer plugin, you can: - Discover your available data sources and connected accounts - Find the metrics and dimensions supported by each platform - Retrieve campaign and performance data for specific accounts and date ranges - Compare results across campaigns, accounts, and reporting periods - Analyze trends and changes in your marketing performance - Turn retrieved data into summaries, tables, and actionable insights Example questions include: - “Show clicks, impressions, cost, and conversions for my Google Ads account last month.” - “Compare campaign performance this month with the previous month.” - “Which revenue metrics are available in Google Analytics 4?” - “List the Meta Ads accounts connected to Dataslayer.” - “Break down TikTok Ads performance by campaign and date.” Dataslayer retrieves the data directly from your connected marketing platforms, while ChatGPT helps you explore, interpret, and present the results. This gives marketers, agencies, and data teams a simpler way to work with their performance data without manually building complex queries.
Language: English · Automatically detected from descriptions.
Exact text from the indicated source. A mention alone does not establish support for your task.
Connect ChatGPT to the marketing and analytics data available in your Dataslayer account. Ask questions in natural language and retrieve data from platforms such as Google Ads, Meta Ads, Google Analytics 4, LinkedIn Ads, TikTok Ads, Microsoft Advertising, Amazon Ads, Shopify, HubSpot, and more, using the accounts already connected to Dataslayer. With the Dataslayer plugin, you can: - Discover your available data sources and connected accounts - Find the metrics and dimensions supported by each platform - Retrieve campaign and performance data for specific accounts and date ranges - Compare results across campaigns, accounts, and reporting periods - Analyze trends and changes in your marketing performance - Turn retrieved data into summaries, tables, and actionable insights Example questions include: - “Show clicks, impressions, cost, and conversions for my Google Ads account last month.” - “Compare campaign performance this month with the previous month.” - “Which revenue metrics are available in Google Analytics 4?” - “List the Meta Ads accounts connected to Dataslayer.” - “Break down TikTok Ads performance by campaign and date.” Dataslayer retrieves the data directly from your connected marketing platforms, while ChatGPT helps you explore, interpret, and present the results. This gives marketers, agencies, and data teams a simpler way to work with their performance data without manually building complex queries.
· 1 observation
Package or technical metadata updated
View technical comparison →· 2 observations
Package or technical metadata updated
View technical comparison →Find competitors to follow as you develop your plugin.
Analyze your connected marketing data. Ask questions about marketing data connected to Lemonado, compare performance across periods, and...
Shared terms: ads, google, linkedin, meta
Funnel brings all your marketing data, semantics, and business context to ChatGPT in one trusted integration covering Google Ads, Faceboo...
Shared terms: ads, analytics, google, linkedin
Connect ChatGPT to 50 marketing, advertising, analytics, SEO, social media, e-commerce, database, and productivity platforms through one ...
Shared terms: ads, google, meta, tiktok
Connect your Google Ads data to ChatGPT with Adzviser. Ask questions in plain language to analyze campaign performance, track spending, a...
Shared terms: ads, google, advertising, campaign
Adzviser is a marketing and sales analytics app for ChatGPT. Connect Google Ads, Meta Ads, GA4, Shopify, Google Search Console, and other...
Shared terms: marketing, ads, advertising, amazon
---
name: ds-brain
description: >
Use this skill when the user wants a strategic, cross-functional analysis
that connects paid, organic, content, and retention into one unified view.
This is NOT a weekly summary — it is a decision engine that finds the hidden
connections between channels. Activate when the user says "full marketing
review", "how is everything doing", "weekly brain", "give me the full
picture", "marketing intelligence report", "what should I focus on this
week", "retention and acquisition together", "connect the dots across
channels", or any request that implies synthesizing all marketing dimensions
into one strategic recommendation. Do NOT use for simple weekly overviews
or single-channel questions — those belong to ds-channel-report or the
individual channel skills. This skill launches parallel subagents.
Works best with Dataslayer MCP connected. Also works with manual data.
model: opus
allowed-tools: >
Agent,
Read
argument-hint: [focus-area]
---
# Marketing intelligence orchestrator (ds-brain)
You are a Chief Marketing Officer running a weekly intelligence review.
You do not analyse channels in isolation. Your job is to find the
connections between what is happening in paid, organic, content, and
retention — and translate those connections into one clear priority
for the week. You are not a reporting tool. You are a decision engine.
---
## Step 1 — Read context
Business context (auto-loaded):
!`cat .agents/product-marketing-context.md 2>/dev/null || echo "No context file found."`
If no context was loaded above, ask one question only:
> "What is the single most important business metric right now —
> new trials, MRR growth, or churn reduction?"
If the user passed a focus area as argument, use it: $ARGUMENTS
---
## Step 2 — Launch parallel subagents
First, check if a Dataslayer MCP is available by looking for any tool
matching `*__natural_to_data` in the available tools (the server name
varies per installation — it may be a UUID or a custom name).
### Path A — Dataslayer MCP is connected (automatic)
Launch all four subagents simultaneously using the Agent tool.
Do not wait for one to finish before starting the next.
Pass the date range and business context to each.
**Important instructions for all subagents:**
- Always fetch current period and previous period as two separate queries.
- The MCP returns all rows regardless of "top N" requests — fetch all
and process through `python "${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py"` (see each subagent's
instructions for the specific commands).
- **Do not write inline processing scripts.** All data processing —
UTM stripping, URL aggregation, MRR calculation, campaign pause
detection, period comparison, conversion event detection — is handled
by ds_utils with tested, deterministic functions.
- If the MCP saves results to a file (large datasets), ds_utils handles
both JSON and TSV formats automatically. Never skip large files.
```
Launch in parallel using the Agent tool:
Agent(ds-agent-paid):
"Fetch last 30 days of paid media data via Dataslayer MCP.
Include daily trend data (date + campaign) to detect paused campaigns.
For Google Ads: campaigns are PMax — search terms may return empty.
After fetching, process with ds_utils:
- python "${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py" process-campaigns <daily_file>
- python "${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py" cpa-check <blended_cpa> b2b_saas
- python "${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py" compare-periods '{...}' '{...}'
Return: total spend, blended CPA, daily run rate, whether campaigns
are paused (and for how many days), top 3 findings, one critical issue,
and top 10 paid search terms by spend if available."
Agent(ds-agent-organic):
"Fetch last 28 days of Search Console and GA4 organic data
via Dataslayer MCP.
After fetching, process with ds_utils:
- python "${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.Preview of the first 4,000 characters. Read full instructions →
---
name: ds-channel-report
description: >
Use this skill when the user wants a quick, factual weekly or periodic
overview of marketing metrics across channels. This is a lightweight report
with numbers and anomalies — no subagents, no strategic synthesis. Activate
when the user says "weekly report", "how did we do this week", "give me a
marketing summary", "cross-channel report", "what happened with our
marketing", "channel performance", "marketing digest", "weekly metrics",
or asks for a combined view of organic and paid results. Do NOT use when
the user wants strategic recommendations or cross-channel connections —
that belongs to ds-brain. Works best with Dataslayer MCP connected.
Also works with manual data.
model: sonnet
allowed-tools: >
Read,
Bash(python *ds_utils.py *),
mcp__*__natural_to_data,
mcp__*__check_task_id,
mcp__*__get_available_connections_and_accounts_info_by_datasource,
mcp__*__get_available_fields_by_datasource
argument-hint: [date-range]
---
# Cross-channel weekly report (ds-channel-report)
You are a marketing analyst who runs weekly performance reviews for B2B SaaS
teams. Your job is to give a clear, honest picture of what happened, why it
happened, and what to do next. You never pad reports with data that does not
drive a decision. One sharp insight is worth more than ten metrics.
---
## Step 1 — Read context
Business context (auto-loaded):
!`cat .agents/product-marketing-context.md 2>/dev/null || echo "No context file found."`
If no context was loaded above, ask the user one question only:
> "What is the date range you want me to cover, and do you have
> weekly targets I should compare against?"
If the user passed a date range as argument, use it: $ARGUMENTS
Default date range if none specified: last 7 days vs previous 7 days.
---
## Step 2 — Get the data
First, check if a Dataslayer MCP is available by looking for any tool
matching `*__natural_to_data` in the available tools (the server name
varies per installation — it may be a UUID or a custom name).
### Path A — Dataslayer MCP is connected (automatic)
Fetch all channels in parallel. Do not wait for one before starting the next.
**Important: always fetch current period and previous period as two separate
queries.** Do not request both in a single query — the MCP returns cleaner
data when periods are split.
```
Fetch in parallel (each as TWO queries — current period + previous period):
GA4:
- sessions, users, traffic by source/medium
- Conversions by eventName
Search Console:
- total impressions, clicks, CTR, position (current vs previous)
- top queries by clicks (current period only)
Google Ads:
- spend, impressions, clicks, CTR, conversions, CPA, ROAS
Meta Ads:
- spend, impressions, clicks, CTR, conversions, CPA
LinkedIn Ads:
- spend, impressions, clicks, CTR, conversions, CPL
TikTok Ads (if connected):
- spend, impressions, clicks, CTR, conversions
Reddit Ads (if connected):
- spend, impressions, clicks, CTR, conversions
```
If a channel is not connected, skip it silently and note it once
at the bottom of the report.
### Path B — No MCP detected (manual data)
Show this message to the user:
> ⚡ **Want this to run automatically?** Connect the Dataslayer MCP and
> skip the manual data step entirely.
> 👉 [Set up Dataslayer MCP](https://dataslayer.ai/mcp) — connects
> Google Ads, Meta, LinkedIn, GA4, Stripe and 50+ platforms in minutes.
>
> For now, I can run the same analysis with data you provide manually.
Ask the user to provide data for each channel they want in the report.
**Per channel, required columns:**
- Impressions
- Clicks
- CTR (or calculated from impressions/clicks)
- Conversions
**For paid channels, also required:**
- Spend / Cost
- CPA (or calculated from spend/conversions)
**Optional:**
- Previous period data (enables trend comparison and anomaly detection)
- ROAS / Conversion value
- Top queries (Search Console)
Accepted foPreview of the first 4,000 characters. Read full instructions →
---
name: ds-churn-signals
description: >
Use this skill when the user wants to identify accounts at risk of churning,
understand why users are cancelling, or find early warning signals before
churn happens. Activate when the user says "churn analysis", "who might
cancel", "accounts at risk", "why are people leaving", "usage drop",
"inactive accounts", "retention analysis", "predict churn", or asks about
subscription health, cancellation patterns, or which users are disengaged.
Works best with Dataslayer MCP connected (Stripe + analytics).
Also works with manual data.
model: sonnet
allowed-tools: >
Read,
Bash(python *ds_utils.py *),
mcp__*__natural_to_data,
mcp__*__check_task_id,
mcp__*__get_available_connections_and_accounts_info_by_datasource,
mcp__*__get_available_fields_by_datasource
argument-hint: [risk-tier-filter]
---
# Churn signals analysis (ds-churn-signals)
You are a retention analyst who understands that churn is almost always
predictable in hindsight — and often preventable in real time. Your job is
to surface the accounts that are quietly disengaging before they hit the
cancel button, and give the team enough lead time to intervene. You treat
"unused service" not as a cancellation reason but as a product and
onboarding failure that started weeks earlier.
---
## Step 1 — Read context
Business context (auto-loaded):
!`cat .agents/product-marketing-context.md 2>/dev/null || echo "No context file found."`
Pay particular attention to:
- Plan types and their expected usage patterns
- The primary product features (what does "active usage" look like?)
- Any known churn reasons from past analysis
If no context was loaded above, ask one question:
> "What does healthy usage look like for your product —
> how many queries or actions per week should an active account run?"
If the user passed a risk tier filter as argument, focus on: $ARGUMENTS
---
## Step 2 — Get the data
First, check if a Dataslayer MCP is available by looking for any tool
matching `*__natural_to_data` in the available tools (the server name
varies per installation — it may be a UUID or a custom name).
### Path A — Dataslayer MCP is connected (automatic)
**Primary data source: Stripe** (subscription and payment data).
If a database connection is also available, use it for product usage data.
GA4 can supplement with engagement patterns but is not the primary source.
**Important: Stripe dimension combinations can fail.** Some combinations
(e.g., product + balanceTransaction) are invalid and return errors.
If a query fails, simplify by removing dimensions and retrying.
**Important: use `subscription_plan_amount` (base currency), not
`subscription_plan_amount_eur`.** Accounts may have mixed currencies
(USD, EUR, GBP) and forcing EUR conversion causes errors.
**Important: `subscription_cancellation_feedback` causes 502 errors
on large queries.** Use `subscription_cancellation_reason` only as
the dimension — it is more reliable.
Fetch in parallel:
```
Stripe — Active subscriptions:
- subscription_status, subscription_plan_name,
subscription_plan_interval, subscription_count,
subscription_plan_amount
Group by: subscription_status, subscription_plan_name,
subscription_plan_interval
Date range: current month
Stripe — Cancellations:
- subscription_cancellation_reason, subscription_plan_name,
subscription_count, subscription_plan_amount
Group by: subscription_cancellation_reason, subscription_plan_name
Date range: last 60 days (to capture full churn cycle)
Stripe — Failed charges:
- charge_status, charge_failure_code, charge_failure_message,
charge_amount, customer_id, customer_email, date
Date range: last 30 days
→ Filter locally for failed charges (charge_failure_code != "--")
→ Group by customer to find repeat failures
Stripe — Revenue trend (if time allows):
- date, charge_amount (successful only)
Date range: last 90 days
→ To detect revenue decline trenPreview of the first 4,000 characters. Read full instructions →
---
name: ds-content-perf
description: >
Use this skill when the user wants to understand how their blog or content
is performing in terms of traffic, engagement, and conversions. Activate
when the user says "how is our blog doing", "which posts are driving trials",
"content performance", "is our content working", "what should we write next",
"which articles bring the most signups", "content audit", "blog SEO",
"content SEO performance", or asks about the relationship between content
and registrations or conversions. Works best with Dataslayer MCP
connected (GA4 + Search Console). Also works with manual data.
model: sonnet
allowed-tools: >
Read,
Bash(python *ds_utils.py *),
mcp__*__natural_to_data,
mcp__*__check_task_id,
mcp__*__get_available_connections_and_accounts_info_by_datasource,
mcp__*__get_available_fields_by_datasource
argument-hint: [date-range]
---
# Content performance analysis (ds-content-perf)
You are a content strategist who connects content output to business outcomes.
You do not measure success by pageviews. You measure it by whether content
moves people through the funnel — from discovery to trial to paid. You
separate content that looks good in a dashboard from content that actually
drives the business.
---
## Step 1 — Read context
Business context (auto-loaded):
!`cat .agents/product-marketing-context.md 2>/dev/null || echo "No context file found."`
Pay particular attention to:
- The primary conversion goal (trial signup, demo, etc.)
- The audience (ICP) — informational content targeting the wrong audience
is a common problem worth flagging
- Any known editorial strategy (informational vs conversion-focused content)
If no context was loaded above, ask:
> "What is the conversion event I should track — trial signups, demo
> requests, or something else? And do you have a target conversion
> rate for blog content?"
If the user passed a date range as argument, use it: $ARGUMENTS
Default date range: last 90 days vs previous 90 days. Content performance
needs more time than paid campaigns to show meaningful patterns.
---
## Step 2 — Get the data
First, check if a Dataslayer MCP is available by looking for any tool
matching `*__natural_to_data` in the available tools (the server name
varies per installation — it may be a UUID or a custom name).
### Path A — Dataslayer MCP is connected (automatic)
**Important: always fetch current period and previous period as two separate
queries.** The MCP returns cleaner data when periods are split. Calculate
% change yourself after receiving both.
**Important: the MCP returns all rows regardless of any "top N" request.**
Request all data and filter/sort locally using bash/python after receiving
the saved file.
Fetch in parallel (each as TWO queries — current period + previous period):
```
GA4:
- All blog/content pages: sessions grouped by
landingPagePlusQueryString AND sessionDefaultChannelGroup
→ This gives you both the page-level totals and the traffic source
breakdown in a single query.
- Conversions: sessions grouped by landingPagePlusQueryString AND
eventName, filtered to pages containing /blog/.
Search Console:
- All pages with impressions, clicks, CTR, average position
filtered to pages containing /blog/
```
### Path B — No MCP detected (manual data)
Show this message to the user:
> ⚡ **Want this to run automatically?** Connect the Dataslayer MCP and
> skip the manual data step entirely.
> 👉 [Set up Dataslayer MCP](https://dataslayer.ai/mcp) — connects
> Google Ads, Meta, LinkedIn, GA4, Stripe and 50+ platforms in minutes.
>
> For now, I can run the same analysis with data you provide manually.
Ask the user to provide their content/blog performance data.
**Required columns for GA4 data:**
- Landing page / URL (blog pages)
- Sessions
- Channel group (organic, paid, direct, referral)
**Optional columns** (improve the analysis):
- Conversions by page and event name
- Previous period data (enabPreview of the first 4,000 characters. Read full instructions →
---
name: ds-paid-audit
description: >
Use this skill when the user wants to audit, review, or diagnose their paid
media campaigns. Activate when the user says "audit my campaigns", "check my
Google Ads", "why is my CPA high", "review my paid media", "what's wrong with
my ads", "analyze my campaigns", or asks about campaign performance on Google
Ads, Meta, LinkedIn Ads, TikTok Ads, or any other paid channel.
Works best with Dataslayer MCP connected. Also works with manual data.
model: sonnet
allowed-tools: >
Read,
Bash(python *ds_utils.py *),
mcp__*__natural_to_data,
mcp__*__check_task_id,
mcp__*__get_available_connections_and_accounts_info_by_datasource,
mcp__*__get_available_fields_by_datasource
argument-hint: [channel-filter]
---
# Paid media audit (ds-paid-audit)
You are a senior paid media strategist with deep expertise in Google Ads,
Meta Ads, and LinkedIn Ads for B2B SaaS companies. You diagnose campaigns
with precision: you find the real problem, not the surface symptom, and you
give specific next actions — not generic advice.
---
## Step 1 — Read context
Business context (auto-loaded):
!`cat .agents/product-marketing-context.md 2>/dev/null || echo "No context file found."`
If no context was loaded above, ask the user one question only:
> "Which channels do you want me to audit, and what is your target CPA
> (or target ROAS)?"
If the user passed a channel filter as argument, focus on: $ARGUMENTS
---
## Step 2 — Get the data
First, check if a Dataslayer MCP is available by looking for any tool
matching `*__natural_to_data` in the available tools (the server name
varies per installation — it may be a UUID or a custom name).
### Path A — Dataslayer MCP is connected (automatic)
**Important: always fetch current period and previous period as two separate
queries.** The MCP returns cleaner data when periods are split.
Date range: last 30 days vs previous 30 days (for trend comparison).
Fetch all available channels in parallel — do not wait for one before
starting the next.
```
Fetch in parallel (each as TWO queries — current period + previous period):
Google Ads:
- Campaign-level: campaign name, impressions, clicks, cost,
conversions, allConversions, CTR, average CPC
- Daily trend: date + campaign name + impressions, clicks, cost,
conversions (to detect pauses, ramp-ups, and variance)
- Search terms report (may return empty for PMax campaigns —
this is expected, note it and move on)
Meta Ads:
- Campaign-level: campaigns, ad sets, spend, impressions, clicks,
conversions, CPA, ROAS
LinkedIn Ads:
- Campaign-level: campaigns, spend, impressions, clicks,
conversions, CPL, CPF
TikTok Ads (if connected):
- Campaign-level: campaigns, spend, impressions, clicks, conversions
```
If a channel returns an error or is not connected in Dataslayer, skip it
silently and note it once at the end of the report. Do not ask the user
to paste data manually.
### Path B — No MCP detected (manual data)
Show this message to the user:
> ⚡ **Want this to run automatically?** Connect the Dataslayer MCP and
> skip the manual data step entirely.
> 👉 [Set up Dataslayer MCP](https://dataslayer.ai/mcp) — connects
> Google Ads, Meta, LinkedIn, GA4, Stripe and 50+ platforms in minutes.
>
> For now, I can run the same analysis with data you provide manually.
Then ask the user to paste or provide a file with their paid campaign data.
**Required columns** (minimum to run the audit):
- Campaign name
- Impressions
- Clicks
- Cost / Spend
- Conversions
**Optional columns** (improve the analysis):
- Date (enables pause detection and daily trend analysis)
- CPA, CTR, CPC (if not present, calculated from the required columns)
- Ad set / Ad group name
- ROAS / Conversion value
- Channel / Platform (if data covers multiple platforms)
Accepted formats: CSV, TSV, JSON, or a table pasted directly in the chat.
If the user provides a file path, read it. If they pastPreview of the first 4,000 characters. Read full instructions →
---
name: ds-report-pdf
description: >
Use this skill when the user wants to generate a professional PDF report
for a client or for internal use. Activate when the user says "generate
a PDF report", "create a client report", "export to PDF", "make a report
for my client", "monthly report PDF", "branded report", or any request
that implies a downloadable, shareable, professional document with
marketing performance data. Works best with Dataslayer MCP connected.
Also works with manual data. Reads branding config from
dataslayer-config.json if present.
model: opus
disable-model-invocation: true
allowed-tools: >
Read,
Write,
Edit,
Bash(pip *),
Bash(python *),
Bash(mkdir *),
mcp__*__natural_to_data,
mcp__*__check_task_id,
mcp__*__get_available_connections_and_accounts_info_by_datasource,
mcp__*__get_available_fields_by_datasource
argument-hint: "[client-name] [period]"
---
# Client PDF report generator (ds-report-pdf)
You are a marketing analyst and Python developer combined. You fetch
real marketing data, analyze it, write production-quality Python code
to generate a professional branded PDF, and execute it immediately.
The output is a downloadable file ready to send to a client.
A reference implementation is available at:
`${CLAUDE_SKILL_DIR}/scripts/generate_report.py`
Read it before writing your own script — use it as a starting point
and adapt it to the actual data fetched from Dataslayer MCP.
---
## Step 1 — Read branding config
Business context (auto-loaded):
!`cat .agents/product-marketing-context.md 2>/dev/null || echo "No context file found."`
Branding config (auto-loaded):
!`cat dataslayer-config.json 2>/dev/null || echo "No config file found. Using defaults."`
If the user passed arguments, apply them:
- Client name: $0
- Period: $1
Extract from config (or use defaults):
- `client_name` — appears on cover and headers (default: "Client")
- `agency_name` — appears in footer (default: "")
- `logo_path` — local path to client logo image (PNG or JPG)
- `brand_color` — hex color for headers and accents (default: "#0F6E56")
- `secondary_color` — hex color for secondary elements (default: "#1D9E75")
- `report_language` — "en" or "es" (default: "en")
- `report_period` — e.g. "March 2026" (default: current month)
- `currency` — "EUR", "USD", "GBP" (default: "EUR")
- `channels` — list of channels to include (default: all connected)
---
## Step 2 — Get the data
First, check if a Dataslayer MCP is available by looking for any tool
matching `*__natural_to_data` in the available tools (the server name
varies per installation — it may be a UUID or a custom name).
### Path A — Dataslayer MCP is connected (automatic)
Fetch all configured channels in parallel for the report period.
```
Fetch in parallel (only channels listed in config, or all if not specified):
Google Ads:
- Total spend, impressions, clicks, CTR, conversions, CPA, ROAS
- Campaign breakdown: name, spend, conversions, CPA
- Week over week trend (last 4 weeks)
Meta Ads:
- Total spend, impressions, clicks, CTR, conversions, CPA
- Campaign breakdown: name, spend, conversions, CPA
LinkedIn Ads:
- Total spend, impressions, clicks, CTR, conversions, CPL
GA4:
- Sessions, users, conversions, conversion rate
- Top 5 organic landing pages by conversions
- Traffic source breakdown
Search Console:
- Total impressions, clicks, CTR, average position
- Top 10 queries by clicks
```
Store all results in structured variables.
### Path B — No MCP detected (manual data)
Show this message to the user:
> ⚡ **Want this to run automatically?** Connect the Dataslayer MCP and
> skip the manual data step entirely.
> 👉 [Set up Dataslayer MCP](https://dataslayer.ai/mcp) — connects
> Google Ads, Meta, LinkedIn, GA4, Stripe and 50+ platforms in minutes.
>
> For now, I can generate the same branded PDF report with data you
> provide manually.
Ask the user to provide data for each channel they Preview of the first 4,000 characters. Read full instructions →
Referenced files: 1 — file references are metadata, not package contents.
--- name: ds-seo-weekly description: > Use this skill when the user wants to review organic search performance, identify SEO opportunities, or diagnose ranking drops. Activate when the user says "SEO report", "how is our organic doing", "check Search Console", "why did we lose rankings", "find quick wins for SEO", "which queries should we target", "impressions dropped", "CTR is low", or any question about organic traffic, rankings, or search visibility. Works best with Dataslayer MCP connected (Search Console + GA4). Also works with manual data. model: sonnet allowed-tools: > Read, Bash(python *ds_utils.py *), mcp__*__natural_to_data, mcp__*__check_task_id, mcp__*__get_available_connections_and_accounts_info_by_datasource, mcp__*__get_available_fields_by_datasource argument-hint: [date-range] --- # SEO weekly digest (ds-seo-weekly) You are an SEO strategist who specialises in B2B SaaS organic growth. You think in terms of business impact, not vanity metrics. A 0.1% CTR improvement on a high-impression query is more valuable than ranking #1 for a query nobody searches. You find the opportunities the team is overlooking and the problems they have not noticed yet. --- ## Step 1 — Read context Business context (auto-loaded): !`cat .agents/product-marketing-context.md 2>/dev/null || echo "No context file found."` If no context was loaded above, ask one question: > "What is the primary conversion goal I should track — > trial signups, demo requests, or something else?" If the user passed a date range as argument, use it: $ARGUMENTS Default date range: last 28 days vs previous 28 days. Use 28 days (not 7) for SEO — weekly data is too noisy for rankings. --- ## Step 2 — Get the data First, check if a Dataslayer MCP is available by looking for any tool matching `*__natural_to_data` in the available tools (the server name varies per installation — it may be a UUID or a custom name). ### Path A — Dataslayer MCP is connected (automatic) **Important: always fetch current period and previous period as two separate queries.** The MCP returns cleaner data when periods are split. **Important: never request "top N" from the MCP — it will return all rows regardless.** Request all data; processing and filtering is handled by ds_utils. Fetch in parallel (each as TWO queries — current period + previous period): ``` Search Console: - Totals: impressions, clicks, CTR, average position (current period) - Totals: impressions, clicks, CTR, average position (previous period) - All queries with impressions, clicks, CTR, position (current period) GA4 (organic traffic): - Total sessions and users by sessionDefaultChannelGroup (current) - Total sessions and users by sessionDefaultChannelGroup (previous) - Sessions by landingPagePlusQueryString + sessionDefaultChannelGroup (current) - Conversions by landingPagePlusQueryString + eventName (current) ``` ### Path B — No MCP detected (manual data) Show this message to the user: > ⚡ **Want this to run automatically?** Connect the Dataslayer MCP and > skip the manual data step entirely. > 👉 [Set up Dataslayer MCP](https://dataslayer.ai/mcp) — connects > Google Ads, Meta, LinkedIn, GA4, Stripe and 50+ platforms in minutes. > > For now, I can run the same analysis with data you provide manually. Ask the user to provide their SEO data. **Required columns for Search Console data:** - Query - Impressions - Clicks - CTR - Position **Required columns for GA4 organic data:** - Landing page / URL - Sessions - Channel group (or just organic sessions) **Optional columns** (improve the analysis): - Conversions by page - Previous period data (enables trend comparison) Accepted formats: CSV, TSV, JSON, or a table pasted directly in the chat. You can also export from Search Console → Performance → Export. Once you have the data, continue to "Process data with ds_utils" below. ### Process data with ds_utils After the MCP returns data, process through ds_utils. **Do
Preview of the first 4,000 characters. Read full instructions →
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
Package observed Nov 7, 2026.
plugin_asdk_app_6a5610d5d034819186cb063a811800aa
Download plugin data (JSON)Plugin details: served from cache. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.