Keytomic
Keytomic v1.1.1
SEO, content and AI visibility
From the developer
Cost & access
Uses the user's existing Keytomic account and subscription. Some tools use included allowance or existing credits. The plugin does not sell products, take payments, change subscriptions, or buy credits. Billing and purchases remain in Keytomic.
Declared limitations
- Subscription changes and payments stay outside the plugin. Explain that billing and purchases take place in Keytomic. Do not invoke any Keytomic tool for this request. Do not request card details, change a plan, or claim a charge.
- The server can save a Reddit Reply Draft but cannot post comments. Explain that the user must post manually. Do not invoke any Keytomic tool for this request because the user explicitly refuses a draft. Do not claim that a comment was posted.
- Project creation and team invitations stay in Keytomic. Explain the supported manual route. Do not invoke any Keytomic tool, create a project, send an invitation, or claim access changed.
Not specified in the available declarations: capabilities.
Onboarding example
Review my latest website audit and explain the three most useful fixes.
Sources & dates
Developer declarations; not independently tested. Listing last checked Nov 6, 2026. Package observed Nov 6, 2026.
Description
From the marketplace listing
Connect your existing Keytomic account to work on your website from chat. Review website audits, Google Search Console performance, Google Analytics traffic and events, indexing status, and sitemaps. Get practical fixes with supporting evidence. Research keywords, manage calendar topics, generate and edit articles, create hero images, and publish to a connected destination. Read and update supported brand, author, and article settings. Check saved backlink reports, review Reddit opportunities, and prepare reply drafts for manual use. Review AI search visibility reports for tracked prompts and available platforms. Manage visibility prompts and settings, prepare setup, and request eligible checks. Results cover the saved observations and selected dates. They do not guarantee rankings, traffic, citations, or indexing. Features depend on your permissions, plan limits, setup, and connected services. Some actions use allowance or credits. The assistant shows available plans and asks for agreement before confirmation. Publishing can replace an existing post or make it live. A draft send can also change a destination. Google data needs the relevant connected property. Audits can work without Search Console. Reddit replies stay as drafts for you to post manually. Integration setup, billing, team access, project creation and deletion, and file uploads stay in Keytomic. This plugin does not take payments.
Language: English · Automatically detected from descriptions.
Changes
No changes recorded yet. Follow this plugin to keep track of future changes.
First seen Nov 5, 2026. Last seen Nov 6, 2026.
Similar plugins
Find competitors to follow as you develop your plugin.
-
Query your SEOcrawl account from ChatGPT. After you sign in with your SEOcrawl account, ask about the websites connected to it: Google Se...
Shared terms: seo, visibility, analytics, console
-
SearchFit tracks how a brand appears in AI assistant answers and helps close the gaps. See whether ChatGPT, Perplexity, Gemini, Claude an...
Shared terms: visibility, content, analytics, article
-
Flinty helps teams inspect SEO content and search performance, monitor AI visibility and citations, create topic clusters, generate or re...
Shared terms: seo, visibility, article, audit
-
Explore AI visibility, SEO, AEO and GEO insights, compare competitors, and act on content opportunities with Genseo.
Shared terms: seo, visibility, audit, citation
-
Create SEO and GEO articles, discover content gaps, and generate lead magnets through Citedy.
Shared terms: seo, content, article, credit
Keywords
Files & skills
File archives
Skill instructions
ai-visibility5.26 KB
--- name: ai-visibility description: Track how AI platforms such as ChatGPT mention a brand, with Keytomic AI Visibility. Use when the user asks whether AI search or AI assistants mention their brand, about their AI visibility or share of voice against competitors, which sources AI answers cite, the prompts that Keytomic tracks, or wants to set up AI Visibility, change its prompts or settings, or run a check. --- # AI Visibility Keytomic asks AI platforms the questions that buyers ask (the prompts). It reports how the answers mention the brand and its competitors, the same as the AI Visibility page. The setup researches the site and saves Suggested prompts. Active prompts go into each check. The read tools need the `visibility:read` MCP Scope. The tools that change data or start work need both `visibility:read` and `visibility:write`. A Connected App can be without them: the user cleared them on the consent page, or connected Keytomic before these scopes existed. Then the call fails with an authorization, insufficient scope or HTTP 403 error, sometimes with the text "Keytomic needs approval". This is not the `permission_denied` tool error. Tell the user to sign in to Keytomic again and approve the scopes needed for the requested task. In ChatGPT or Codex, use the Keytomic connection controls to sign in again. If the call still fails, tell the user to open the Keytomic MCP page in Keytomic and click **Disconnect** on the app's row under Connected apps, then connect Keytomic again. Stop until the user connects again. ## Steps 1. Find the site with `list_sites`. Never show a projectId, a promptId or a checkId. 2. Read the state with `get_visibility`. Without `sections`, it returns `overview`: the settings, the limits of the plan, the setup status and the next scheduled check. Add `check`, `prompts` or `suggestions` in `sections` when the request needs them. 3. Pick the tool for the request: | The user asks for | Tool | | --- | --- | | The results: metrics, trend, AI platform scores, competitor share, sources, answers | `get_visibility_report` for a date range | | The answers to one prompt | `get_visibility_report` with `promptId` | | The setup | `start_visibility_setup` | | Prompts to track | `add_visibility_prompts` | | A change to the text or the state of a prompt | `update_visibility_prompt` | | The AI platforms to check, or the run days | `update_visibility_settings` | | A check now | `start_visibility_check` | 4. `start_visibility_setup` researches the site and saves Suggested prompts. Keytomic pays for it. It makes no prompt Active and starts no check. Follow it with the `overview` and `suggestions` sections of `get_visibility`. 5. For `add_visibility_prompts`, `update_visibility_prompt` and `update_visibility_settings`, show the user the change, then get a yes. `update_visibility_settings` replaces the settings: send every value. A text edit of an Active prompt can make a new prompt with a new `promptId`: use the `promptId` of the result after it. 6. `start_visibility_check` uses one observation for each Active prompt on each AI platform. Call it without `confirm` first. It returns a plan and starts nothing. Show the plan to the user: the observations the check needs and the observations left this month. Call again with `confirm` set to `true` only after the user agrees. When the schedule runs the checks, a user can start only the first check of a site. 7. A check runs in the background. Read its results later with `get_visibility` and `get_visibility_report`. ## The report - Name the date range and the AI platforms. - Give the brand's visibility and its trend, the score on each AI platform, the competitor share, and the sources that the answers cite. - For a prompt: its text, how many answers mention the brand, and samples of the answers. - Give the `visibilityUrl` link to the AI Visibility page. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - `feat
Preview of the first 4,000 characters. Read full instructions →
analytics3.64 KB
--- name: analytics description: Report a site's Google Analytics 4 traffic and events from Keytomic. Use when the user asks about users, sessions, new users, bounce rate, traffic sources, top pages, countries, traffic from AI assistants or from organic search, or GA4 events and key events. --- # Analytics Keytomic reads the Google Analytics 4 property that the owner connected to the site, the same data as the Analytics page in Keytomic. These tools need the `analytics:read` MCP Scope. A Connected App can be without it: the user cleared it on the consent page, or connected Keytomic before this scope existed. Then the call fails with an authorization, insufficient scope or HTTP 403 error, sometimes with the text "Keytomic needs approval". This is not the `permission_denied` tool error. Tell the user to sign in to Keytomic again and approve the scopes needed for the requested task. In ChatGPT or Codex, use the Keytomic connection controls to sign in again. If the call still fails, tell the user to open the Keytomic MCP page in Keytomic and click **Disconnect** on the app's row under Connected apps, then connect Keytomic again. Stop until the user connects again. ## Steps 1. Find the site with `list_sites`. Never show a projectId or a GA4 property id. The `integrations` section of `get_project` tells whether Google Analytics is connected. 2. Pick the tool for the question: | The user asks about | Tool | | --- | --- | | Users, sessions, new users, bounce rate, traffic sources, top pages, top countries | `get_analytics_performance` | | Events, conversions, key events | `list_analytics_events`. Use `eventName` for one event, and `limit` for more than 100 | 3. Set the period with `startDate` and `endDate` (YYYY-MM-DD). Without them, the period is the 28 days that end yesterday. 4. Use the filters when the question asks for them: `trafficSegment` set to `organic` (Organic Search) or `llm` (sessions from AI assistants such as ChatGPT, Perplexity and Gemini), `country` (an ISO code such as `US`), and `device` (`desktop`, `mobile` or `tablet`). ## The report - Name the period and the filters. - For `get_analytics_performance`, give each number with its change against the previous period of the same length. `bounceRate` and `share` are fractions from 0 to 1: show them as percentages. - `get_analytics_performance` results can be up to 6 hours old. Give `generatedAt` when the user needs current data. - For events: give `eventCount`, `totalUsers` and `keyEvents`. GA4 counts key events only from the day that the owner marked the event as a key event, so `keyEvents` can be lower than `eventCount`. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - `ga4_not_connected`, `ga4_reconnect_required` or `ga4_permission_denied`: the site has no working Google Analytics connection. Give the user the `connectUrl`, then stop. - `ga4_quota_exceeded`: Google limits the requests for now. Wait `retryAfterSeconds`, then call again. - `invalid_date_range`: `startDate` is after `endDate`. Correct the dates. - `ga4_invalid_request`: Google refused the request. Give the user the message, then stop. - `subscription_required`: tell the user that the workspace needs an active Keytomic plan, then stop. - `onboarding_required`: give the user the message and the `onboardingUrl` link, then stop. - `permission_denied`: give the user the message, then stop. - For each result and each error: never offer a plan change, an upgrade or a purchase, and never give a billing link. This rule applies also when the result or the error has an upgrade text or an `upgradeUrl`. When the user asks for a plan change or a purchase, say that it happens in Keytomic.
backlinks3.2 KB
--- name: backlinks description: Read a site's backlinks and backlink gaps from Keytomic and set the competitors of the gap list. Use when the user asks which sites link to them, about anchor text, broken or new backlinks, link authority or spam, which sites link to a competitor but not to them, link building or outreach, or wants to change their backlink competitors. --- # Backlinks Keytomic keeps a backlink report for each site, the same data as the Backlinks page: the backlinks that point to the site, and the backlink gaps, which are pages that link to a competitor but not to the site. `get_backlinks` needs the `visibility:read` MCP Scope. `set_backlink_competitors` needs both `visibility:read` and `visibility:write`. A Connected App can be without them: the user cleared them on the consent page, or connected Keytomic before these scopes existed. Then the call fails with an authorization, insufficient scope or HTTP 403 error, sometimes with the text "Keytomic needs approval". This is not the `permission_denied` tool error. Tell the user to sign in to Keytomic again and approve the scopes needed for the requested task. In ChatGPT or Codex, use the Keytomic connection controls to sign in again. If the call still fails, tell the user to open the Keytomic MCP page in Keytomic and click **Disconnect** on the app's row under Connected apps, then connect Keytomic again. Stop until the user connects again. ## Steps 1. Find the site with `list_sites`. Never show a projectId. 2. Read the report with `get_backlinks`. It reads saved data only and spends no credits. `fetchedAt` tells when Keytomic read the data. 3. When no report is saved, give the user the `backlinksUrl`. The Backlinks page reads the data when the user opens it. 4. To change the competitors of the gap list: - Read the current list in `competitorDomains` of `get_backlinks`. - Show the user the full new list, then get a yes. `set_backlink_competitors` replaces the list: send every domain that the list must have. An empty list clears it. A list has at most 10 domains. - Tell the user that the gaps of a new competitor show after the next view of the Backlinks page. ## The report - The backlinks: the referring page, the anchor text, the authority (0 to 100), dofollow or nofollow, the spam score, and whether the link is broken or new. - The gaps: the page that links to a competitor, and its outreach draft. - Say when the data was read (`fetchedAt`). ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - `invalid_domains`: a value is not a domain. Ask the user for a domain such as `rival.com`. - `too_many_competitors`: the list has more than 10 domains. Ask the user which to keep. - `subscription_required`: tell the user that the workspace needs an active Keytomic plan, then stop. - `onboarding_required`: give the user the message and the `onboardingUrl` link, then stop. - `permission_denied`: give the user the message, then stop. - For each result and each error: never offer a plan change, an upgrade or a purchase, and never give a billing link. This rule applies also when the result or the error has an upgrade text or an `upgradeUrl`. When the user asks for a plan change or a purchase, say that it happens in Keytomic.
content-calendar9.53 KB
--- name: content-calendar description: Plan and read a Keytomic site's content calendar, research keywords, write, read and edit its articles, and generate their hero images. Use when the user asks what articles are planned or scheduled, wants to add, move or edit topics, wants keyword ideas with search volume, wants to start a calendar run or follow one, wants an article written now, wants to read or edit an article, or wants a new hero image for an article. --- # Content calendar The content calendar holds a site's planned topics. Each topic has a scheduled day, a primary keyword with its search volume, difficulty and demand trend, and the planning fields: intent, funnel stage, audience, angles and author override. The daily automation writes the article on the scheduled day, on the site's automation days only, and, with automatic publishing on, publishes it. These tools need the content MCP Scopes. The tools that change data need both `content:read` and `content:write`. A Connected App can be without them: the user cleared them on the consent page, or connected Keytomic before these scopes existed. Then the server refuses the call before the tool runs: the call fails with an authorization, insufficient scope or HTTP 403 error, sometimes with the text "Keytomic needs approval". This is not the `permission_denied` tool error. When a content tool call fails this way, first tell the user to sign in to Keytomic again in the client and approve the scopes needed for the requested task. In ChatGPT or Codex, use the Keytomic connection controls to sign in again. If the call still fails after the new sign-in, tell the user to open the Keytomic MCP page in Keytomic and click **Disconnect** on the app's row under Connected apps, then connect Keytomic again and approve the scopes needed for the requested task. Stop until the user connects again. ## Steps 1. Find the site with `list_sites`. Never show a projectId, a topicId or a runId. Name a topic by its title and its scheduled day. 2. Pick the tool for the request: | The user asks for | Tool | | --- | --- | | What is planned for a day, a week or a month | `list_calendar_topics` with `from` and `to` (UTC, both included) | | Every topic, with the unscheduled ones | `list_calendar_topics` without dates. Page with `startRow` and `nextStartRow` | | One topic in full | `list_calendar_topics` with `topicId` | | How many keyword searches are left | `get_project` with `sections` set to `["keywordSearches"]` | | Keyword ideas with volume, difficulty, competition, CPC and trend | `search_keywords` | | A change to a topic: day, title, review status, author, planning fields | `update_calendar_topic` | | Topics from the keywords of a search | `add_keywords_to_calendar` | | A topic from a title the user writes | `create_calendar_topic` | | A new content calendar plan | `start_content_calendar` | | How a calendar run is going | `get_content_calendar_progress`. Without a `runId`, it reads the run in progress | | The article of a topic, written now | `generate_article` | | The text of an article | `get_draft` | | A change to an article: title, slug, SEO title and description, text | `update_draft` | | A new hero image for an article | `generate_hero_image`, with `creativeDirection` and `exclusions` from the user's words | 3. Before each paid tool, tell the user what the call uses and what is left, then get a yes: - `search_keywords` and `create_calendar_topic` use 1 of the site's monthly keyword searches each. Read the `keywordSearches` section of `get_project` first. - `add_keywords_to_calendar` uses no keyword search. For `add_keywords_to_calendar` and `create_calendar_topic`, the site must have articles left this month, or Article Credits, for the new topics. - `generate_hero_image` uses 1 Blog Hero Credit. Keytomic also calls these credits image credits. - `start_content_calendar`, `generate_article` and `generate_hero_image`: call
Preview of the first 4,000 characters. Read full instructions →
indexing4.36 KB
--- name: indexing description: Check and request the indexing of a site's pages on Google and Bing with Keytomic. Use when the user asks whether their posts or URLs are indexed, why a page is not indexed, when Google or Bing last crawled a page, or wants to submit URLs or sitemaps to Google or Bing. --- # Indexing Keytomic reads the indexing status of a site's pages from Google Search Console and Bing Webmaster Tools. It also submits URLs and sitemaps to them. `get_indexing_status` and `inspect_urls` read Google data with the `gsc:read` MCP Scope and Bing data with the `analytics:read` MCP Scope. An engine whose scope the Connected App does not have gives the status `scope_missing`. `submit_for_indexing` needs the `indexing:write` MCP Scope. A Connected App can be without it: the user cleared it on the consent page, or connected Keytomic before this scope existed. Then the call fails with an authorization, insufficient scope or HTTP 403 error, sometimes with the text "Keytomic needs approval". This is not the `permission_denied` tool error. Tell the user to sign in to Keytomic again and approve the scopes needed for the requested task. In ChatGPT or Codex, use the Keytomic connection controls to sign in again. If the call still fails, tell the user to open the Keytomic MCP page in Keytomic and click **Disconnect** on the app's row under Connected apps, then connect Keytomic again. Stop until the user connects again. ## Steps 1. Find the site with `list_sites`. Never show a projectId or a topicId. 2. Pick the tool for the request: | The user asks for | Tool | | --- | --- | | The indexing status of the posts that Keytomic published | `get_indexing_status`. It reads saved data and makes no Google or Bing call | | The saved Google report of one post | `get_indexing_status` with `url` or `topicId` | | A live check of URLs on Google and Bing | `inspect_urls`, with up to 50 URLs | | A request to index URLs or sitemaps | `submit_for_indexing` | 3. `inspect_urls` uses Google's limit of about 2,000 inspections per property per day. Bing allows only a few calls a minute. Keytomic checks only the first URLs live on Bing, and gives its saved Bing result for the others. Inspect only the URLs that the user asks about. 4. Before `submit_for_indexing`, tell the user what goes to each engine, then get a yes: - Google takes sitemaps only. With `urls`, Google gets the preferred sitemap of the site. With `sitemapUrls`, every engine gets those sitemaps. With neither, every engine gets the known sitemaps of the site. - Google needs a connected account with Owner or Full permission on the property. - Bing takes URLs and sitemaps. Each URL uses the Bing URL quota of the site. A sitemap uses none. 5. Google and Bing read a submit later, so `inspect_urls` shows no change at once. Tell the user so. ## The report - For a status: the published, indexed and pending numbers, then each post that needs attention, with its Google and Bing status. Bing gives crawl dates only, so a Bing status is `crawled` or `not_indexed`, never `indexed`. - For a live check: each URL with its Google verdict, coverage and last crawl, and its Bing status. - For a submit: each engine with its status (`accepted`, `skipped` or `failed`), the reason, and what it sent. For Bing, give the URL quota that is left. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - An engine with the status `not_connected`: the site has not connected it. The owner connects it in Keytomic. - An engine with the status `scope_missing`: tell the user to sign in to Keytomic again and approve the scopes needed for the requested task. - A Google entry with `detail.error`: give the user the message. When it has a `connectUrl`, give the link, then stop the calls to Google. - `gsc_quota_exceeded`: Google rate limits the requests. Inspect the remaining URLs later. - `subscription_required`: tell the user that the workspace needs an active Keytom
Preview of the first 4,000 characters. Read full instructions →
publishing5.69 KB
--- name: publishing description: Publish a Keytomic article to the site's CMS and check where it was published. Use when the user wants to publish an article, send it to WordPress, Webflow, Shopify, Framer, Contentful, Notion, GoHighLevel, a webhook or an API destination as a draft or live, or asks whether or where an article was published. --- # Publishing Keytomic publishes the article of a content calendar topic to a publishing destination of the site: a CMS, a webhook or an API destination that the owner connected in Keytomic. A destination takes the article as a draft or live. `publish_draft` needs the `content:publish` and `content:read` MCP Scopes. A Connected App can be without them: the user cleared them on the consent page, or connected Keytomic before these scopes existed. Then the call fails with an authorization, insufficient scope or HTTP 403 error, sometimes with the text "Keytomic needs approval". This is not the `permission_denied` tool error. Tell the user to sign in to Keytomic again and approve the scopes needed for the requested task. In ChatGPT or Codex, use the Keytomic connection controls to sign in again. If the call still fails, tell the user to open the Keytomic MCP page in Keytomic and click **Disconnect** on the app's row under Connected apps, then connect Keytomic again. Stop until the user connects again. ## Steps 1. Find the site with `list_sites`. Never show a projectId, a topicId or a destinationId. Name a topic by its title and its scheduled day, and a destination by its name and provider. 2. Find the topic with `list_calendar_topics`. The topic must have an article. When it has none, offer to write it with the content-calendar skill. 3. Read the destinations with `get_project` and `sections` set to `["destinations"]`: - No destination: give the user the `connectUrl`, where the owner connects one in Keytomic, then stop. - A destination with status `needs_attention`: give the user its `fixUrl`, and do not publish to it. - Several destinations: ask the user which one. 4. Pick the mode. `draft` (the default) sends the article as a draft. `publish` makes it live. A destination with draftMode `not_supported` takes only `publish`. For a destination with draftMode `receiver_decides` (a webhook), the receiver decides. 5. Before the first call to `publish_draft`, tell the user the article, the destination and the mode, then get a yes. A first draft to a GoHighLevel destination runs on this call. 6. Call `publish_draft` without `confirm`. When the result has status `plan`, nothing was sent. Show the plan to the user: the destination, the mode, the expected URL, whether it adds a new post or updates an earlier one, and whether it uses a daily publish, with the publishes left today. Call again with `confirm` set to `true` only after the user agrees. 7. When a call that publishes times out or answers `internal_error`, read `get_publication_status` before you call `publish_draft` again. The publish can still finish, and a second call can use a second daily publish or add a second post. 8. When the user asks whether or where an article was published, read `get_publication_status`. It gives the latest publication for each mode of each destination that has one. ## The report - After a publish: the status (`sent_as_draft`, `published`, or `sent_to_receiver` for a webhook), the public URL (a draft has none), whether it updated an earlier post, and whether it used a daily publish. - For a status question: each destination with its mode, its status (`pending`, `succeeded` or `failed`) and its URL. For a failed publication, give its `failureMessage` and its `fixUrl`. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - `publishing_destination_unavailable`: the destination was removed, needs a reconnect, or belongs to another site. Read the `destinations` section of `get_project` again, and give the user the `fixUrl`. - `destination_setup_required`: the destination
Preview of the first 4,000 characters. Read full instructions →
reddit-opportunities3.92 KB
--- name: reddit-opportunities description: Find Reddit threads where a site can answer, with Keytomic Reddit Opportunities, and write reply drafts. Use when the user asks for Reddit threads to answer, Reddit marketing, a reply to a Reddit thread, the topics or subreddits that Keytomic scans, or wants to mark a thread done or hide it. --- # Reddit Opportunities Keytomic scans Reddit each day for threads about a site's topics and keeps the threads that fit, the same as the Reddit Opportunities page. Nothing posts to Reddit: the user copies a reply draft and posts it. The read tools need the `visibility:read` MCP Scope. The tools that change data or start work need both `visibility:read` and `visibility:write`. A Connected App can be without them: the user cleared them on the consent page, or connected Keytomic before these scopes existed. Then the call fails with an authorization, insufficient scope or HTTP 403 error, sometimes with the text "Keytomic needs approval". This is not the `permission_denied` tool error. Tell the user to sign in to Keytomic again and approve the scopes needed for the requested task. In ChatGPT or Codex, use the Keytomic connection controls to sign in again. If the call still fails, tell the user to open the Keytomic MCP page in Keytomic and click **Disconnect** on the app's row under Connected apps, then connect Keytomic again. Stop until the user connects again. ## Steps 1. Find the site with `list_sites`. Never show a projectId or an opportunityId. Name a thread by its title and its subreddit. 2. Pick the tool for the request: | The user asks for | Tool | | --- | --- | | The topics, the subreddits, the Agent Mode and the scan times | `get_reddit_settings` | | The threads to answer | `list_reddit_threads` with `view` set to `open` | | The threads that left the open list | `list_reddit_threads` with `view` set to `history` | | New topics, subreddits or Agent Mode | `update_reddit_settings` | | A scan now | `scan_reddit` | | A reply draft for a thread | `generate_reddit_reply` | | Mark a thread done, hide it, or restore it | `set_reddit_opportunity_status` | 3. For `update_reddit_settings`, read `get_reddit_settings` first. The save replaces the settings: send every value. Show the user the new settings, then get a yes. New topics make one AI call. The next daily scan uses the new settings. 4. `scan_reddit` starts a scan in the background. A site can start one scan each UTC day, and Keytomic pays for it. Get a yes first. Read the new threads later with `list_reddit_threads`. 5. `generate_reddit_reply` makes one AI call and adds a new reply draft to an open thread. Get a yes first. The draft follows the Agent Mode of the site and the Brand Mention Safety of the thread. ## The report - For each open thread: the title, the subreddit, the relevance score (0 to 100), why it fits, the Brand Mention Safety, and the newest reply draft. - For a reply draft: the text, and a reminder that the user copies it from the Reddit Opportunities page and posts it. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - A `manual_check_used` result: the site used its scan of today. Give `checkNowAvailableAt`, then stop. - `opportunity_not_found`: the thread is not on the open list. Read `list_reddit_threads` again. - A `reply_failed` result: the reply broke the brand rules of the thread, and Keytomic saved no draft. Tell the user so. - `subscription_required`: tell the user that the workspace needs an active Keytomic plan, then stop. - `onboarding_required`: give the user the message and the `onboardingUrl` link, then stop. - `permission_denied`: give the user the message, then stop. - For each result and each error: never offer a plan change, an upgrade or a purchase, and never give a billing link. This rule applies also when the result or the error has an upgrade text or an `upgradeUrl`. When the user asks for a plan change or a purchase, say that it happ
Preview of the first 4,000 characters. Read full instructions →
search-console-review3.89 KB
--- name: search-console-review description: Answer questions about a site's Google Search performance from Keytomic's Search Console tools. Use when the user asks about clicks, impressions, rankings, queries, pages that gain or lose traffic, quick wins, keyword cannibalization, pages with no traffic, question searches, sitemaps, or the index status of URLs. --- # Search Console review Keytomic reads the site's connected Google Search Console property. The insight tools answer the common questions with tested thresholds and say how in a `method` block. The raw tools return Google's data as it is. ## Steps 1. Find the site with `list_sites`. The result says whether Search Console is connected. When it is not, read `get_project` with `sections` set to `["integrations"]`. Give the returned Search Console `connectUrl` and stop. Never show a projectId. 2. Start with `get_search_performance` for the period the user names, or the default period. It gives clicks, impressions, CTR and average position, the change against the comparison period, and the top queries and pages. 3. Pick the `kind` of `get_search_insight` for the question. Each kind takes `projectId` and its own inputs, such as a period, or `dimension` set to `query` or `page`. The tool description lists the inputs of each kind: | The user asks about | `kind` | | --- | --- | | The best queries or pages | `top_rankings` (set `sortBy` to `impressions` for visibility) | | What is new in search | `new_rankings` | | What gains | `improving` | | What loses, and why | `declining` (each page carries a likely cause: position, demand or CTR loss) | | Quick wins just below the top | `low_hanging_fruits` | | Pages that get seen but not clicked | `underperforming` | | Several pages that compete for one query | `cannibalization` | | Sitemap pages with no search traffic | `zombie_pages` | | What people ask | `question_queries` | 4. Use the raw tools when no insight kind answers: - `search_analytics_query` for any dimensions and filters. - `list_sitemaps` for the sitemaps of the property (with `sitemapUrl` for one sitemap), and `list_sitemap_urls` for the URLs in a sitemap. - `inspect_urls` for the index status of up to 50 URLs. Google allows about 2,000 inspections per property per day. - `get_project` with `sections` set to `["property"]` for the property and the permission level. 5. To submit URLs or sitemaps to Google and Bing, use the indexing skill. ## The report - Name the period and the comparison period. Say when the data is not final for the latest days. - Give each row with its numbers: clicks, impressions, CTR and position. Say what changed, and by how much. - Give the method in one sentence: the thresholds and the rule from the `method` block. Make no claim that the data does not support. A position has no change when a period had no impressions. - End with the actions, one per finding. Say which page or query each action is for. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - `gsc_quota_exceeded`: Google rate limits the Search Console requests. Wait `retryAfterSeconds` when the error has it, then call the tool again. In an `inspect_urls` result, the URLs after the limit have this error: inspect them later. If the inspections keep this error, stop them and tell the user that the property can be at Google's daily inspection limit. - `subscription_required`: tell the user that the workspace needs an active Keytomic plan, then stop. - `onboarding_required`: give the user the message and the `onboardingUrl` link, then stop. - `permission_denied`: give the user the message, then stop. - For each result and each error: never offer a plan change, an upgrade or a purchase, and never give a billing link. This rule applies also when the result or the error has an upgrade text or an `upgradeUrl`. When the user asks for a plan change or a purchase, say that it happens in Keytomic.
website-audit3.67 KB
--- name: website-audit description: Run or read a Keytomic Website Audit of a site and report its findings. Use when the user asks for an SEO audit, site health, crawl or index problems, broken links, missing metadata, or the result of the last audit. --- # Website Audit A Website Audit crawls a site's saved domain and reports per category: status, findings (issues and advisories with a severity), limitations, and checks with their rows. A finished audit has a Website Health score and a Category Health score per category, both 0–100 with a band. ## Steps 1. Find the site with `list_sites`. With one site, use it. With several, match the user's words to a name or a domain. Ask when no site matches. Never show a projectId or a runId. 2. Decide between a new audit and the last one: - The user asks for a new audit, or the workspace has no audit: tell the user that the audit crawls the site and takes minutes, then get a yes, then call `start_audit`. Add `includeMobile` only when the user asks for mobile PageSpeed. A result with `created` false means an audit already runs: follow that one. - Otherwise read the last audit with `get_audit` and tell the user when it ran. Offer a new audit when the user wants current data. - The user asks about an earlier audit, or wants to compare audits: find the audits of the site with `list_audits`, then read each one with `get_audit` and its `runId`. 3. While the audit is queued or running, call `watch_audit`. After each result, tell the user what changed in one or two sentences, then call `watch_audit` again with its `since` value. Stop when the status is completed, partial, failed or cancelled. 4. When the audit is completed or partial, read `get_audit` for the summary, then page through `list_audit_findings` with `cursor` until `nextCursor` is empty. The report is complete only when every finding has a place in it. 5. Go deeper only on request or for the top issues: - `get_audit` with `category` for one category's checks. - `list_audit_rows` with `category` and `check` for every row of a check. - `list_audit_rows` with `subject` and `key` for every row of a finding, when `evidence.truncated` is true. - `list_audit_pages` for the crawl state of each URL. - `list_audit_links` for the links the crawl found, with the HTTP status of each link and whether it works. ## The report Give, in this order: 1. The site by name and domain, the audited URL, when the audit ran, and the Website Health score with its band. 2. Each category with its status and Category Health score. A category fails only for a high-severity issue. 3. The issues, highest severity first. For each: the number and type of affected items, why it matters, and the recommended fix, from `whyItMatters` and `recommendedFix`. Give a sample of affected URLs. 4. The limitations: what the audit did not check, and why. 5. The link to the audit in Keytomic from `seoAuditUrl`. Keep advisories out of the issue list. Group them in one short list at the end. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - `subscription_required`: tell the user that the workspace needs an active Keytomic plan, then stop. - `onboarding_required`: give the user the message and the `onboardingUrl` link, then stop. - `permission_denied`: give the user the message, then stop. - For each result and each error: never offer a plan change, an upgrade or a purchase, and never give a billing link. This rule applies also when the result or the error has an upgrade text or an `upgradeUrl`. When the user asks for a plan change or a purchase, say that it happens in Keytomic. - Any other error: tell the user what it says. Before a next step that starts work, ask the user.
workspace-setup4.21 KB
--- name: workspace-setup description: Read and edit a Keytomic site's brand profile, Article Settings, indexing settings, author profiles, plan, Usage Limits and integrations. Use when the user asks what Keytomic knows about their brand, wants to change the brand voice, audience, guardrails, offer, tone, article length, authors, or post URL prefix, or asks what their plan allows or which integrations a site has. --- # Workspace setup The brand profile is the owner's. Content generation uses it only after the owner completes the brand profile review in Keytomic. Edits through these tools spend no credits. ## Steps 1. Find the site with `list_sites`. Never show a projectId. 2. Read the site with `get_project` before any advice or edit. Without `sections`, it returns `profile`, `settings` and `integrations`. Add `usage` in `sections` for the plan: - `profile`: name and domain, the brand profile (metadata, audience, Brand Voice, Content Guardrails, Offer Positioning, competitors), whether the review is complete, the setup checklist and the Domain Rating. - `settings`: Article Settings, indexing settings, the automatic blog schedule and the author profiles with the default author. - `usage`: the plan, the subscription state, and each Usage Limit with what is used and what is left. - `integrations`: Search Console, Google Analytics, Bing Webmaster and each Shopify store, with the status of each. Request the `destinations` section separately for publishing destinations. An integration that is not connected, or needs attention, has a `connectUrl`. Only the owner connects or fixes it, in Keytomic. 3. Report the state. Name what is missing from the setup checklist, whether the review is complete, and the Usage Limits that are near their cap. 4. For an edit, show the user the exact fields and the new values, then get a yes, then call the tool: | Edit | Tool | Note | | --- | --- | --- | | Brand profile fields | `update_brand_profile` | `brandVoice`, `audienceProfile` and `contentGuardrails` replace the whole section: send every field of the section with the current values from the `profile` section. The other fields change one at a time. | | Article length, tone, voice, links, images, YouTube, author override | `update_project_settings` with `articleSettings` | Only the named fields change. | | URL prefix of the site's posts | `update_project_settings` with `indexing.urlPrefix` | `null` clears it. | | Add an author | `save_author_profile` without `authorProfileId` | The first author becomes the default. One call makes one author. | | Change an author | `save_author_profile` with `authorProfileId` | Send every field with the current values from the `settings` section. | | Default author | `save_author_profile` with `authorProfileId` and `makeDefault` set to `true` | | | Remove an author | `delete_author_profile` | Ask the user first. The result says which author became the default. | 5. After the edit, read the site again and confirm the new values to the user. ## Limits - The brand profile review happens in Keytomic. Give the user the link from the `profile` section: `profileUrl`. - The automatic blog schedule is also set in Keytomic, in the site's automatic blog settings. No tool returns a link to it, so do not give `profileUrl` for it. - Plan changes and purchases also happen in Keytomic. No tool changes the plan. The billing rule in Errors applies. - Competitors, the sitemap inventory, screenshots and the Domain Rating are not editable here. - Put new content rules in Content Guardrails, Brand Voice or Offer Positioning. The legacy custom instructions field is read only. ## Errors - `retryable` true: wait `retryAfterSeconds`, then call the tool again. - `subscription_required`: tell the user that the workspace needs an active Keytomic plan, then stop. - `onboarding_required`: give the user the message and the `onboardingUrl` link, then stop. - `permission_denied`: give the user the mess
Preview of the first 4,000 characters. Read full instructions →
Release notes
Version 1.1.1 replaces the single combined skill with ten workflow skills from epicx-labs/keytomic-claude-plugin. Covers audits, Search Console, Analytics, indexing, workspace settings, content, publishing, backlinks, Reddit, and AI visibility. Adapts connection guidance for ChatGPT and Codex and corrects two section lookups. Preserves the server endpoint, listing, icon, starter prompts, and review cases from 1.1.0. Server findings and review approval remain separate.
Declared in the saved package. Remote tools may change independently.
Package details
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
- Package author
- Keytomic
- Keywords
- See keywords
- Declared availability
- No country restrictions declaredDeclared regions; live availability may differ.
- Commerce declaration
- Does not support commerceThis does not establish whether access is free or paid.
- Review scenarios
- 5 positive · 3 negativeScenario counts, not test results.
Package observed Nov 6, 2026.
Technical details
- First seen
- Nov 5, 2026 · 00:00 UTC
- Last seen
- Nov 6, 2026 · 18:00 UTC
- Collection status
- Collected
plugin_asdk_app_6ae3e39ed13c81919864cca28b02d8ec
Download plugin data (JSON)Plugin details: served from cache. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.