[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EFFR0CVRZA7KZQCHM99VZP":3,"skill-same:01M6EFFR0CVRZA7KZQCHM99VZP":129},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M6EFFR0CVRZA7KZQCHM99VZP","media-buying",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fmedia-buying\u002FSKILL.md",[],[18,19],"Media","media buying","2026-11-10 10:12:30",false,"# Media Buying\n\n## Overview\n\nPlan and execute paid media across programmatic, direct, and social channels. Optimize spend allocation, audience targeting, and cross-channel performance.\n\n## Instructions\n\n### Budget allocation framework\n\nAllocate budget across channels based on funnel stage:\n\n```\nAWARENESS (top of funnel) — 30-40% of budget\n├── Programmatic display (CPM $2-8)\n├── YouTube\u002FCTV (CPM $10-25)\n├── Podcast sponsorships (CPM $15-30)\n└── Influencer partnerships\n\nCONSIDERATION (middle) — 30-40%\n├── Paid social (Meta, TikTok, LinkedIn)\n├── Sponsored content \u002F native ads\n├── Retargeting display (CPM $3-12)\n└── Search non-brand keywords\n\nCONVERSION (bottom) — 20-30%\n├── Search brand keywords (highest ROAS)\n├── Retargeting (cart abandoners, high-intent)\n├── Email\u002FSMS (near-zero marginal cost)\n└── Affiliate partnerships (CPA-based)\n```\n\n### Media plan template\n\n```markdown\n## Media Plan — Q2 2026\n**Objective**: Generate 500 qualified leads at \u003C$80 CAC\n**Total Budget**: $40,000\u002Fmonth\n\n| Channel | Monthly Budget | Model | Target CPA | Expected Volume |\n|---------|---------------|-------|------------|-----------------|\n| Google Search (brand) | $5,000 | CPC | $25 | 200 leads |\n| Google Search (non-brand) | $8,000 | CPC | $65 | 123 leads |\n| Meta Ads | $12,000 | CPA | $90 | 133 leads |\n| LinkedIn Ads | $8,000 | CPC | $120 | 67 leads |\n| Programmatic Display | $4,000 | CPM | N\u002FA | 500K impressions |\n| Content syndication | $3,000 | CPL | $75 | 40 leads |\n```\n\n### Programmatic advertising (RTB)\n\n```\n1. User visits a webpage with ad space\n2. Publisher's SSP sends bid request to ad exchange (10ms)\n3. Ad exchange broadcasts to connected DSPs\n4. DSPs evaluate user data + campaign rules → submit bid (50ms)\n5. Highest bidder wins, ad is served (~100ms total)\n\nKey players:\n- DSP: Where advertisers buy (DV360, The Trade Desk, Amazon DSP)\n- SSP: Where publishers sell (Google Ad Manager, Magnite)\n- DMP: Audience data (Oracle, Lotame)\n```\n\n**DSP campaign structure**: Advertiser → Campaign → Insertion Order (by objective) → Line Item (by audience) → Creatives.\n\n### Targeting layers\n\n```\nAUDIENCE: First-party data, third-party (DMP), contextual, lookalike, intent signals\nINVENTORY: Domain allowlists\u002Fblocklists, app vs web, viewability (>70%), ad position\nENVIRONMENTAL: Geography, device, dayparting, frequency caps, browser\u002FOS\n```\n\n### Buying models\n\n```\nCPM  (Cost Per 1000 impressions): Awareness\u002Freach. Range: $2-50\nCPC  (Cost Per Click): Consideration\u002Ftraffic. Range: $0.50-15\nCPA  (Cost Per Acquisition): Performance\u002Fconversion. Range: $10-500\nCPV  (Cost Per View): Video campaigns. Range: $0.01-0.10\nCPL  (Cost Per Lead): B2B lead gen. Range: $20-200\n```\n\n### Brand safety\n\n```\nPre-bid: Domain allow\u002Fblocklists, category exclusions, keyword blocklists,\n         brand safety vendors (IAS, DoubleVerify, Oracle Moat)\nPost-bid: Viewability measurement (>50% pixels, >1 sec), IVT detection,\n          brand suitability scoring, placement reports\n```\n\n### Cross-channel optimization\n\n**Attribution windows**: Google 30-day click, Meta 7-day click \u002F 1-day view, LinkedIn 30-day click \u002F 7-day view, Programmatic 30-day click \u002F 14-day view.\n\n**Budget reallocation**: Review weekly. Move 10-20% from high-CPA to low-CPA channels, wait 7 days, remeasure. If CPA increases after budget increase, you've hit diminishing returns — pull back. Optimize for marginal CPA, not average CPA.\n\n### Negotiating direct deals\n\nFor premium placements (homepage takeovers, newsletter sponsorships, podcast ads): request rate card and negotiate 20-40% below, ask for added value (bonus impressions, social posts), request performance guarantees and historical data, negotiate cancellation terms, get makegood policy in writing.\n\n## Examples\n\n### Create a programmatic media plan\n\n```prompt\nWe're launching a B2B SaaS product targeting CTOs and VP Engineering at companies with 100-1000 employees. Budget is $25,000\u002Fmonth for programmatic display and video. Create a full media plan using DV360 — campaign structure, audience segments (first-party site visitors + third-party intent data), creative specs, frequency caps, and brand safety settings. Include a 4-week optimization timeline.\n```\n\n### Optimize cross-channel budget allocation\n\n```prompt\nWe run ads across Google Search ($15K\u002Fmo), Meta ($20K\u002Fmo), LinkedIn ($10K\u002Fmo), and programmatic display ($5K\u002Fmo). Our blended CPA is $95 but varies wildly by channel. Analyze the marginal CPA for each channel at different spend levels and recommend a reallocation to reduce blended CPA by 20%. Include the data I need to collect and the rebalancing schedule.\n```\n\n### Set up brand safety for programmatic campaigns\n\n```prompt\nWe're a financial services company running programmatic display across 500+ publisher sites. Set up comprehensive brand safety — domain allowlist of premium financial and business publishers, category exclusions, keyword blocklists specific to our industry, and viewability thresholds. Include a weekly audit process to catch new placement issues.\n```\n\n## Guidelines\n\n- Always set up brand safety (allowlists, blocklists, verification vendors) before launching programmatic campaigns\n- Optimize for marginal CPA, not average CPA — the next dollar should go to the cheapest conversion\n- Never reallocate more than 20% of a channel's budget in a single week to avoid resetting algorithmic learning\n- Use frequency caps to prevent ad fatigue (typically 3-5 impressions per user per day for display)\n- Always request historical performance data and makegood policies before signing direct deals\n- Review placement reports weekly to catch brand safety issues early\n- Include viewability thresholds (>70%) in all programmatic line items\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FTerminalSkills\u002Fskills\u002Fmedia-buying",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill media-buying",{"tool":39,"command":40},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill media-buying",{"tool":42,"command":43},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill media-buying","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fmedia-buying\u002FSKILL.md",true,[47,53,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},"customize.toml","OTHER","其他",4556,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fcustomize.toml",{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"gametest\u002Fknowledge\u002Fbalance-testing.md","REFERENCE","参考文档",5596,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fbalance-testing.md",{"path":60,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":61,"sourceHtmlUrl":62},"gametest\u002Fknowledge\u002Fcertification-testing.md",9967,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fcertification-testing.md",{"path":64,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":65,"sourceHtmlUrl":66},"gametest\u002Fknowledge\u002Fcompatibility-testing.md",5827,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fcompatibility-testing.md",{"path":68,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":69,"sourceHtmlUrl":70},"gametest\u002Fknowledge\u002Fe2e-testing.md",28479,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fe2e-testing.md",{"path":72,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":73,"sourceHtmlUrl":74},"gametest\u002Fknowledge\u002Fgodot-testing.md",23149,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fgodot-testing.md",{"path":76,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":77,"sourceHtmlUrl":78},"gametest\u002Fknowledge\u002Finput-testing.md",9071,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Finput-testing.md",{"path":80,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":81,"sourceHtmlUrl":82},"gametest\u002Fknowledge\u002Flocalization-testing.md",9521,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Flocalization-testing.md",{"path":84,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":85,"sourceHtmlUrl":86},"gametest\u002Fknowledge\u002Fmultiplayer-testing.md",9598,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fmultiplayer-testing.md",{"path":88,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":89,"sourceHtmlUrl":90},"gametest\u002Fknowledge\u002Fperformance-testing.md",5168,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fperformance-testing.md",{"path":92,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":93,"sourceHtmlUrl":94},"gametest\u002Fknowledge\u002Fplaytesting.md",9706,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fplaytesting.md",{"path":96,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":97,"sourceHtmlUrl":98},"gametest\u002Fknowledge\u002Fqa-automation.md",4690,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fqa-automation.md",{"path":100,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":101,"sourceHtmlUrl":102},"gametest\u002Fknowledge\u002Fregression-testing.md",5652,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fregression-testing.md",{"path":104,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":105,"sourceHtmlUrl":106},"gametest\u002Fknowledge\u002Fsave-testing.md",8172,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fsave-testing.md",{"path":108,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":109,"sourceHtmlUrl":110},"gametest\u002Fknowledge\u002Fsmoke-testing.md",10994,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Fsmoke-testing.md",{"path":112,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":113,"sourceHtmlUrl":114},"gametest\u002Fknowledge\u002Ftest-priorities.md",9072,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Ftest-priorities.md",{"path":116,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":117,"sourceHtmlUrl":118},"gametest\u002Fknowledge\u002Funity-testing.md",9262,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Funity-testing.md",{"path":120,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":121,"sourceHtmlUrl":122},"gametest\u002Fknowledge\u002Funreal-testing.md",38856,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fknowledge\u002Funreal-testing.md",{"path":124,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":127,"sourceHtmlUrl":128},"gametest\u002Fqa-index.csv","ASSET","资产文件",2734,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.qoder\u002Fskills\u002Fgds-agent-game-dev\u002Fgametest\u002Fqa-index.csv",[130,144,154,163,169,176],{"skillNo":131,"name":132,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":140,"publishedAt":20},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[135],{"categoryNo":136,"categoryName":137,"taxonomyType":138,"taxonomyTypeDesc":139},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[141,142,143],"model","model hierarchy","model hierarchy skill",{"skillNo":145,"name":146,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":150,"publishedAt":20},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[149],{"categoryNo":136,"categoryName":137,"taxonomyType":138,"taxonomyTypeDesc":139},[151,152,153],"MCP","zoom","zoom mcp",{"skillNo":155,"name":156,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":20},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[160,161,162,152],"sdk","zoom apps sdk","apps",{"skillNo":164,"name":165,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":20},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[165],{"skillNo":170,"name":171,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":175,"publishedAt":20},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[174],{"categoryNo":136,"categoryName":137,"taxonomyType":138,"taxonomyTypeDesc":139},[171],{"skillNo":177,"name":178,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":20},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[178]]