{"id":"961f2e59-4b59-4771-8a51-ea5f36dfe408","shortId":"PqMpYR","kind":"skill","title":"ds-content-perf","tagline":"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","description":"# Content performance analysis (ds-content-perf)\n\nYou are a content strategist who connects content output to business outcomes.\nYou do not measure success by pageviews. You measure it by whether content\nmoves people through the funnel — from discovery to trial to paid. You\nseparate content that looks good in a dashboard from content that actually\ndrives the business.\n\n---\n\n## Step 1 — Read context\n\nBusiness context (auto-loaded):\n!`cat .agents/product-marketing-context.md 2>/dev/null || echo \"No context file found.\"`\n\nPay particular attention to:\n- The primary conversion goal (trial signup, demo, etc.)\n- The audience (ICP) — informational content targeting the wrong audience\n  is a common problem worth flagging\n- Any known editorial strategy (informational vs conversion-focused content)\n\nIf no context was loaded above, ask:\n> \"What is the conversion event I should track — trial signups, demo\n> requests, or something else? And do you have a target conversion\n> rate for blog content?\"\n\nIf the user passed a date range as argument, use it: $ARGUMENTS\nDefault date range: last 90 days vs previous 90 days. Content performance\nneeds more time than paid campaigns to show meaningful patterns.\n\n---\n\n## Step 2 — Get the data\n\nFirst, check if a Dataslayer MCP is available by looking for any tool\nmatching `*__natural_to_data` in the available tools (the server name\nvaries per installation — it may be a UUID or a custom name).\n\n### Path A — Dataslayer MCP is connected (automatic)\n\n**Important: always fetch current period and previous period as two separate\nqueries.** The MCP returns cleaner data when periods are split. Calculate\n% change yourself after receiving both.\n\n**Important: the MCP returns all rows regardless of any \"top N\" request.**\nRequest all data and filter/sort locally using bash/python after receiving\nthe saved file.\n\nFetch in parallel (each as TWO queries — current period + previous period):\n\n```\nGA4:\n  - All blog/content pages: sessions grouped by\n    landingPagePlusQueryString AND sessionDefaultChannelGroup\n    → This gives you both the page-level totals and the traffic source\n      breakdown in a single query.\n\n  - Conversions: sessions grouped by landingPagePlusQueryString AND\n    eventName, filtered to pages containing /blog/.\n\nSearch Console:\n  - All pages with impressions, clicks, CTR, average position\n    filtered to pages containing /blog/\n```\n\n### Path B — No MCP detected (manual data)\n\nShow this message to the user:\n\n> ⚡ **Want this to run automatically?** Connect the Dataslayer MCP and\n> skip the manual data step entirely.\n> 👉 [Set up Dataslayer MCP](https://dataslayer.ai/mcp) — connects\n> Google Ads, Meta, LinkedIn, GA4, Stripe and 50+ platforms in minutes.\n>\n> For now, I can run the same analysis with data you provide manually.\n\nAsk the user to provide their content/blog performance data.\n\n**Required columns for GA4 data:**\n- Landing page / URL (blog pages)\n- Sessions\n- Channel group (organic, paid, direct, referral)\n\n**Optional columns** (improve the analysis):\n- Conversions by page and event name\n- Previous period data (enables trend comparison)\n- Search Console data: page URL, impressions, clicks, CTR, position\n\nAccepted formats: CSV, TSV, JSON, or a table pasted directly in the chat.\nExport from GA4 → Explore → Free form, or from Looker Studio.\n\nOnce you have the data, continue to \"Process data with ds_utils\" below.\n\n### Process data with ds_utils\n\nAfter the MCP returns data (saved as JSON/TSV files), process everything\nthrough the shared utility library. **Do not write inline processing\nscripts.** Use the tested, deterministic functions in ds_utils:\n\n```bash\n# 1. Process GA4 pages — strips UTMs, aggregates by clean URL,\n#    splits organic/paid/referral/direct, excludes app paths\npython \"${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py\" process-ga4-pages <ga4_sessions_file> <ga4_conversions_file>\n# Output: JSON with pages[], classification (organic_stars, zombies,\n#         hidden_gems, traffic_no_conv), and summary\n\n# 2. Detect the right conversion event (sign_up → generate_lead → begin_trial → form_submit)\npython \"${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py\" detect-conversion <ga4_conversions_file>\n# Output: JSON with selected_event, fallback_used, warning\n\n# 3. Validate MCP results before analysing\npython \"${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py\" validate <file> ga4\npython \"${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py\" validate <file> search_console\n\n# 4. Compare current vs previous period\npython \"${CLAUDE_SKILL_DIR}/../../scripts/ds_utils.py\" compare-periods '{\"sessions\":X,\"conversions\":Y}' '{\"sessions\":X2,\"conversions\":Y2}'\n# Output: JSON with direction (up/down/flat) and pct_change for each metric\n```\n\nThe `process-ga4-pages` command handles everything that was previously done\nmanually: UTM stripping, URL aggregation, app path exclusion, organic vs\npaid session splitting, and content classification. The JSON output is\ndeterministic — same input always produces the same output.\n\n**Critical distinction:** A page with 90% paid traffic and high conversion\nrate is a good landing page for ads, not a good content page. The\n`process-ga4-pages` output includes `organic_pct` and `paid_pct` per page.\nA true content \"star\" must have >50% organic traffic — this threshold is\nenforced by `classify_content` in ds_utils.\n\n---\n\n## Step 3 — Classify content by performance type\n\nBefore writing the report, sort all content pages into four categories:\n\n**Category 1 — Organic stars**\nHigh organic traffic (above 200 sessions) AND high conversion rate (above 2%).\nThese are working exactly as intended. Understand why and replicate.\n**Exclude pages where 80%+ of traffic comes from paid** — those are ad\nlanding pages, not content wins. Report them separately if notable.\n\n**Category 2 — Traffic without conversion**\nHigh traffic (above 200 sessions) AND low conversion rate (below 0.5%).\nEither informational intent (visitors are not ready to buy) or\nthe CTA is wrong for the audience. Most content ends up here.\n\n**Category 3 — Conversion without traffic**\nLow traffic (below 500 sessions) AND high conversion rate (above 3%)\nAND at least 1 conversion.\nHidden gems. These pages convert well when they get a visitor —\nthey just need more of them. SEO or internal linking opportunity.\nNote: with very low session counts (under 30), conversion rates are\nnot statistically significant — flag this but still report the pattern.\n\n**Category 4 — Zombies**\nPages with fewer than 50 sessions AND 0 conversions in the full period.\nCount these as a group — do not list them individually. Report:\n- Total zombie pages and what % of the blog they represent\n- The 5 most actionable zombies (pages that *should* perform based on\n  topic relevance but are not — e.g., competitor comparisons, product\n  guides that got no traction)\n\n---\n\n## Step 4 — Write the report\n\n---\n\n### Content performance report — [date range]\n\n**One-line summary:** [The single most important finding about how content\nis (or is not) driving the business.]\n\n---\n\n#### Overall content health\n\n| Metric | This period | Previous period | Change |\n|--------|------------|-----------------|--------|\n| Total content pages analysed | | | |\n| Total sessions to content | | | |\n| Organic sessions to content | | | |\n| Paid sessions to content | | | |\n| Organic % of total sessions | | | |\n| Conversions (event name used) | | | |\n| Organic conversion rate | | | |\n| Zombie pages (< 50 sessions, 0 conv.) | | | |\n\n---\n\n#### Paid landing pages vs organic content (source split)\n\nBefore the category breakdown, report the overall traffic source mix:\n\n| Source | Sessions | % of blog total | Conversions | Conv. rate |\n|--------|----------|-----------------|-------------|------------|\n| Organic Search | | | | |\n| Paid (Cross-network + Paid Search) | | | | |\n| Referral | | | | |\n| Direct | | | | |\n| Other | | | | |\n\nIf paid traffic represents more than 30% of blog sessions, add a callout:\n> \"⚠️ The blog depends on paid traffic for [X]% of sessions. Content\n> performance metrics below are split by source to avoid conflating\n> paid landing page results with organic content performance.\"\n\n---\n\n#### Organic stars — content that drives conversions from search\n\n| Page | Organic sessions | Total sessions | Conversions | Conv. rate | Top query |\n|------|-----------------|----------------|-------------|------------|-----------|\n| (top 5 by conversions where organic > 50% of sessions) | | | | | |\n\nIf no pages qualify as organic stars (organic > 50% of sessions AND\nconv. rate > 2%), state this explicitly — it is a critical finding that\nmeans the blog has no organically-converting content.\n\n**What they have in common:**\nOne paragraph identifying the pattern — topic type, content format,\nfunnel stage, CTA type, or search intent. This is the replication playbook.\n\nIf the only \"stars\" are paid-traffic landing pages, report them in a\nseparate mini-table and note: \"These pages convert well but depend on\nad spend. They are campaign assets, not content assets.\"\n\n---\n\n#### Traffic without conversion — high-traffic pages not converting\n\n| Page | Sessions | Conversions | Conv. rate | Intent diagnosis |\n|------|----------|-------------|------------|-----------------|\n| (top 5 by sessions with conv. rate below 1%) | | | | |\n\nFor each page, diagnose the intent:\n- **Informational** — searcher wants to learn, not buy. The page is\n  doing its job. Consider a softer CTA (newsletter, resource download).\n- **Misaligned audience** — traffic is coming from the wrong ICP.\n  Check the top queries driving traffic to this page.\n- **CTA failure** — intent is right but the conversion mechanism is weak.\n  The page needs a better offer or placement.\n\n---\n\n#### Hidden gems — pages that convert but lack traffic\n\n| Page | Sessions | Conversions | Conv. rate | Opportunity |\n|------|----------|-------------|------------|-------------|\n| (pages with conv. rate above 3% and sessions below 500) | | | | |\n\nFor each, recommend one specific action to drive more traffic:\n- Internal linking from high-traffic pages on related topics\n- Search Console position check — is it ranking page 2 for a good query?\n- Promotion via email or LinkedIn\n\n---\n\n#### Zombie audit — content that is not working\n\nFirst, report the zombie summary:\n\n> **X of Y blog pages (Z%) are zombies** — fewer than 50 sessions and\n> 0 conversions in 90 days. [One sentence on what this means for the blog.]\n\nThen list the 5 most actionable zombies:\n\n| Page | Sessions | Recommendation |\n|------|----------|----------------|\n| (5 zombies where the topic *should* work for the business) | | |\n\nRecommendation options: update, consolidate with another post,\nredirect to a better-performing page, or remove.\nGive one specific recommendation per page, not a generic audit note.\n\nPrioritise zombies that cover topics related to the product or ICP\n(competitor comparisons, integration guides, use cases) over zombies\nthat were always off-topic (trending news, general tips).\n\n---\n\n#### What to create next\n\nBased on the data, recommend one to two content pieces to produce\nin the next sprint. For each:\n- The topic and target query\n- Why this gap exists (low competition, high intent, related to a star)\n- The conversion mechanic to include (which CTA, which offer)\n\nDo not recommend content just because a topic is trending.\nBase it on what the data shows converts.\n\n---\n\n#### This period's insight\n\nOne paragraph. The single most actionable thing the content team\nshould change about their strategy based on this data.\n\nBe specific. \"Publish more conversion-focused content\" is not an insight.\n\"Your top 3 converting posts are all comparison pages targeting\n'[product] alternative' queries — you have no comparison content\nfor your two largest competitors\" is an insight.\n\n---\n\n## Tone and output rules\n\n- Conversion rate for blog content benchmarks: below 0.5% is low,\n  0.5%–2% is average, above 2% is strong for B2B SaaS.\n- Never recommend publishing more content as the answer.\n  The answer is always publishing the right content.\n- If GA4 conversion tracking is incomplete or missing, flag it\n  prominently — the entire analysis depends on it.\n- Write in the same language the user is using.\n- Keep recommendations specific enough that someone can act on them\n  tomorrow morning without asking a follow-up question.\n- When the MCP saves results to a file (large datasets), process through\n  ds_utils — it handles both JSON and TSV formats automatically.\n  Never skip analysis because the file is too large.\n- UTM stripping, URL aggregation, and organic/paid splitting are handled\n  by `process-ga4-pages` in ds_utils. Do not write inline scripts for this.\n- A \"star\" that only converts paid traffic is an ad landing page, not\n  a content win. The `classify_content` function in ds_utils enforces\n  the >50% organic threshold for stars automatically.\n\n---\n\n## Related skills\n\n- `ds-seo-weekly` — for query-level organic analysis\n- `ds-channel-report` — for the full cross-channel picture\n- `ds-churn-signals` — to check if low-quality content is attracting\n  users who are not a good fit for the product","tags":["content","perf","marketing","skills","dataslayer-ai","agent-skills","analytics","claude-code","mcp","paid-media","seo"],"capabilities":["skill","source-dataslayer-ai","skill-ds-content-perf","topic-agent-skills","topic-analytics","topic-claude-code","topic-marketing","topic-mcp","topic-paid-media","topic-seo"],"categories":["Marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Dataslayer-AI/Marketing-skills/ds-content-perf","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Dataslayer-AI/Marketing-skills","source_repo":"https://github.com/Dataslayer-AI/Marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (13,124 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T01:03:50.177Z","embedding":null,"createdAt":"2026-04-23T13:04:25.289Z","updatedAt":"2026-04-24T01:03:50.177Z","lastSeenAt":"2026-04-24T01:03:50.177Z","tsv":"'/../../scripts/ds_utils.py':601,639,661,668,682 '/blog':381,396 '/dev/null':121 '/mcp)':432 '0':980,1101,1479 '0.5':883,1707,1710 '1':110,582,821,925,1328 '2':120,232,621,835,869,1223,1444,1711,1715 '200':828,876 '3':651,803,907,921,1411,1672 '30':956,1146 '4':672,971,1033 '5':1008,1201,1321,1496,1503 '50':441,789,977,1099,1206,1217,1476,1862 '500':914,1415 '80':849 '90':213,217,750,1482 'accept':510 'act':1770 'action':1010,1421,1498,1644 'activ':28 'actual':105 'ad':435,763,857,1295,1846 'add':1150 'agents/product-marketing-context.md':119 'aggreg':588,721,1816 'altern':1681 'alway':280,740,1561,1732 'analys':656,1073 'analysi':52,452,488,1750,1806,1879 'anoth':1518 'answer':1728,1730 'app':595,722 'argument':205,208 'ask':170,458,1776 'asset':1300,1303 'attent':129 'attract':1903 'audienc':140,147,900,1356 'audit':1455,1538 'auto':116 'auto-load':115 'automat':278,414,1803,1867 'avail':243,255 'averag':390,1713 'avoid':1172 'b':398 'b2b':1719 'base':1016,1573,1627,1654 'bash':581 'bash/python':325 'begin':631 'benchmark':1705 'better':1388,1524 'better-perform':1523 'blog':16,36,195,475,1004,1124,1148,1154,1235,1469,1492,1703 'blog/content':344 'breakdown':365,1114 'busi':67,108,113,1060,1512 'buy':892,1341 'calcul':300 'callout':1152 'campaign':226,1299 'case':1556 'cat':118 'categori':819,820,868,906,970,1113 'chang':301,701,1069,1650 'channel':478,1882,1889 'chat':522 'check':237,1364,1439,1896 'churn':1893 'classif':610,732 'classifi':797,804,1854 'claud':598,636,658,665,679 'clean':590 'cleaner':294 'click':388,507 'column':468,485 'come':852,1359 'command':710 'common':150,1246 'compar':673,684 'compare-period':683 'comparison':500,1025,1552,1677,1686 'competit':1601 'competitor':1024,1551,1692 'conflat':1173 'connect':63,277,415,433 'consid':1348 'consol':383,502,671,1437 'consolid':1516 'contain':380,395 'content':3,18,43,47,50,55,60,64,81,95,103,143,163,196,219,731,767,785,798,805,815,861,902,1037,1053,1062,1071,1077,1081,1085,1108,1163,1180,1184,1241,1254,1302,1456,1581,1620,1647,1665,1687,1704,1725,1736,1851,1855,1901 'content/blog':464 'context':112,114,124,166 'continu':538 'conv':618,1102,1127,1196,1221,1316,1325,1403,1408 'convers':27,133,161,174,192,370,489,625,642,688,692,755,832,872,880,908,918,926,957,981,1090,1095,1126,1187,1195,1203,1306,1315,1380,1402,1480,1609,1663,1700,1739 'conversion-focus':160,1662 'convert':931,1240,1290,1312,1396,1634,1673,1841 'count':954,986 'cover':1543 'creat':1571 'critic':745,1230 'cross':1133,1888 'cross-channel':1887 'cross-network':1132 'csv':512 'cta':895,1258,1351,1373,1614 'ctr':389,508 'current':282,338,674 'custom':270 'dashboard':101 'data':235,252,295,320,403,423,454,466,471,497,503,537,541,547,555,1576,1632,1657 'dataset':1791 'dataslay':240,274,417,428 'dataslayer.ai':431 'dataslayer.ai/mcp)':430 'date':202,210,1040 'day':214,218,1483 'default':209 'demo':137,181 'depend':1155,1293,1751 'detect':401,622,641 'detect-convers':640 'determinist':576,737 'diagnos':1332 'diagnosi':1319 'dir':600,638,660,667,681 'direct':482,519,697,1138 'discoveri':88 'distinct':746 'done':716 'download':1354 'drive':41,106,1058,1186,1368,1423 'ds':2,54,543,549,579,800,1794,1828,1858,1871,1881,1892 'ds-channel-report':1880 'ds-churn-sign':1891 'ds-content-perf':1,53 'ds-seo-week':1870 'e.g':1023 'echo':122 'editori':156 'either':884 'els':185 'email':1451 'enabl':498 'end':903 'enforc':795,1860 'engag':25 'enough':1766 'entir':425,1749 'etc':138 'event':175,493,626,647,1091 'eventnam':376 'everyth':561,712 'exact':839 'exclud':594,846 'exclus':724 'exist':1599 'explicit':1226 'explor':526 'export':523 'failur':1374 'fallback':648 'fetch':281,331 'fewer':975,1474 'file':125,330,559,1789,1809 'filter':377,392 'filter/sort':322 'find':1050,1231 'first':236,1461 'fit':1910 'flag':153,963,1745 'focus':162,1664 'follow':1779 'follow-up':1778 'form':528,633 'format':511,1255,1802 'found':126 'four':818 'free':527 'full':984,1886 'function':577,1856 'funnel':86,1256 'ga4':342,438,470,525,584,604,663,708,772,1738,1825 'gap':1598 'gem':615,928,1393 'general':1567 'generat':629 'generic':1537 'get':233,935 'give':353,1529 'goal':134 'good':98,759,766,1447,1909 'googl':434 'got':1029 'group':347,372,479,990 'guid':1027,1554 'handl':711,1797,1821 'health':1063 'hidden':614,927,1392 'high':754,824,831,873,917,1308,1430,1602 'high-traff':1307,1429 'icp':141,1363,1550 'identifi':1249 'import':279,306,1049 'impress':387,506 'improv':486 'includ':775,1612 'incomplet':1742 'individu':995 'inform':142,158,885,1335 'inlin':570,1833 'input':739 'insight':1638,1669,1695 'instal':262 'integr':1553 'intend':841 'intent':886,1262,1318,1334,1375,1603 'intern':946,1426 'job':1347 'json':514,607,644,695,734,1799 'json/tsv':558 'keep':1763 'known':155 'lack':1398 'land':472,760,858,1104,1175,1276,1847 'landingpageplusquerystr':349,374 'languag':1758 'larg':1790,1812 'largest':1691 'last':212 'lead':630 'learn':1339 'least':924 'level':359,1877 'librari':566 'line':1044 'link':947,1427 'linkedin':437,1453 'list':993,1494 'load':117,168 'local':323 'look':97,245 'looker':531 'low':879,911,952,1600,1709,1899 'low-qual':1898 'manual':402,422,457,717 'match':249 'may':264 'mcp':241,275,292,308,400,418,429,553,653,1784 'mean':1233,1489 'meaning':229 'measur':72,77 'mechan':1381,1610 'messag':406 'meta':436 'metric':704,1064,1165 'mini':1284 'mini-t':1283 'minut':444 'misalign':1355 'miss':1744 'mix':1120 'morn':1774 'move':82 'must':787 'n':316 'name':259,271,494,1092 'natur':250 'need':221,940,1386 'network':1134 'never':1721,1804 'news':1566 'newslett':1352 'next':1572,1587 'notabl':867 'note':949,1287,1539 'off-top':1562 'offer':1389,1616 'one':1043,1247,1419,1484,1530,1578,1639 'one-lin':1042 'opportun':948,1405 'option':484,1514 'organ':480,611,725,776,790,822,825,1078,1086,1094,1107,1129,1179,1182,1191,1205,1214,1216,1239,1863,1878 'organic/paid':1818 'organic/paid/referral/direct':593 'organically-convert':1238 'outcom':68 'output':65,606,643,694,735,744,774,1698 'overal':1061,1117 'page':345,358,379,385,394,473,476,491,504,585,605,609,709,748,761,768,773,782,816,847,859,930,973,999,1012,1072,1098,1105,1176,1190,1211,1277,1289,1310,1313,1331,1343,1372,1385,1394,1400,1406,1432,1443,1470,1500,1526,1534,1678,1826,1848 'page-level':357 'pageview':75 'paid':92,225,481,727,751,779,854,1082,1103,1131,1135,1141,1157,1174,1274,1842 'paid-traff':1273 'paragraph':1248,1640 'parallel':333 'particular':128 'pass':200 'past':518 'path':272,397,596,723 'pattern':230,969,1251 'pay':127 'pct':700,777,780 'peopl':83 'per':261,781,1533 'perf':4,56 'perform':20,44,51,220,465,807,1015,1038,1164,1181,1525 'period':283,286,297,339,341,496,677,685,985,1066,1068,1636 'pictur':1890 'piec':1582 'placement':1391 'platform':442 'playbook':1267 'posit':391,509,1438 'post':39,1519,1674 'previous':216,285,340,495,676,715,1067 'primari':132 'prioritis':1540 'problem':151 'process':540,546,560,571,583,603,707,771,1792,1824 'process-ga4-pages':602,706,770,1823 'produc':741,1584 'product':1026,1548,1680,1913 'promin':1747 'promot':1449 'provid':456,462 'publish':1660,1723,1733 'python':597,635,657,664,678 'qualifi':1212 'qualiti':1900 'queri':290,337,369,1199,1367,1448,1595,1682,1876 'query-level':1875 'question':1781 'rang':203,211,1041 'rank':1442 'rate':193,756,833,881,919,958,1096,1128,1197,1222,1317,1326,1404,1409,1701 'read':111 'readi':890 'receiv':304,327 'recommend':1418,1502,1513,1532,1577,1619,1722,1764 'redirect':1520 'referr':483,1137 'regardless':312 'relat':1434,1545,1604,1868 'relev':1019 'remov':1528 'replic':845,1266 'report':812,863,967,996,1036,1039,1115,1278,1462,1883 'repres':1006,1143 'request':182,317,318 'requir':467 'resourc':1353 'result':654,1177,1786 'return':293,309,554 'right':624,1377,1735 'row':311 'rule':1699 'run':413,449 'saa':1720 'save':329,556,1785 'say':32 'script':572,1834 'search':382,501,670,1130,1136,1189,1261,1436 'searcher':1336 'select':646 'sentenc':1485 'seo':944,1872 'separ':94,289,865,1282 'server':258 'session':346,371,477,686,690,728,829,877,915,953,978,1075,1079,1083,1089,1100,1122,1149,1162,1192,1194,1208,1219,1314,1323,1401,1413,1477,1501 'sessiondefaultchannelgroup':351 'set':426 'share':564 'show':228,404,1633 'sign':627 'signal':1894 'signific':962 'signup':136,180 'singl':368,1047,1642 'skill':7,599,637,659,666,680,1869 'skill-ds-content-perf' 'skip':420,1805 'softer':1350 'someon':1768 'someth':184 'sort':813 'sourc':364,1109,1119,1121,1170 'source-dataslayer-ai' 'specif':1420,1531,1659,1765 'spend':1296 'split':299,592,729,1110,1168,1819 'sprint':1588 'stage':1257 'star':612,786,823,1183,1215,1271,1607,1838,1866 'state':1224 'statist':961 'step':109,231,424,802,1032 'still':966 'strategi':157,1653 'strategist':61 'strip':586,719,1814 'stripe':439 'strong':1717 'studio':532 'submit':634 'success':73 'summari':620,1045,1465 'tabl':517,1285 'target':144,191,1594,1679 'team':1648 'term':22 'test':575 'thing':1645 'threshold':793,1864 'time':223 'tip':1568 'tomorrow':1773 'tone':1696 'tool':248,256 'top':315,1198,1200,1320,1366,1671 'topic':1018,1252,1435,1507,1544,1564,1592,1624 'topic-agent-skills' 'topic-analytics' 'topic-claude-code' 'topic-marketing' 'topic-mcp' 'topic-paid-media' 'topic-seo' 'total':360,997,1070,1074,1088,1125,1193 'track':178,1740 'traction':1031 'traffic':24,363,616,752,791,826,851,870,874,910,912,1118,1142,1158,1275,1304,1309,1357,1369,1399,1425,1431,1843 'trend':499,1565,1626 'trial':42,90,135,179,632 'true':784 'tsv':513,1801 'two':288,336,1580,1690 'type':808,1253,1259 'understand':13,842 'up/down/flat':698 'updat':1515 'url':474,505,591,720,1815 'use':5,206,324,573,649,1093,1555,1762 'user':10,31,199,409,460,1760,1904 'util':544,550,565,580,801,1795,1829,1859 'utm':587,718,1813 'uuid':267 'valid':652,662,669 'vari':260 'via':1450 'visitor':887,937 'vs':159,215,675,726,1106 'want':11,410,1337 'warn':650 'weak':1383 'week':1873 'well':932,1291 'whether':80 'win':862,1852 'without':871,909,1305,1775 'work':48,838,1460,1509 'worth':152 'write':569,810,1034,1754,1832 'wrong':146,897,1362 'x':687,1160,1466 'x2':691 'y':689,1468 'y2':693 'z':1471 'zombi':613,972,998,1011,1097,1454,1464,1473,1499,1504,1541,1558","prices":[{"id":"8b75e36b-7d9e-4309-a134-a4481fa94c37","listingId":"961f2e59-4b59-4771-8a51-ea5f36dfe408","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Dataslayer-AI","category":"Marketing-skills","install_from":"skills.sh"},"createdAt":"2026-04-23T13:04:25.289Z"}],"sources":[{"listingId":"961f2e59-4b59-4771-8a51-ea5f36dfe408","source":"github","sourceId":"Dataslayer-AI/Marketing-skills/ds-content-perf","sourceUrl":"https://github.com/Dataslayer-AI/Marketing-skills/tree/main/skills/ds-content-perf","isPrimary":false,"firstSeenAt":"2026-04-23T13:04:25.289Z","lastSeenAt":"2026-04-24T01:03:50.177Z"}],"details":{"listingId":"961f2e59-4b59-4771-8a51-ea5f36dfe408","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Dataslayer-AI","slug":"ds-content-perf","github":{"repo":"Dataslayer-AI/Marketing-skills","stars":9,"topics":["agent-skills","analytics","claude-code","marketing","mcp","paid-media","seo"],"license":"mit","html_url":"https://github.com/Dataslayer-AI/Marketing-skills","pushed_at":"2026-03-23T15:50:29Z","description":"Marketing agent skills powered by real data. Connect Claude Code to your actual Google Ads, GA4, Search Console, Meta Ads, LinkedIn Ads and 50+ platforms via Dataslayer MCP — no copy-pasting required.","skill_md_sha":"19ce4107293d3b707688fc208c837d94ffb1fd5c","skill_md_path":"skills/ds-content-perf/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Dataslayer-AI/Marketing-skills/tree/main/skills/ds-content-perf"},"layout":"multi","source":"github","category":"Marketing-skills","frontmatter":{"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."},"skills_sh_url":"https://skills.sh/Dataslayer-AI/Marketing-skills/ds-content-perf"},"updatedAt":"2026-04-24T01:03:50.177Z"}}