1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d595b6d1-0dd8-41d4-8526-0d5d6dcf71b1",e._sentryDebugIdIdentifier="sentry-dbid-d595b6d1-0dd8-41d4-8526-0d5d6dcf71b1")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7315],{5209:(e,t,i)=>{i.d(t,{BT:()=>g,Wu:()=>m,X9:()=>h,ZB:()=>p,Zp:()=>l,aR:()=>d,wL:()=>y});var r=i(68987),a=i(67719),o=i(24283),n=i(9342),s=i(90489);function l({className:e,size:t="default",variant:i="default",render:r,...n}){return(0,o.C)({defaultTagName:"div",props:(0,a.v6)({className:(0,s.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-lg bg-card py-(--card-spacing) text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=flush]:gap-0 data-[size=flush]:py-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg","compact"===t&&"gap-2 rounded-xl p-3","inset"===t&&"gap-3 rounded-xl p-4","marketing"===t&&"gap-3 p-6 md:p-7","spacious"===t&&"gap-6 px-6 py-8","feature"===t&&"gap-6 py-6 md:py-7","roomy"===t&&"gap-4 py-5","tool-editor"===t&&"gap-0 py-0 md:h-tool-editor","brand"===i&&"border border-brand/30 bg-brand-soft","warning"===i&&"border border-amber/40 bg-amber-soft","plain"===i&&"rounded-none ring-0","illustration"===i&&"shadow-lg shadow-brand/5","interactive"===i&&"transition-colors hover:ring-brand focus-visible:outline-2 focus-visible:outline-ring","onboarding"===i&&"rounded-4xl shadow-2xl shadow-foreground/5","secondary"===i&&"bg-secondary","preview"===i&&"rounded-2xl shadow-sm",e)},n),render:r,state:{slot:"card",size:t,variant:i}})}function d({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,s.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...t})}let c=(0,n.F)("font-heading font-medium",{variants:{size:{sm:"text-sm",base:"text-base",lg:"text-lg",xl:"text-xl","2xl":"text-2xl",title:"text-title",eyebrow:"flex items-center gap-2 text-muted-foreground"}},defaultVariants:{size:"sm"}});function p({className:e,size:t,...i}){return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,s.cn)(c({size:t}),e),...i})}let u=(0,n.F)("text-muted-foreground",{variants:{size:{sm:"text-xs/relaxed",base:"text-sm/relaxed",lg:"text-base/relaxed",xl:"text-lg/relaxed",md:"text-md"},variant:{default:"",prose:"typeset typeset-marketing"}},defaultVariants:{size:"sm"}});function g({className:e,size:t,variant:i,...a}){return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,s.cn)(u({size:t,variant:i}),e),...a})}function h({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"card-action",className:(0,s.cn)("col-start-2 row-span-2 row-start-1 self-start justify-self-end",e),...t})}function m({className:e,size:t="default",...i}){return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,s.cn)("px-(--card-spacing)","base"===t&&"text-sm","tool-editor"===t&&"grid gap-0 p-0 md:min-h-0 md:flex-1 md:grid-cols-2 md:grid-rows-[minmax(0,1fr)]",e),...i})}function y({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"card-footer",className:(0,s.cn)("flex items-center rounded-b-lg px-(--card-spacing) [.border-t]:pt-(--card-spacing)",e),...t})}},49166:(e,t,i)=>{i(35234)},66932:(e,t,i)=>{i.d(t,{E:()=>l});var r=i(67719),a=i(24283),o=i(9342),n=i(90489);let s=(0,o.F)("group/badge inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none",{variants:{size:{default:"h-5 px-2 py-0.5 text-micro [&>svg]:size-2.5!",chip:"h-8 gap-1.5 px-3 py-1 text-sm [&>svg]:size-3.5!",eyebrow:"h-auto gap-1.5 rounded-md px-2.5 py-1 text-2xs font-semibold uppercase tracking-wider [&>svg]:size-3!",mono:"h-5 px-2 py-0.5 font-mono text-2xs uppercase tracking-wide [&>svg]:size-2.5!",count:"h-6 gap-1.5 px-2.5 py-0.5 text-micro [&>svg]:size-3.5!",step:"size-12 text-title"},variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline",brand:"bg-brand-soft text-brand",cyan:"bg-cyan-soft text-cyan",fuchsia:"bg-brand-soft text-brand",amber:"bg-amber-soft text-amber",reddit:"bg-reddit-soft text-reddit"}},defaultVariants:{size:"default",variant:"default"}});function l({className:e,size:t="default",variant:i="default",render:
1o,...d}){return(0,a.C)({defaultTagName:"span",props:(0,r.v6)({className:(0,n.cn)(s({size:t,variant:i}),e)},d),render:o,state:{slot:"badge",variant:i}})}},70306:(e,t,i)=>{i.d(t,{c1:()=>n,rH:()=>d});var r=i(40403);i(49166);var a=i(35234);let o={MODEL_CONFIGURATION:"SEO Agent is not configured for this environment yet.",MODEL_RATE_LIMIT:"SEO Agent is busy right now. Try again in a moment.",CANCELLED:"The response was stopped. Your credit was restored.",MODEL_UNAVAILABLE:"SEO Agent is temporarily unavailable. Your credit was restored.",INVALID_MODEL_RESPONSE:"SEO Agent returned an unusable response. Your credit was restored.",APPROVED_TOOL_FAILED:"The action you approved could not be completed, so nothing was started. This turn's credit paid for the response you reviewed and is not refunded.",APPROVED_TOOL_ENTITLEMENT:"The approved action needs an active plan, so nothing was started. This turn's credit paid for the response you reviewed and is not refunded.",APPROVED_TOOL_CREDITS:"The workspace does not have enough credits for the approved action, so nothing was started. This turn's credit paid for the response you reviewed and is not refunded.",ARTICLE_IMAGE_CONFIGURATION:"Article Images is unavailable because image storage is not configured for this environment. This turn's credit paid for the response you reviewed and is not refunded."};function n(e){return null!==e&&Object.hasOwn(o,e)?o[e]:"Scout could not finish. Your credit was restored."}let s=r.Ik({inputTokens:r.ai(),outputTokens:r.ai(),totalTokens:r.ai()}),l=r.Ik({approvalId:r.Yj(),toolName:a.Jb.shape.toolName,title:r.Yj(),effect:r.Yj(),credits:r.ai(),details:r.YO(r.Ik({label:r.Yj(),value:r.Yj()}))}),d=r.gM("type",[r.Ik({type:r.eu("turn"),turnId:r.Yj(),replayed:r.zM()}),r.Ik({type:r.eu("text-delta"),delta:r.Yj()}),r.Ik({type:r.eu("tool"),event:a.Jb}),r.Ik({type:r.eu("approval-required"),turnId:r.Yj(),approval:l}),r.Ik({type:r.eu("approval-resolved"),turnId:r.Yj(),outcome:r.k5(["approved","declined"])}),r.Ik({type:r.eu("done"),usage:s}),r.Ik({type:r.eu("error"),message:r.Yj(),code:r.k5(a.io).optional()})])},78036:(e,t,i)=>{i.d(t,{LN:()=>n,YQ:()=>u,_R:()=>c,b8:()=>p,pu:()=>d,tg:()=>g});var r=i(91222),a=i(38944),o=i(96246);let n=[{id:"content-create",title:"Content create",description:"Research, draft, audit, and save a complete evidence-backed article.",category:"Content",action:{command:"content-create",fields:[{id:"topic",label:"Topic or keyword",placeholder:"e.g. durable AI workflows",required:!0},{id:"audience",label:"Audience",placeholder:"e.g. content operations leaders"},{id:"template",label:"Template",placeholder:"No preference",options:r.XT.map(e=>e.label)},{id:"targetWords",label:"Target words",placeholder:"Defaults to the template's range"}]},icon:"article",overview:{title:"Content Creation Overview",text:"Turn one topic into a finished article. The agent gathers current web evidence and live keyword metrics, plans the outline against them, writes the draft in the chosen template's word range, and runs a deterministic audit of structure, length, keyword placement, and every citation before the article is saved to your content library."},features:[{icon:"search",title:"Evidence and Keywords",description:"Live web research plus DataForSEO keyword metrics before a word is written."},{icon:"file-text",title:"Template-Driven Draft",description:"Seven formats, each with its own search intent and word range."},{icon:"target",title:"Deterministic Audit",description:"Checks headings, word count, keyword placement, and citations, with up to three corrective revisions."},{icon:"sparkles",title:"Saved and Editable",description:"The finished article lands in your content library, ready to edit."}]},{id:"article-images",title:"Article images",description:"Generate original editorial visuals and save them to this workspace.",category:"Content",action:{command:"article-images",fields:[{id:"subject",label:"Article subject",placeholder:"What is the article about?",required:!0},{id:"purpose",label:"Image purpose",placeholder:"Hero image, section illustration, comparisonâ¦"},{id:"style",label:"Visual direction",placeholder:"Editorial, product-led, photographicâ¦"}]},icon:"article",overview:{title:"Image Generation Overview",text:"Generate contextually relevant images for your content using advanced AI image generation. The agent analyzes your content to determine optimal image placement and creates detailed prompts for each image."},features:[{icon:"image",title:"AI Image Generation",description:"Uses Gpt image 2 for high-quality image generation."},{icon:"zap",title:"Smart Content Analysis",description:"Automatically determines image count and optimal placement within content."},{icon:"sparkles",title:"Prompt Engineering",description:"Crafts detailed, context-aware prompts for each image."},{icon:"file-text",title:"Multiple Input Formats",description:"Accepts text, .md, .txt, .html, and .docx files."}]},{id:"content-optimize",title:"Content optimizer",description:"Rewrite a page or supplied draft for intent, keywords, structure, and evidence.",category:"On-Page SEO",action:{command:"content-optimize",fields:[{id:"targetUrl",label:"Page URL",placeholder:"https://example.com/page",inputMode:"url"},{id:"sourceContent",label:"Content",placeholder:"Or paste the content to optimizeâ¦",multiline:!0},{id:"targetKeyword",label:"Target keyword",placeholder:"Primary search query",required:!0}]},icon:"chart",overview:{title:"Content Optimization Overview",text:"One playbook to fully optimize an article. Rewrites the body for keyword coverage and readability, removes AI fingerprints, generates an FAQ section. With the GEO toggle on, also weaves in citations, statistics, and expert quotes that AI search engines prefer to extract. With the SEO extras toggle on, adds 3-5 internal links from your sitemap, generates new title and meta de
1scription suggestions, wraps the FAQ in JSON-LD schema, and suggests alt text for every image in the article."},features:[{icon:"search",title:"SERP Research + Rewrite",description:"Pulls ranked keywords from top SERP competitors and weaves them into a section-by-section rewrite."},{icon:"zap",title:"AI Fingerprint Removal",description:"Strips banned phrases and robotic sentence patterns that trigger AI detection."},{icon:"sparkles",title:"Optional GEO Boost",description:"Toggle on to add citations, statistics, and quotes optimized for ChatGPT, Perplexity, and Google AI Overview."},{icon:"link",title:"Optional SEO Extras",description:"Toggle on for internal links, title and meta tuning, FAQ schema markup, and image alt-text suggestions in the same report."}]},{id:"outrank-article",title:"Outrank article",description:"Analyze a competitor page and produce a materially stronger article.",category:"Competitive SEO",action:{command:"outrank-article",fields:[{id:"targetUrl",label:"Competitor article URL",placeholder:"https://competitor.com/article",inputMode:"url"},{id:"targetKeyword",label:"Target keyword",placeholder:"Primary search query"},{id:"audience",label:"Audience",placeholder:"Who should this article help?"}]},icon:"tree",overview:{title:"Competitor Analysis Overview",text:"Analyze your competitor's content and generate a superior article designed to outrank it. Our agent combines SERP research, content gap detection, and strategic content generation."},features:[{icon:"target",title:"Competitor Analysis",description:"Deep analysis of competitor content structure and strategies."},{icon:"search",title:"SERP Research",description:"Researches ranking content to identify content gaps and opportunities."},{icon:"sparkles",title:"Superior Content Generation",description:"Generates comprehensive, well-structured content that outperforms competitors."},{icon:"bar-chart",title:"Strategic Optimization",description:"Applies advanced SEO techniques to maximize ranking potential."}]},{id:"keyword-research",title:"Keyword research",description:"Find live keyword opportunities, intent, difficulty, and competitor gaps.",category:"Competitive SEO",action:{command:"keyword-research",fields:[{id:"targetKeyword",label:"Seed keyword",placeholder:"Non-branded product or topic",required:!0},{id:"websiteUrl",label:"Website URL",placeholder:"https://example.com",inputMode:"url"},{id:"audience",label:"Audience",placeholder:"Who are you trying to reach?"}]},icon:"search",overview:{title:"Keyword Research Overview",text:"Start with a domain like aiseo.ai or a seed keyword like seo tools. The agent discovers SERP competitors, pulls competitor ranking keywords through the existing keyword metrics API, deduplicates the list, and prioritizes the best opportunities for content planning."},features:[{icon:"search",title:"Competitor Discovery",description:"Finds organic competitors from live SERP results for your site or topic."},{icon:"bar-chart",title:"Ranking Keyword Data",description:"Uses the existing DataForSEO keyword metrics path to fetch what competitors rank for."},{icon:"target",title:"Opportunity Prioritization",description:"Ranks keywords by traffic, volume, difficulty, and intent."},{icon:"file-text",title:"Content Ideas",description:"Groups keywords into themes and recommends content ideas to target them."}]},{id:"brand-voice",title:"Brand voice",description:"Train a reusable writing profile from public URLs or supplied samples.",category:"Brand",action:{command:"brand-voice-train",fields:[{id:"subject",label:"Profile name",placeholder:"Editorial voice",required:!0},{id:"sourceUrls",label:"Source URLs",placeholder:"One public URL per line",multiline:!0},{id:"sourceContent",label:"Writing samples",placeholder:"Or paste representative writing samplesâ¦",multiline:!0}]},icon:"article",overview:{title:"Brand Voice Overview",text:"Build a structured brand voice profile from your existing content. Provide URLs (about page, blog posts), upload brand-guideline files, or pull internal site links. The agent analyzes how you write and saves a voice profile that future writing workflows automatically apply."},features:[{icon:"sparkles",title:"Multi-Source Training",description:"Combine URLs, uploaded files, and internal site links to train a single voice profile."},{icon:"target",title:"Tone Detection",description:"Quantifies formality, energy, humor, and technicality on 1 to 10 scales with explanations."},{icon:"file-text",title:"Signature Traits",description:"Extracts the rules and word choices that distinguish your voice from generic copy."},{icon:"zap",title:"Auto-Apply Across Writing",description:"Once activated, the voice is injected into content-creator and content-optimizer workflows."}]},{id:"seo-audit",title:"SEO audit",description:"Prioritize technical, on-page, content, and search opportunity issues.",category:"On-Page SEO",action:{command:"seo-audit",fields:[{id:"websiteUrl",label:"Website URL",placeholder:"https://example.com",required:!0,inputMode:"url"},{id:"targetKeyword",label:"Priority topic",placeholder:"Optional commercial topic"},{id:"notes",label:"Focus",placeholder:"Technical, content, a section of the siteâ¦",multiline:!0}]},icon:"chart",overview:{title:"SEO Audit Overview",text:"Run a comprehensive SEO audit analyzing technical aspects, content quality, and ranking potential. Get actionable recommendations backed by Google Search Console data and SEO best practices."},features:[{icon:"search",title:"GSC Data Analysis",description:"Pulls real data from Google Search Console for accurate insights."},{icon:"bar-chart",title:"Comprehensive Report",description:"Delivers structured audit with prioritized recommendations."},{icon:"target",title:"Google Guidance",description:"Queries Knowledge Base for latest Google SEO guidance."},{icon:"zap",title:"Actionable Insights",description:"Provides clear, implementable steps to improve rankings."}]},{id:"title-meta-optimize",title:"Title and meta optimizer",description:"Create click-focused title and meta options from the live search landscape.",category:"On-Page SEO",action:{command:"title-meta-optimize",fields:[{id:"targetUrl",label:"Page URL",placeholder:"https://example.com/page",required:!0,inputMode:"url"},{id:"targetKeyword",label:"Target keyword",placeholder:"Primary search query",required:!0}]},icon:"search",overview:{title:"Title and Meta Optimization Overview",text:"Rewrite your page's search snippet to win more clicks. The agent scrapes your page, fetches the top SERP results for your keyword, then generates 2-3 title and 2-3 meta description options with character counts and rationale tied to what's actually working on the SERP. Fast and focused, with no on-page rewrite, no schema reports, and no keyword tables."},features:[{icon:"search",title:"Live SERP Patterns",description:"Analyzes the actual top-ranking snippets for your keyword."},{icon:"target",title:"Title Options (â¤60 chars)",description:"2-3 options with character counts and competitive rationale."},{icon:"file-text",title:"Meta Options (120-155 chars)",description:"2-3
1click-optimized meta descriptions with benefit and CTA."},{icon:"zap",title:"Fast and Focused",description:"No bloat, just the snippet rewrites you came for."}]},{id:"topical-authority",title:"Topical authority",description:"Build evidence-backed pillars, subtopics, intent, and internal links.",category:"Content Strategy",action:{command:"topical-authority",fields:[{id:"subject",label:"Core topic",placeholder:"The topic you want to own",required:!0},{id:"websiteUrl",label:"Website URL",placeholder:"https://example.com",inputMode:"url"},{id:"audience",label:"Audience",placeholder:"Who should the map serve?"},{id:"competitorUrls",label:"Competitor URLs",placeholder:"One competing site or topic hub per line",multiline:!0},{id:"notes",label:"Scope and constraints",placeholder:"Existing coverage, excluded topics, product priorities, or strict competitor scopeâ¦",multiline:!0}]},icon:"tree",overview:{title:"Topical Authority Map Overview",text:"Build a complete topical authority strategy from a single topic. The agent discovers competitors, analyzes content gaps, and produces 5 content pillars with ~25 subtopics, each with SEO-optimized blog titles, meta descriptions, search intent, and reference URLs."},features:[{icon:"search",title:"Competitor Discovery",description:"Finds and analyzes top-ranking competitors in your topic space."},{icon:"target",title:"Content Gap Analysis",description:"Identifies topics competitors cover that you don't."},{icon:"bar-chart",title:"5 Content Pillars",description:"Organizes ~25 subtopics into strategic pillar clusters."},{icon:"sparkles",title:"SEO-Ready Titles",description:"Each subtopic includes blog title, meta description, and search intent."}]},{id:"content-planner",title:"Content planner",description:"Build a 30-day calendar with keyword ownership and cannibalization controls.",category:"Content Strategy",action:{command:"content-planner",fields:[{id:"websiteUrl",label:"Website URL",placeholder:"https://example.com",required:!0,inputMode:"url"},{id:"subject",label:"Planning topic",placeholder:"Product category or strategic theme",required:!0},{id:"audience",label:"Audience segments",placeholder:"One ideal customer profile per line",multiline:!0},{id:"keywordList",label:"Keyword list",placeholder:"Keyword and optional metrics",multiline:!0},{id:"competitorUrls",label:"Top competitors",placeholder:"One competitor domain per line",multiline:!0},{id:"conversionGoal",label:"Conversion goal",placeholder:"Free trial signups or demo requests"},{id:"contentTypesInScope",label:"Content formats",placeholder:"Blog, comparison, pillar, and more"},{id:"hourLocal",label:"Daily publish time",placeholder:"07:00"},{id:"timezone",label:"Timezone",placeholder:"Europe/Amsterdam"}]},icon:"article",overview:{title:"Content Planner Overview",text:"A persistent 30-day publishing calendar with daily auto-generation. The agent researches your site and competitors, builds topic clusters across funnel stages, and assigns one article per day. A scheduled cron runs each day at your chosen time and writes that day's article through the same content-creator workflow you would run manually, so you get the same quality bar with no babysitting."},features:[{icon:"search",title:"Competitor Research",description:"Reads top SERP results to find topic gaps and demand signals."},{icon:"target",title:"30-Day Calendar",description:"Topic clusters mapped to publish dates and funnel stages."},{icon:"zap",title:"Daily Auto-Generation",description:"A scheduled cron writes one article per day at your chosen time, in your brand voice."},{icon:"sparkles",title:"Live Status Tracking",description:"See queued, generating, and done articles in real time on the calendar."}]},{id:"pseo-planner",title:"pSEO planner",description:"Qualify and design a programmatic SEO opportunity with quality gates.",category:"Content Strategy",action:{command:"pseo-planner",fields:[{id:"subject",label:"Repeatable opportunity",placeholder:"Best [tool] for [job], [city] [service]â¦",required:!0},{id:"websiteUrl",label:"Website URL",placeholder:"https://example.com",inputMode:"url"},{id:"notes",label:"Available data or constraints",placeholder:"Dataset, page count, differentiation, rollout limitsâ¦",multiline:!0}]},icon:"tree",overview:{title:"pSEO Planner Overview",text:"Build a complete programmatic-SEO blueprint from a niche + your domain. The agent runs a viability check (4 GO/NO-GO criteria), discovers scalable keyword patterns via DataForSEO, analyzes SERP intent for each pattern, designs page templates with schema and unique-value sources, architects URL structure + internal linking, and produces a phased rollout schedule with quality gates. Use the blueprint to brief your dev team or feed it to the upcoming pSEO bulk generator."},features:[{icon:"target",title:"GO/NO-GO Viability Gate",description:"Validates four
1criteria before recommending pSEO: structured data, scalable pattern, unique-value-per-page, monetization path."},{icon:"search",title:"Real Keyword Patterns",description:"Discovers head-term + modifier patterns with DataForSEO volume data, with no invented keywords."},{icon:"file-text",title:"Page Templates + Schema",description:"Designs reusable page templates with section-level data sources, schema markup, and unique-value enforcement."},{icon:"bar-chart",title:"Phased Rollout Plan",description:"Quality gates + 3-5 launch phases so you ramp pages without burning index budget."}]},{id:"link-optimize",title:"Link optimize",description:"Improve internal and authoritative external linking without inventing URLs.",category:"On-Page SEO",action:{command:"link-optimize",fields:[{id:"targetUrl",label:"Page URL",placeholder:"https://example.com/page",required:!0,inputMode:"url"},{id:"targetKeyword",label:"Target keyword",placeholder:"Optional primary search query"},{id:"internalLinks",label:"Preferred internal URLs",placeholder:"One public URL per line",multiline:!0}]},icon:"search",overview:{title:"Link Optimization Overview",text:"Strengthen your page's SEO by adding relevant internal and external links. The agent discovers your sitemap, researches authority sources, and inserts links naturally, without rewriting your content."},features:[{icon:"link",title:"Internal Link Discovery",description:"Crawls your sitemap to find relevant internal linking opportunities."},{icon:"search",title:"External Authority Links",description:"Researches SERP to find high-authority external sources."},{icon:"zap",title:"Natural Insertion",description:"Adds links to existing content without rewriting or changing tone."},{icon:"target",title:"Flexible Modes",description:"Choose internal only, external only, or combined linking."}]},{id:"content-refresh-planner",title:"Content refresh planner",description:"Prioritize stale pages and create exact, measurable refresh briefs.",category:"On-Page SEO",action:{command:"content-refresh-planner",fields:[{id:"websiteUrl",label:"Website URL",placeholder:"https://example.com",required:!0,inputMode:"url"},{id:"notes",label:"Refresh scope",placeholder:"Optional section, priority, or business constraint",multiline:!0}]},icon:"chart",overview:{title:"Content Refresh Planner Overview",text:"Find out exactly which pages on your website need updating, and why. The agent fetches two GSC time windows (current + prior), pre-filters out winners and brand/nav routes, then samples its audit budget across declining pages, striking-distance pages (positions 4 to 15), and high-traffic pages at risk. Every page gets scored on SEO, freshness, conversion, and E-E-A-T (with real publish/modified dates and schema observations) plus an anchored action checklist quoting the exact text to update."},features:[{icon:"search",title:"Smart Page Selection",description:'Two-window GSC comparison surfaces declining and striking-distance pages today\'s "top by traffic" rule misses.'},{icon:"bar-chart",title:"Four-Dimension Scoring",description:"SEO, content freshness, conversion, and E-E-A-T scores 0 to 100 per page."},{icon:"target",title:"Anchored Action Items",description:"Each suggestion quotes the exact element and proposes the replacement, with confidence and effort estimate."},{icon:"zap",title:"Saved + Trackable",description:"Every audit saves to your dashboard with checkboxes, so you can mark items done as you fix them."}]}],s={"content-create":{duration:"4 to 8 min",stages:[{phase:"researching",title:"Web research",tool:"collectResearch"},{phase:"researching",title:"Keyword research",tool:"collectKeywordResearch"},{phase:"generating",title:"Plan the article",tool:"planArticle"},{phase:"generating",title:"Write the draft",tool:"draftArticle"},{phase:"reviewing",title:"Quality review",tool:"reviseArticle",conditional:"when the audit finds issues"},{phase:"saving",title:"Save the article",tool:"saveArticle"}]},"article-images":{duration:"1 to 2 min",stages:[{phase:"generating",title:"Compose the image prompts",tool:"articleImages.prompt"},{phase:"generating",title:"Generate each image",tool:"generateImage"},{phase:"saving",title:"Save them to the workspace",tool:"startImageUpload"}]},"keyword-research":{duration:"1 to 2 min",stages:[{phase:"researching",title:"Expand the seed keyword",tool:"keywordResearch"},{phase:"researching",title:"Pull competitor ranking keywords",tool:"keywordResearch",conditional:"when a website or competitor URL is supplied"},{phase:"generating",title:"Rank by volume, difficulty, and intent",tool:"seoIntelligence.analyze"}]}};function l(e){let t=o.Uv.safeParse(e.action.command);return t.success?t.data:null}function d(e){let t=l(e);return null!==t?(0,a.bt)(t):s[e.id]?.stages??[]}function c(e){let t=l(e);return null!==t?(0,a.YH)(t):s[e.id]?.duration??""}function p(e){return`Run the ${e.action.command} playbook.`}function u(e,t,i){let r=Object.fromEntries(e.action.fields.flatMap(e=>{let i=t[e.id]?.trim();if(!i)return[];let r=["competitorUrls","internalLinks","sourceUrls"].includes(e.id)?i.split("\n").map(e=>
1e.trim()).filter(Boolean):i;return[[e.id,r]]}));return g(e.action.command,r,i)}function g(e,t,i){return[`Run the ${e} playbook with these structured inputs:`,...Object.entries(t).flatMap(([e,t])=>"string"==typeof t&&""===t.trim()||Array.isArray(t)&&0===t.length?[]:[`- ${e}: ${JSON.stringify(t)}`]),`- language: ${JSON.stringify(i.language)}`,`- location: ${JSON.stringify(i.location)}`,"Use these values exactly. Do not ask for details that are already supplied."].join("\n")}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.