[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7AFP5ES1P7N0572A81JNETJ":3,"skill-same:01M7AFP5ES1P7N0572A81JNETJ":55},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M7AFP5ES1P7N0572A81JNETJ","geo-report-pdf",null,"Generate a professional PDF report from a GEO audit using pandoc + Chrome headless. Converts GEO-AUDIT-REPORT.md into a styled, client-ready PDF with a cover page, color-coded score tables, severity-tagged findings, and a 90-day roadmap.","iamwaqargulzar\u002FMarketing-Agent-OS","iamwaqargulzar","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96654715?v=4","01M7ACMBN0TACNXY53QYG8KDF6","Waqar Gulzar","01M7ACMBNP5ZX60H8CD3JK0633",8,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-c\u002Fskills\u002Fgeo-report-pdf\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: geo-report-pdf\ndescription: Generate a professional PDF report from a GEO audit using pandoc + Chrome headless. Converts GEO-AUDIT-REPORT.md into a styled, client-ready PDF with a cover page, color-coded score tables, severity-tagged findings, and a 90-day roadmap.\nversion: 2.0.0\nauthor: geo-seo-claude\ntags: [geo, pdf, report, client-deliverable, professional]\nallowed-tools: Read, Grep, Glob, Bash, Write\n---\n\n# GEO PDF Report Generator (pandoc pipeline)\n\n## Prerequisites\n\n- **pandoc** — `brew install pandoc`\n- **Google Chrome** — must be installed at `\u002FApplications\u002FGoogle Chrome.app\u002F`\n\nNo Python dependencies. No ReportLab. No JSON data wrangling.\n\n## How It Works\n\n1. Read `GEO-AUDIT-REPORT.md` in the current directory (created by `\u002Fgeo audit`)\n2. Extract cover metadata from the report (brand name, domain, GEO score, date, locations)\n3. Run `pandoc` with the bundled CSS + HTML template to produce a self-contained `GEO-REPORT.html`\n4. Run Chrome headless to print the HTML to `GEO-REPORT.pdf`\n\nThe pandoc template (`~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-template.html`) injects:\n- A full-bleed dark navy cover section with the GEO score badge\n- Per-section cover metadata (date, business type, locations, platform)\n- JavaScript that runs inside Chrome before printing to color-code score cells and severity-tag finding sections\n\n## Workflow\n\n### Step 1: Check for audit report\n\nLook for `GEO-AUDIT-REPORT.md` in the current directory. If absent, tell the user to run `\u002Fgeo audit \u003Curl>` first.\n\n### Step 2: Extract cover metadata from the report\n\nRead the top of `GEO-AUDIT-REPORT.md` and extract:\n\n| Field | Where to find it |\n|---|---|\n| `brand_name` | First H1 title (after \"GEO Audit Report:\") |\n| `domain` | Second bold line (e.g. `**Domain:** alexamediasolutions.com`) |\n| `geo_score` | Line matching `## Overall GEO Score: XX \u002F 100` |\n| `score_label` | Word after the score on that same line (e.g. \"Poor\", \"Fair\", \"Good\") |\n| `date` | `**Audit Date:**` line |\n| `business_type` | `**Business Type:**` line |\n| `locations` | `**Locations:**` line |\n| `platform` | `**CMS:**` line |\n\n### Step 3: Run pandoc\n\n```bash\npandoc GEO-AUDIT-REPORT.md \\\n  --to html5 \\\n  --standalone \\\n  --embed-resources \\\n  --template ~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-template.html \\\n  --css ~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-style.css \\\n  --metadata title=\"GEO Audit Report — \u003Cbrand_name>\" \\\n  --metadata brand_name=\"\u003Cbrand_name>\" \\\n  --metadata domain=\"\u003Cdomain>\" \\\n  --metadata geo_score=\"\u003Cgeo_score>\" \\\n  --metadata score_label=\"\u003Cscore_label>\" \\\n  --metadata date=\"\u003Cdate>\" \\\n  --metadata business_type=\"\u003Cbusiness_type>\" \\\n  --metadata locations=\"\u003Clocations>\" \\\n  --metadata platform=\"\u003Cplatform>\" \\\n  -o GEO-REPORT.html\n```\n\nReplace `\u003Cfield>` placeholders with values extracted in Step 2. If a field is not found in the report, omit that `--metadata` flag — the template has sensible defaults.\n\n### Step 4: Run Chrome headless\n\n```bash\n\"\u002FApplications\u002FGoogle Chrome.app\u002FContents\u002FMacOS\u002FGoogle Chrome\" \\\n  --headless=new \\\n  --disable-gpu \\\n  --no-sandbox \\\n  --print-to-pdf=\"$(pwd)\u002FGEO-REPORT.pdf\" \\\n  --print-to-pdf-no-header \\\n  --no-pdf-header-footer \\\n  --virtual-time-budget=5000 \\\n  \"file:\u002F\u002F$(pwd)\u002FGEO-REPORT.html\"\n```\n\n### Step 5: Report completion\n\nTell the user:\n- `GEO-REPORT.pdf` was generated in the current directory\n- File size\n- Optionally: `open GEO-REPORT.pdf` to preview it\n\n## What the PDF Contains\n\n- **Cover page** — Dark navy gradient, brand name, domain, GEO score badge (colored by score), audit date, business type, locations, CMS platform\n- **Score tables** — Cells containing `XX\u002F100` are color-coded: ≥80 green, ≥65 blue, ≥50 amber, ≥35 orange, \u003C35 red\n- **Finding sections** — `h3` headings containing \"Critical \u002F High \u002F Medium \u002F Low\" get severity-colored left-border callout blocks (red \u002F orange \u002F yellow \u002F green)\n- **Section page breaks** — Major sections (High Priority, 90-Day Roadmap, Component Score Summary, Generated Schema) break to new pages automatically\n- **Code blocks** — JSON schema templates render with dark theme monospace styling\n- **Page footer** — Brand name · GEO Audit · date + page numbers (via CSS `@page`)\n\n## Customizing the Report\n\n- **Colors \u002F typography** — Edit `~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-style.css`\n- **Cover layout** — Edit `~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-template.html`\n- **Score thresholds for color-coding** — Edit the `scoreColor()` function in the template's `\u003Cscript>` block\n- **Which sections get page breaks** — Edit the `breakBefore` array in the template's `\u003Cscript>` block\n\n## Troubleshooting\n\n| Problem | Fix |\n|---|---|\n| `pandoc: command not found` | `brew install pandoc` |\n| Chrome not found | Check path: `\u002FApplications\u002FGoogle Chrome.app\u002FContents\u002FMacOS\u002FGoogle Chrome` |\n| PDF is blank \u002F empty | Increase `--virtual-time-budget` to 8000 |\n| Cover metadata missing | Check GEO-AUDIT-REPORT.md has the standard header format |\n| Fonts not loading | PDF is rendered offline; system fonts are used as fallback — this is expected |\n","# GEO PDF Report Generator (pandoc pipeline)\n\n## Prerequisites\n\n- **pandoc** — `brew install pandoc`\n- **Google Chrome** — must be installed at `\u002FApplications\u002FGoogle Chrome.app\u002F`\n\nNo Python dependencies. No ReportLab. No JSON data wrangling.\n\n## How It Works\n\n1. Read `GEO-AUDIT-REPORT.md` in the current directory (created by `\u002Fgeo audit`)\n2. Extract cover metadata from the report (brand name, domain, GEO score, date, locations)\n3. Run `pandoc` with the bundled CSS + HTML template to produce a self-contained `GEO-REPORT.html`\n4. Run Chrome headless to print the HTML to `GEO-REPORT.pdf`\n\nThe pandoc template (`~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-template.html`) injects:\n- A full-bleed dark navy cover section with the GEO score badge\n- Per-section cover metadata (date, business type, locations, platform)\n- JavaScript that runs inside Chrome before printing to color-code score cells and severity-tag finding sections\n\n## Workflow\n\n### Step 1: Check for audit report\n\nLook for `GEO-AUDIT-REPORT.md` in the current directory. If absent, tell the user to run `\u002Fgeo audit \u003Curl>` first.\n\n### Step 2: Extract cover metadata from the report\n\nRead the top of `GEO-AUDIT-REPORT.md` and extract:\n\n| Field | Where to find it |\n|---|---|\n| `brand_name` | First H1 title (after \"GEO Audit Report:\") |\n| `domain` | Second bold line (e.g. `**Domain:** alexamediasolutions.com`) |\n| `geo_score` | Line matching `## Overall GEO Score: XX \u002F 100` |\n| `score_label` | Word after the score on that same line (e.g. \"Poor\", \"Fair\", \"Good\") |\n| `date` | `**Audit Date:**` line |\n| `business_type` | `**Business Type:**` line |\n| `locations` | `**Locations:**` line |\n| `platform` | `**CMS:**` line |\n\n### Step 3: Run pandoc\n\n```bash\npandoc GEO-AUDIT-REPORT.md \\\n  --to html5 \\\n  --standalone \\\n  --embed-resources \\\n  --template ~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-template.html \\\n  --css ~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-style.css \\\n  --metadata title=\"GEO Audit Report — \u003Cbrand_name>\" \\\n  --metadata brand_name=\"\u003Cbrand_name>\" \\\n  --metadata domain=\"\u003Cdomain>\" \\\n  --metadata geo_score=\"\u003Cgeo_score>\" \\\n  --metadata score_label=\"\u003Cscore_label>\" \\\n  --metadata date=\"\u003Cdate>\" \\\n  --metadata business_type=\"\u003Cbusiness_type>\" \\\n  --metadata locations=\"\u003Clocations>\" \\\n  --metadata platform=\"\u003Cplatform>\" \\\n  -o GEO-REPORT.html\n```\n\nReplace `\u003Cfield>` placeholders with values extracted in Step 2. If a field is not found in the report, omit that `--metadata` flag — the template has sensible defaults.\n\n### Step 4: Run Chrome headless\n\n```bash\n\"\u002FApplications\u002FGoogle Chrome.app\u002FContents\u002FMacOS\u002FGoogle Chrome\" \\\n  --headless=new \\\n  --disable-gpu \\\n  --no-sandbox \\\n  --print-to-pdf=\"$(pwd)\u002FGEO-REPORT.pdf\" \\\n  --print-to-pdf-no-header \\\n  --no-pdf-header-footer \\\n  --virtual-time-budget=5000 \\\n  \"file:\u002F\u002F$(pwd)\u002FGEO-REPORT.html\"\n```\n\n### Step 5: Report completion\n\nTell the user:\n- `GEO-REPORT.pdf` was generated in the current directory\n- File size\n- Optionally: `open GEO-REPORT.pdf` to preview it\n\n## What the PDF Contains\n\n- **Cover page** — Dark navy gradient, brand name, domain, GEO score badge (colored by score), audit date, business type, locations, CMS platform\n- **Score tables** — Cells containing `XX\u002F100` are color-coded: ≥80 green, ≥65 blue, ≥50 amber, ≥35 orange, \u003C35 red\n- **Finding sections** — `h3` headings containing \"Critical \u002F High \u002F Medium \u002F Low\" get severity-colored left-border callout blocks (red \u002F orange \u002F yellow \u002F green)\n- **Section page breaks** — Major sections (High Priority, 90-Day Roadmap, Component Score Summary, Generated Schema) break to new pages automatically\n- **Code blocks** — JSON schema templates render with dark theme monospace styling\n- **Page footer** — Brand name · GEO Audit · date + page numbers (via CSS `@page`)\n\n## Customizing the Report\n\n- **Colors \u002F typography** — Edit `~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-style.css`\n- **Cover layout** — Edit `~\u002F.claude\u002Fskills\u002Fgeo\u002Ftemplates\u002Fgeo-report-template.html`\n- **Score thresholds for color-coding** — Edit the `scoreColor()` function in the template's `\u003Cscript>` block\n- **Which sections get page breaks** — Edit the `breakBefore` array in the template's `\u003Cscript>` block\n\n## Troubleshooting\n\n| Problem | Fix |\n|---|---|\n| `pandoc: command not found` | `brew install pandoc` |\n| Chrome not found | Check path: `\u002FApplications\u002FGoogle Chrome.app\u002FContents\u002FMacOS\u002FGoogle Chrome` |\n| PDF is blank \u002F empty | Increase `--virtual-time-budget` to 8000 |\n| Cover metadata missing | Check GEO-AUDIT-REPORT.md has the standard header format |\n| Fonts not loading | PDF is rendered offline; system fonts are used as fallback — this is expected |\n",{"name":5,"tags":24,"author":30,"version":31,"description":7,"allowed-tools":32},[25,26,27,28,29],"geo","pdf","report","client-deliverable","professional","geo-seo-claude","2.0.0","Read, Grep, Glob, Bash, Write","main","ad108f7eb3f6764136d02fb875772ebb34f54078","upstreams\u002Fsource-c\u002Fskills\u002Fgeo-report-pdf",2,"https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar","iamwaqargulzar.com","2026-11-03 21:14:34",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add iamwaqargulzar\u002FMarketing-Agent-OS --skill geo-report-pdf",{"tool":47,"command":48},"bunx","bunx skills add iamwaqargulzar\u002FMarketing-Agent-OS --skill geo-report-pdf",{"tool":50,"command":51},"pnpm","pnpm dlx skills add iamwaqargulzar\u002FMarketing-Agent-OS --skill geo-report-pdf","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-c\u002Fskills\u002Fgeo-report-pdf\u002FSKILL.md",true,[],[56,63,70,77,84,91],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":19},"01M7AG5VYEX7J2R2AAD54A7YT7","video","When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use when the user mentions 'video production,' 'AI video,' 'Remotion,' 'Hyperframes,' 'HeyGen,' 'Synthesia,' 'Veo,' 'Sora,' 'Runway,' 'Kling,' 'Seedance,' 'Hailuo,' 'MiniMax,' 'Pika,' 'Hunyuan,' 'Wan,' 'video generation,' 'AI avatar,' 'talking head video,' 'programmatic video,' 'video template,' 'explainer video,' 'product demo video,' 'record a product demo,' 'feature demo video,' 'in-app demo,' 'video pipeline,' 'copy this edit,' 'match this video style,' 'reverse-engineer this video,' 'edit like this reference,' or 'make me a video.' Use this for video creation, generation, and production workflows. For video content strategy and what to post, see social. For paid video ad creative, see ad-creative.","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-d\u002Fskills\u002Fvideo\u002FSKILL.md",[],[],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":19},"01M7AG5FMXWA33FQDNS9PS1TE6","social","When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter\u002FX, Instagram, TikTok, or Facebook, or wants to do social listening and engagement triage. Also use when the user mentions 'LinkedIn post,' 'Twitter thread,' 'social media,' 'content calendar,' 'social scheduling,' 'engagement,' 'viral content,' 'what should I post,' 'repurpose this content,' 'tweet ideas,' 'LinkedIn carousel,' 'social media strategy,' 'grow my following,' 'TikTok video,' 'Reels,' 'Shorts,' 'video script,' 'video hook,' 'short-form video,' 'create a reel,' 'social listening,' 'brand mentions,' 'competitor monitoring,' 'top posts to comment on,' 'find people asking for,' 'carousel,' 'slide-by-slide,' or 'document post.' Use this for social content, repurposing, scheduling, video scripts, and listening. Posts avoid AI tells like 'it's not X, it's Y' reveals and broetry. For broader content strategy, see content-strategy. For paid ads, see ad-creative. For earned media, see public-relations.","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-d\u002Fskills\u002Fsocial\u002FSKILL.md",[],[],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M7AG559W96W3DGE31KXYY78S","sms","When the user wants to plan, build, or optimize SMS, MMS, or WhatsApp marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends, or transactional\u002Fauth SMS. Also use when the user mentions \"SMS marketing,\" \"text message campaigns,\" \"SMS sequence,\" \"SMS automation,\" \"abandoned cart text,\" \"post-purchase SMS,\" \"Klaviyo SMS,\" \"Postscript,\" \"Attentive,\" \"Twilio,\" \"A2P 10DLC,\" \"TCPA,\" \"SMS compliance,\" \"short code,\" \"toll-free SMS,\" \"MMS campaign,\" \"should I do SMS,\" \"SMS vs email,\" \"WhatsApp marketing,\" \"WhatsApp Business API,\" \"WhatsApp templates,\" or \"click-to-WhatsApp.\" For email sequences, see emails. For SMS copy framing, see copywriting. For opt-in popups that capture phone numbers, see popups.","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-d\u002Fskills\u002Fsms\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M7AG4WJ9EDSECNTQN0FEAYCQ","site-architecture","When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal linking. Also use when the user mentions \"sitemap,\" \"site map,\" \"visual sitemap,\" \"site structure,\" \"page hierarchy,\" \"information architecture,\" \"IA,\" \"navigation design,\" \"URL structure,\" \"breadcrumbs,\" \"internal linking strategy,\" \"website planning,\" \"what pages do I need,\" \"how should I organize my site,\" \"site navigation,\" \"which website builder should I use,\" \"migrate my website,\" or \"add a blog to my existing site.\" Use this whenever someone is planning what pages a website should have, how they connect, and where to build them. NOT for XML sitemaps (that's technical SEO — see seo-audit). For SEO audits, see seo-audit. For structured data, see schema.","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-d\u002Fskills\u002Fsite-architecture\u002FSKILL.md",[],[],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":19},"01M7AG4MH58GRMSHC0TADAWQ69","signup","When the user wants to optimize signup, registration, account creation, or trial activation flows. Also use when the user mentions \"signup conversions,\" \"registration friction,\" \"signup form optimization,\" \"free trial signup,\" \"reduce signup dropoff,\" \"account creation flow,\" \"people aren't signing up,\" \"signup abandonment,\" \"trial conversion rate,\" \"nobody completes registration,\" \"too many steps to sign up,\" or \"simplify our signup.\" Use this whenever the user has a signup or registration flow that isn't performing. For post-signup onboarding, see onboarding. For lead capture forms (not account creation), see cro.","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-d\u002Fskills\u002Fsignup\u002FSKILL.md",[],[],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":19},"01M7AG4CGGH35KYDFHYSS1BQZ5","seo-audit","When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions \"SEO audit,\" \"technical SEO,\" \"why am I not ranking,\" \"SEO issues,\" \"on-page SEO,\" \"meta tags review,\" \"SEO health check,\" \"my traffic dropped,\" \"lost rankings,\" \"not showing up in Google,\" \"site isn't ranking,\" \"Google update hit me,\" \"page speed,\" \"core web vitals,\" \"crawl errors,\" \"indexing issues,\" \"stuck on page 2,\" \"striking distance keywords,\" \"title tag rewrite,\" \"low CTR,\" \"local SEO,\" \"Google Business Profile,\" or \"map pack.\" Use this even if the user just says something vague like \"my SEO is bad\" or \"help with SEO\" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema. For AI search optimization, see ai-seo.","https:\u002F\u002Fgithub.com\u002Fiamwaqargulzar\u002FMarketing-Agent-OS\u002Fblob\u002Fmain\u002Fupstreams\u002Fsource-d\u002Fskills\u002Fseo-audit\u002FSKILL.md",[],[]]