{"server":"Seonix","checked":"2026-10-28","tools":[{"name":"acknowledge_issue","title":"Mark an issue as intentional","description":"Mark an issue thread as an intentional choice (write scope — ask the user first): it stops counting against the score and stays marked across scans. Typical uses: noindex on pagination, a deliberately short page, a redirect that must stay. Undo with unacknowledge_issue.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"issue_id":{"type":"string","description":"Issue id from list_issues / get_issue."},"reason":{"type":"string","description":"Why it is intentional (shown in the dashboard)."}},"required":["issue_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"analyze_seo","title":"Score a draft","description":"Run Seonix's deterministic SEO + readability + AI-answer (AEO) scoring on ANY draft you pass (title + HTML + meta + keyphrase). No AI credits are spent. Use it as a linter: fix the problems it lists, re-run until the score is ≥ 80, then publish.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug (used for language/domain context)."},"title":{"type":"string","description":"The page/article title (H1)."},"html":{"type":"string","description":"Body HTML of the draft."},"meta_description":{"type":"string"},"focus_keyphrase":{"type":"string"},"slug":{"type":"string"},"language":{"type":"string","description":"Expected language code (default: project language)."},"content_type":{"type":"string","description":"post (default) | page."},"has_featured_image":{"type":"boolean"},"featured_image_alt":{"type":"string"}},"required":["title","html"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"apply_fix","title":"Apply Seonix fixes","description":"Have Seonix apply fixes on the live site through the WordPress plugin (write scope — tell the user exactly which issue codes and get a yes first). Works for get_fix_plan items with fix_tier auto or ai_assist (wp_plugin_fixable); the site must have a connected WordPress channel. Starts a run (preview → Seonix suggestions → apply) and returns its id; poll get_fix_run until status is completed, partial or failed. Undo with rollback_fix.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"issue_codes":{"type":"string","description":"Comma-separated issue codes from get_fix_plan whose fix_tier is auto or ai_assist (wp_plugin_fixable). Seonix fixes them on the live WordPress site through its plugin."},"issue_ids":{"type":"string","description":"Optional comma-separated scan issue ids (from list_issues evidence) to restrict the run to specific pages."}},"required":["issue_codes"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},{"name":"get_account","title":"Account overview","description":"The Seonix account behind this API key: email, every project with its plan, whether the MCP is available for it (paid plans only), AI/publish permissions and this month's article quota. Call this first.","inputSchema":{"type":"object","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_ai_visibility","title":"AI visibility","description":"The latest AI Visibility snapshot: how often the brand appears in ChatGPT answers for the project's prompts, which competitors are mentioned, top cited sources. Measurement covers ChatGPT only.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"include_answers":{"type":"boolean","description":"Include the answer excerpt and cited sources per prompt (default false)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_article","title":"Article detail","description":"One article with SEO title, meta description, excerpt, key takeaways, the stored SEO analysis, publications (where it is live) and optionally the full HTML.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"article_id":{"type":"string","description":"Article id from list_articles."},"include_full_analysis":{"type":"boolean","description":"Return every stored check, not just the failing ones (default false)."},"include_html":{"type":"boolean","description":"Include the full HTML body (can be large)."}},"required":["article_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_blog_integration_guide","title":"Blog integration guide","description":"The Seonix skill for connecting a custom-built site or blog as a publishing channel (endpoints, payload, read routes, media, self-test, hand-over). Same text as https://seonix.ai/SKILL.md. Pass section to get one step.","inputSchema":{"type":"object","properties":{"section":{"type":"string","description":"Optional: a step heading substring to return only that part (e.g. 'Step 3' or 'self-test')."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_calendar","title":"Content calendar","description":"Calendar slots for a month: planned / writing / completed / failed, kind create or optimize, source manual or autopilot, linked article ids.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"month":{"type":"string","description":"YYYY-MM (default: current month)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_cluster","title":"Cluster detail","description":"One cluster with its member keywords, the site pages already covering it, the live SERP snapshot status and the competitor insights Seonix extracted (must-mention entities, recommended blocks, topical coverage, gaps).","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"cluster_id":{"type":"string","description":"Cluster id from list_clusters."}},"required":["cluster_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_fix_plan","title":"Fix plan","description":"An ordered, implementable plan for every open problem: what to change, where (page / site-wide / theme), on which URLs, with the target example. Returned as structured items; pass include_markdown=true to also get a Markdown checklist in the `[HIGH] Title — Location / Issue / Fix` format. Pages with limit/offset. Items with wp_plugin_fixable / fix_tier auto or ai_assist can be applied by Seonix itself through apply_fix (WordPress). After applying fixes, call start_scan (with the user's yes) and get_site_health again to confirm what cleared.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"category":{"type":"string","description":"Only one pillar: seo | ai | speed | technical."},"codes":{"type":"string","description":"Comma-separated issue codes to include (default: every open problem)."},"max_items":{"type":"integer","description":"Problems to include, highest priority first (default 10, max 50). Use codes/category or offset to see the rest."},"limit":{"type":"integer","description":"Same as max_items (accepted so every list tool pages with limit/offset)."},"offset":{"type":"integer","description":"Skip this many problems (for paging through a long plan)."},"max_pages":{"type":"integer","description":"URLs listed per problem (default 3, max 50); the rest are reachable via list_issues code=…"},"include_markdown":{"type":"boolean","description":"Also return the plan as a Markdown checklist (doubles the size; default false)."},"verbose":{"type":"boolean","description":"Add why-it-matters, step-by-step instructions and warnings to every item (default false)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_fix_run","title":"Fix run status","description":"Status and outcome of an apply_fix run: counts (applied / already correct / no-op / errors) and the per-item results with the before and after values.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"run_id":{"type":"string","description":"Run id returned by apply_fix."}},"required":["run_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_issue","title":"Issue detail","description":"One issue with the evidence the scanner captured on the page (the offending tag, heading outline, redirect chain, JSON-LD block…) and the remediation profile: why it matters, bad vs good example, how-to-fix steps, whether Seonix can fix it through the WordPress plugin.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"issue_id":{"type":"string","description":"Issue id from list_issues."}},"required":["issue_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_plan_status","title":"Plan status","description":"Plan and entitlements for one project: whether the MCP is available, AI generation and publishing permissions, article quota used/limit, and the upgrade link when the project is on Free.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_playbook","title":"Get playbook","description":"Read one Seonix playbook by name (same text as the prompt of that name) — for clients that do not surface MCP prompts.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Playbook name from list_playbooks."}},"required":["name"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_project","title":"Project overview","description":"One project: site URL, language, autopilot mode and cadence, Search Console connection, publishing channels, plan and quota, SEO progress level, dashboard links. Paid plans only.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_remediation_profile","title":"Remediation profile","description":"The Seonix remediation profile for an issue code (no project needed): why it matters, bad/good example, fix steps, fix tier, warnings. Use when you meet an unfamiliar code.","inputSchema":{"type":"object","properties":{"code":{"type":"string","description":"Issue code, e.g. meta_description_missing."}},"required":["code"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_results","title":"Results ledger","description":"Proof-of-ranking ledger: for each published article, Search Console clicks / impressions / position now vs the previous period, with trend. Requires Search Console.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"limit":{"type":"integer","description":"Articles per page (default 30, max 100)."},"offset":{"type":"integer","description":"Skip this many articles."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_scan_status","title":"Scan status","description":"Progress of one scan: stage, pages found / scanned, counts, whether background probes are still pending. Poll every 5–10 seconds while status is not completed.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"scan_id":{"type":"string","description":"Scan id from list_scans."}},"required":["scan_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_seo_progress","title":"SEO progress","description":"The project's SEO Progress ladder: current level and stage, what the next level requires (published articles, quality, Search Console, cluster coverage) and the publishing cadence Seonix recommends for this level.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_site_dna","title":"Site DNA","description":"The project's brand profile Seonix extracted and the owner refined: what the business does, audience, tone, language, writing instructions — plus the ready-to-use prompt block. Read it before writing or rewriting anything for the site.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_site_health","title":"Site Health","description":"Site Health for a project: overall score, the four pillars (SEO, AI search, speed, technical), counts of active / fixed / came-back problems, the top open problems by priority, the last scan and the next scheduled check. Start here for any \"what's wrong with my site\" question.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug (optional for single-project accounts)."},"top_tasks":{"type":"integer","description":"How many open problems to include, ordered by priority (default 10, max 50)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_coverage","title":"Indexing coverage","description":"Indexing coverage Seonix collected from Search Console: indexed / not indexed / unknown counts, sitemap status, and the pages that are not indexed with Google's verdict.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_impact","title":"Seonix impact","description":"Seonix's own impact estimate: current vs potential traffic, keyword coverage, article impacts and top keyword opportunities.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_opportunities","title":"Striking-distance opportunities","description":"Keywords already ranking in a position band (default 4–20) with impressions, ordered by the traffic Seonix estimates they would bring at the target position. The classic striking-distance list: refresh those pages first.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"days":{"type":"integer","description":"Window length (default 28, 7–90)."},"min_position":{"type":"number","description":"Lower bound of the position band (default 4)."},"max_position":{"type":"number","description":"Upper bound of the position band (default 20)."},"limit":{"type":"integer","description":"Rows to return (default 30, max 200)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_page_queries","title":"Queries for a page","description":"The queries one page ranks for (Search Console page+query report filtered to that URL). Use it before rewriting a page's title, meta description or headings.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"url":{"type":"string","description":"Exact page URL as Search Console reports it."},"days":{"type":"integer","description":"Window length (default 28, 7–90)."},"limit":{"type":"integer","description":"Rows to return (default 25, max 200)."}},"required":["url"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_status","title":"Search Console status","description":"Whether Google Search Console is connected for the project, which property, and the last date with published data. Call before other gsc_* tools.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_timeseries","title":"Search metrics over time","description":"Daily clicks, impressions, average position and potential traffic for the last N days (7–90), plus the previous-period average position for comparison.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"days":{"type":"integer","description":"Window length ending on the last day Search Console has published (default 28, 7–90)."},"limit":{"type":"integer","description":"Rows to return (default 25, max 200)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_top_pages","title":"Top pages","description":"Top landing pages from Search Console for the window: clicks, impressions, CTR, average position.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"days":{"type":"integer","description":"Window length ending on the last day Search Console has published (default 28, 7–90)."},"limit":{"type":"integer","description":"Rows to return (default 25, max 200)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gsc_top_queries","title":"Top queries","description":"Top search queries from Search Console for the window: clicks, impressions, CTR, average position.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"days":{"type":"integer","description":"Window length ending on the last day Search Console has published (default 28, 7–90)."},"limit":{"type":"integer","description":"Rows to return (default 25, max 200)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_articles","title":"List articles","description":"Articles in the project (Seonix-generated and imported): status, scores, keyphrase, cluster, publish dates. Paginated.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"page":{"type":"integer","description":"1-based page (default 1)."},"per_page":{"type":"integer","description":"Default 20, max 100."},"limit":{"type":"integer","description":"Same as per_page (accepted so every list tool pages with limit/offset)."},"offset":{"type":"integer","description":"Skip this many articles (converted to page/per_page)."},"status":{"type":"string","description":"Filter: draft | scheduled | published. With a filter the list is built from the light index (id, title, status, keyphrase) and paged after filtering."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_channels","title":"Publishing channels","description":"Connected publishing channels (WordPress, Ghost, Webflow, Shopify, Wix, Custom API) with status. A project needs a connected channel before anything can be published.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug. Optional when the account has one project or the connector URL names it."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_clusters","title":"Keyword clusters","description":"Topic clusters (one target page each) with primary keyword, intent, page type, priority, volume, Search Console impressions and winnability. The content plan is built from these.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"status":{"type":"string","description":"draft | approved | brief_ready | content_created."},"limit":{"type":"integer","description":"Page size (default 20, max 100)."},"offset":{"type":"integer","description":"Skip this many clusters."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_issues","title":"List issues","description":"Persistent issue threads (one per problem per page) with status open / solved / regressed, filterable by code, URL and status. Paginated. Each item carries the issue id for get_issue.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"status":{"type":"string","description":"open | solved | regressed. Default: open and regressed (everything still broken)."},"code":{"type":"string","description":"Only this issue code, e.g. images_missing_alt."},"url":{"type":"string","description":"Only issues on this page URL."},"limit":{"type":"integer","description":"Page size (default 25, max 200)."},"offset":{"type":"integer"}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_keyword_candidates","title":"Keyword candidates","description":"Keywords Seonix researched for the project (seed AI, planner, Search Console, autocomplete, user-added) with volume, competition, Search Console numbers and cluster membership. Paginated; filter by status and substring.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"status":{"type":"string","description":"Comma-separated: pending, approved, rejected, filtered_out. Default: approved and pending."},"query":{"type":"string","description":"Substring filter on the keyword."},"limit":{"type":"integer","description":"Default 100, max 500."},"offset":{"type":"integer"}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_playbooks","title":"List playbooks","description":"The Seonix playbooks (step-by-step procedures that tell you which tools to call): promote a site, work through a page, fix issues in code, keyword map, internal links, write an article, striking distance, monthly report, connect a blog. Use get_playbook to read one.","inputSchema":{"type":"object","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_projects","title":"List projects","description":"Projects (websites) in the account with id, slug, name and site URL. Use the id or slug as project_id in other tools.","inputSchema":{"type":"object","additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_scans","title":"List scans","description":"Recent site scans with status, pages scanned and severity counts.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"limit":{"type":"integer","description":"Default 10, max 50."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"rollback_fix","title":"Roll back a fix run","description":"Reverse the changes an apply_fix run made on the live site, restoring the values the plugin snapshotted before applying (write scope — ask the user first).","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"run_id":{"type":"string","description":"Run id returned by apply_fix."}},"required":["run_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},{"name":"score_article","title":"Score an existing article","description":"Re-run the SEO + readability scoring on an article already in Seonix (no changes saved) and list its problems.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"article_id":{"type":"string","description":"Article id from list_articles."}},"required":["article_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"start_scan","title":"Start a site scan","description":"Start a fresh Site Health scan of the project's site (write scope — ask the user first). Returns the scan id; poll get_scan_status every 10 seconds until status is completed, then call get_site_health / get_fix_plan to see what cleared. One scan at a time per project; the plan's page budget applies.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"scope":{"type":"string","description":"website (default: crawl the site) | sitemap (only sitemap URLs)."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"unacknowledge_issue","title":"Un-mark an intentional issue","description":"Remove the intentional mark from an issue thread so it is scored and counted again (write scope).","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Project id or slug."},"issue_id":{"type":"string","description":"Issue id from list_issues / get_issue."},"reason":{"type":"string","description":"Why it is intentional (shown in the dashboard)."}},"required":["issue_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}}],"resources":[{"description":"Index of the guides and playbooks this server serves.","mimeType":"text/markdown","name":"guides-index","title":"Seonix guides","uri":"seonix://guides"},{"description":"How to connect a custom-built site as a Seonix publishing channel (same as seonix.ai/SKILL.md).","mimeType":"text/markdown","name":"blog-integration","title":"Blog integration skill","uri":"seonix://guides/blog-integration"},{"description":"Every issue code the scanner can raise with its category, severity, fix tier and whether the WordPress plugin can fix it.","mimeType":"text/markdown","name":"remediation-index","title":"Remediation profiles","uri":"seonix://guides/remediation"},{"description":"Every check Seonix runs on an article, its weight and the target state — the rules behind analyze_seo.","mimeType":"text/markdown","name":"seo-scoring","title":"SEO scoring rules","uri":"seonix://guides/seo-scoring"},{"description":"How Seonix writes titles and headings (length, casing, keyphrase placement, no clickbait).","mimeType":"text/markdown","name":"title-style","title":"Title style","uri":"seonix://guides/title-style"}],"prompts":[{"description":"For coding agents: build the publishing endpoints per the Seonix skill, self-test, connect the channel, import existing posts.","name":"connect_blog_to_seonix","title":"Connect a custom blog to Seonix"},{"description":"For coding agents: turn get_fix_plan into code changes, deploy, rescan, verify.","name":"fix_issues_in_code","title":"Fix Site Health issues in the codebase"},{"description":"Route authority from strong pages to the pages that should rank; descriptive anchors; backfill from new articles.","name":"internal_linking_plan","title":"Internal linking plan"},{"description":"Build a keyword → URL map from clusters and Search Console, find cannibalisation and missing pages.","name":"keyword_map_site","title":"Map keywords to URLs"},{"description":"A plain-language monthly report from Search Console, Site Health, results and publishing activity.","name":"monthly_seo_report","title":"Monthly SEO report"},{"description":"Diagnose the site with Seonix data and produce a prioritised 30/60/90-day plan.","name":"promote_site_playbook","title":"Promote this site (30/60/90-day plan)"},{"description":"Full audit-and-plan from Seonix data: scorecard, top 5 wins, quick wins this week, content gaps, risks — the /seo of this server.","name":"seo_review","title":"SEO review of the project"},{"description":"Pages ranking 4–20: which to refresh, what to change, expected gain.","name":"striking_distance_plan","title":"Striking-distance refresh plan"},{"description":"Prioritise the site's pages by money and opportunity, then rework them in batches.","name":"work_through_all_pages","title":"Work through all important pages"},{"description":"Rework one URL end-to-end: intent, title/meta, headings, body gaps, links, structured data, then score it.","name":"work_through_page","title":"Work through one page"},{"description":"Draft an article in the site's voice from a cluster's keywords and SERP insights, then score it.","name":"write_article_for_brief","title":"Write an article for a cluster"}]}