{"schema_version":"1.0","updated_at":"2026-10-01","canonical":"https://timetopost.co/use-cases/","mcp_endpoint":"https://api.timetopost.co/mcp","availability_note":"Available workflows may depend on account plan, connected integrations and current capabilities. Guide-only workflows provide instructions without claiming an automated product action. Planned workflows are not available yet. Check capabilities before mutations.","use_cases":[{"id":"content-prep-x-weighted-count","query":"Why does X say my post is too long when my document says it is under 280 characters?","primaryKeyword":"X character count","relatedQueries":["weighted tweet length","X post too long"],"category":"Content preparation","audience":"People drafting standard X posts","task":"Review a draft against X's documented weighted-character rules and use the official X composer for final validation.","freeAsset":"X weighted-count guide","guide":["Paste the complete draft into a private working document, including spaces, line breaks, hashtags, mentions, emoji, and URLs.","Review X's documented weighted rules, including its treatment of URLs, emoji sequences, and characters outside the single-weight ranges.","Revise text that is likely to exceed the standard-post allowance without relying on the TimeToPost character counter as a weighted validator.","Paste the final draft into the official X composer and use its displayed limit as the final validation before publishing or scheduling."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this X draft locally using the documented categories that can differ from a simple Unicode code-point count: <DRAFT>. Identify URLs, emoji sequences, CJK text, combining sequences, mentions, and hashtags that require attention. Do not claim an exact weighted length or validity. Instruct the user to paste the final draft into the official X composer for final validation. Do not publish or save anything.","paidNextStep":"A paid TimeToPost plan can schedule or publish a valid standard post to a connected X account.","availability":"guide-only","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. Confidence reflects documented weighted-count differences that can cause composer rejections."},{"id":"content-prep-x-link-budget","query":"How many X characters does a long article link actually use?","primaryKeyword":"X link character count","relatedQueries":["t.co link length","X URL character limit"],"category":"Content preparation","audience":"Writers sharing articles on X","task":"Plan surrounding copy while accounting for X's documented URL treatment, with final validation in the official X composer.","freeAsset":"X link-budget guide","guide":["Paste the proposed post into a private working document and leave each destination URL in its intended position.","Identify each URL and note that X documentation describes transformed links as using a fixed t.co length, currently 23 characters.","Revise the surrounding copy conservatively without treating the TimeToPost character counter as a weighted X validator.","Make sure nearby words explain what the reader will open instead of presenting an unexplained link.","Paste the complete draft into the official X composer and use its displayed limit for final validation."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this X draft locally: <DRAFT>. List apparent URLs and note the documented 23-character t.co treatment as a planning rule. Do not claim an exact total, remaining budget, or validity because URL parsing and final acceptance must be checked in the official X composer. Also report whether nearby text explains each destination. Do not save or publish.","paidNextStep":"A paid TimeToPost plan can publish a human-validated link post to a connected X account when the required connection and scopes are available.","availability":"guide-only","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters","https://accessible.org/social-media-content-accessibility/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. The 23-character URL cost is documented, while demand for a dedicated link worksheet is inferred."},{"id":"content-prep-x-emoji-weight","query":"How many characters does an emoji use on X, including skin tones and family emoji?","primaryKeyword":"X emoji character count","relatedQueries":["emoji weighted length","family emoji X count"],"category":"Content preparation","audience":"Creators using emoji in X posts","task":"Review emoji sequences that may differ from a simple code-point count and validate the completed post in the official X composer.","freeAsset":"Emoji weight checklist","guide":["Paste the exact line containing each emoji, including skin-tone modifiers and joined family sequences.","Identify complete grapheme or emoji sequences instead of assuming that one visible symbol equals one Unicode code point.","Consult X's documented weighted rules for recognized emoji sequences, but do not use the TimeToPost character counter as a weighted validator.","Check whether any emoji conveys meaning that is absent from the surrounding words and add a short textual gloss when needed.","Paste the completed post into the official X composer for final limit validation."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Inspect this X text locally: <TEXT>. Identify likely emoji sequences, joined sequences, modifiers, and places where a simple code-point count differs from visible graphemes. Do not claim exact X weights, total length, or validity. Suggest an optional textual gloss where an emoji carries otherwise missing meaning, and require final validation in the official X composer. Do not save or publish.","paidNextStep":"A paid plan can schedule the validated standard post on X.","availability":"guide-only","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters","https://accessible.org/social-media-content-accessibility/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. X documents emoji weight 2, including joined sequences, but tool demand was not measured."},{"id":"content-prep-x-cjk-count","query":"Why does my Japanese, Chinese, or Korean X post run out of room before 280 characters?","primaryKeyword":"X CJK character limit","relatedQueries":["Japanese X post length","CJK weighted characters"],"category":"Content preparation","audience":"CJK and bilingual X authors","task":"Review a CJK or bilingual draft under X's documented weighting categories and shorten it without transliteration.","freeAsset":"CJK length worksheet","guide":["Paste the original-language draft without transliterating it.","Identify CJK spans that are treated differently from single-weight Latin characters under X's documented rules.","Remove repetition or optional qualifiers while preserving names, figures, factual meaning, and the original language.","Do not treat the TimeToPost character counter's Unicode code-point total as an X weighted total.","Paste the shortened draft into the official X composer and use its displayed limit for final validation."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this original-language X draft locally: <DRAFT>. Identify CJK spans and suggest a shorter draft that preserves the language, names, figures, and factual claims. Do not report an exact weighted length, excess, remaining count, or validity. Require final validation in the official X composer. Do not save or publish.","paidNextStep":"A paid plan can schedule the validated language variant on X.","availability":"guide-only","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. The weight-2 CJK rule is documented, but public demand for this specific helper was not measured."},{"id":"content-prep-x-hashtag-budget","query":"How many characters do my hashtags add to an X post?","primaryKeyword":"X hashtag character count","relatedQueries":["hashtag length checker","X hashtag budget"],"category":"Content preparation","audience":"Social editors adding hashtags to X captions","task":"Review how hashtags contribute to an X draft and remove optional tags when the official composer shows an overflow.","freeAsset":"Hashtag budget table","guide":["Separate the core caption from the proposed hashtag list.","Review each hashtag as typed, including its number sign and text, while remembering that the complete post is subject to X's weighted rules.","Preserve the complete sentence before deciding which optional tags to remove.","Use the official X composer to test the combined post and remove optional tags if its limit display shows an overflow.","Return one composer-validated post and a separate unused-tag list without claiming an ideal hashtag count."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this caption and hashtag list locally. Caption: <CAPTION>. Hashtags: <HASHTAGS>. Return the caption, individually listed tags, a proposed final post, and an unused-tag list. Do not claim exact X weights, remaining characters, or validity. Require the official X composer for final validation. Do not save or publish.","paidNextStep":"A paid plan can publish the fitting post on X, with any separate reply treated as another X post.","availability":"guide-only","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. X documents that hashtags count as typed; the need for a dedicated budget table is inferred."},{"id":"content-prep-alt-hashtag-separation","query":"Should I put hashtags in image alt text when they do not fit in the caption?","primaryKeyword":"hashtags in alt text","relatedQueries":["alt text hashtags","move hashtags from alt"],"category":"Content preparation","audience":"Creators preparing accessible image posts","task":"Separate visual description from discovery hashtags.","freeAsset":"Alt text cleanup checklist","guide":["Copy the visible caption, proposed alt text, and hashtag list into separate private fields.","Remove hashtag tokens from the alt text while retaining details that describe the image.","Produce cleaned alt text and a separate list of removed tags.","Add only useful tags to the visible caption, then validate the completed post in the official X composer rather than relying on a simple character count.","Keep remaining tags outside the alt field and do not claim that alt text supplies search reach."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Clean these fields locally. Caption: <CAPTION>. Alt text: <ALT_TEXT>. Return JSON with cleanedAltText, removedHashtags, revisedCaption, and unresolvedTags. Alt text must remain a visual description. Do not claim an exact X weighted length or validity; instruct the user to validate the caption in the official X composer. Do not save or publish.","paidNextStep":"A paid plan can upload media and publish an X post after the author supplies and confirms the final caption and alt text.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume is available. Official guidance defines alt text as an image description; observed discussion was limited and not used as proof of X search behavior."},{"id":"content-prep-x-tag-reply","query":"How can I move overflow hashtags into an X reply without breaking the main image caption?","primaryKeyword":"hashtags in X reply","relatedQueries":["X hashtag reply","split caption and tags"],"category":"Content preparation","audience":"Creators whose image captions exceed 280 with hashtags","task":"Prepare a valid main image post and a separate tag reply while explaining their different roles.","freeAsset":"Two-post caption template","guide":["Provide the image caption and all proposed hashtags.","Keep the complete message in the main post and move only optional overflow tags to a separate reply draft.","Review the main post and reply separately, without treating a simple Unicode code-point count as X weighted validation.","Do not start the reply with an account mention unless the author intentionally wrote one.","Validate both drafts separately in the official X composer and describe the reply as separate distribution without promising identical reach."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Split this X content locally. Caption: <CAPTION>. Hashtags: <HASHTAGS>. Return JSON with mainPost and reply, each containing text and role, plus a visibilityCaution explaining that the reply is separate from the original post. Do not claim exact weighted lengths or validity. Require official X composer validation for each draft. Do not save or publish.","paidNextStep":"A paid plan can schedule the main post and reply as separate public X posts.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/types-of-posts","https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume is available. The counting and leading-mention constraints are documented, while demand for this exact split workflow is inferred."},{"id":"content-prep-camelcase-hashtags","query":"How should I format a multi-word hashtag for screen readers?","primaryKeyword":"CamelCase hashtags","relatedQueries":["accessible hashtags","capitalize hashtag words"],"category":"Content preparation","audience":"Social editors performing accessibility checks","task":"Convert multi-word phrases into capitalized hashtags with visible word boundaries.","freeAsset":"CamelCase hashtag formatter guide","guide":["Input: list each intended hashtag as ordinary words, such as open data day.","Check: remove spaces and capitalize the first letter of each word.","Output: convert the example to #OpenDataDay and show the recovered words.","Check: preserve official capitalization for names and acronyms instead of blindly title-casing them.","Output: count the formatted tag as part of the final X post before use."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Convert these phrases locally into accessible multi-word hashtags: <PHRASES>. Return JSON with items containing phrase, hashtag, recoveredWords, and notesForNamesOrAcronyms. Do not save or publish.","paidNextStep":"A paid plan can insert the accepted hashtags into a scheduled X draft.","availability":"guide-only","evidenceUrls":["https://accessible.org/social-media-content-accessibility/","https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume is available. CamelCase advice appeared in an accessibility source extract, and demand for a formatter was not independently observed."},{"id":"content-prep-x-alt-length","query":"What is the image description limit on X, and does alt text need to stay under 125 characters?","primaryKeyword":"X alt text limit","relatedQueries":["X image description length","alt text 1000 characters"],"category":"Content preparation","audience":"Editors writing X image descriptions","task":"Use a simple Unicode code-point count as an editing aid for X image descriptions, with final field validation on X.","freeAsset":"Alt text length checklist","guide":["Paste only the image description, not the visible post caption, into the character counter.","Read the displayed total as a simple Unicode code-point count. It is not a grapheme count and may differ for joined emoji or combining sequences.","Use X's documented 1,000-character maximum as a review target, but do not treat the counter as a guarantee that the platform will accept the text.","Treat 200 to 250 characters only as an optional succinctness review point, not a blocking platform limit.","Retain essential visual information and confirm the final description in X's image-description field."],"toolUrl":"https://timetopost.co/tools/character-counter/","mcpTools":[],"mcpPrompt":"Review this X image description locally: <ALT_TEXT>. Return JSON with a simple Unicode code-point count, a note that grapheme and platform counting can differ, repeatedDetails, and an optional conciseRevision. Do not enforce a 125-character cap or guarantee acceptance under X's 1,000-character field limit. Require final validation in X's image-description field. Do not save or publish.","paidNextStep":"A paid plan can attach confirmed alt text to uploaded media before an X post is published.","availability":"available","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions","https://mefmobile.org/just-how-long-should-alt-text-be-theres-no-universal-character-limit/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. X officially documents the 1,000-character limit and discusses the obsolete 200 to 250 character cutoff."},{"id":"content-prep-x-alt-prefix","query":"Should X alt text start with photo of or image of?","primaryKeyword":"alt text photo of","relatedQueries":["image of in alt text","screenshot alt text"],"category":"Content preparation","audience":"People writing descriptions for X images and screenshots","task":"Remove redundant image prefixes while retaining useful media-type information.","freeAsset":"Alt text prefix linter guide","guide":["Input: provide the draft description and identify whether the asset is a screenshot, illustration, painting, or photograph.","Check: remove a generic opening such as photo of, image of, or picture of.","Output: retain or add Screenshot of when the fact that it is a screenshot matters.","Check: keep useful form details such as close-up, aerial view, black and white, or illustration.","Output: return a full-sentence description within X's 1,000-character maximum."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Lint this X alt text locally: <ALT_TEXT>. Asset type: <ASSET_TYPE>. Return JSON with revisedAltText, removedPrefix, retainedTypeLabel, characterCount, and within1000. Preserve Screenshot of when appropriate. Do not save or publish.","paidNextStep":"A paid plan can store the confirmed description with uploaded media for an X draft.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. The prefix and screenshot exception are direct official writing guidance."},{"id":"content-prep-image-text-placement","query":"If words are baked into an image, should I copy all of them into the alt text?","primaryKeyword":"image text alt text","relatedQueries":["quote graphic alt text","poster alt text"],"category":"Content preparation","audience":"People posting quote graphics, posters, and document images","task":"Place essential image text in the description or summarize it when it exceeds X's field limit.","freeAsset":"Image text placement worksheet","guide":["Transcribe the text visible in the image and provide the visible caption separately.","Compare the transcription with the caption to identify essential words not available elsewhere.","Place missing essential text in the image description when it fits, using X's documented field maximum as a review target.","If it does not fit, write a complete summary of the image's point rather than cutting the transcription mid-sentence.","Put any public source URL in the visible post, account for X's documented URL treatment when planning, and validate the completed post in the official X composer."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Process these fields locally. Image text: <IMAGE_TEXT>. Caption: <CAPTION>. Optional source URL: <SOURCE_URL>. Return JSON with altText, summarized, captionAddition, sourceUrlPresent, and omittedDetails. Mention X's documented fixed URL treatment only as a planning rule. Do not claim an exact weighted post length or validity; require final checks in X's composer and image-description field. Do not save or publish.","paidNextStep":"A paid plan can publish the prepared caption and confirmed image description with the media on X.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions","https://www.reddit.com/r/accessibility/comments/1l31pl9/social_media_alt_text_and_repeated_information/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume is available. An accessibility discussion asked this question, and official X guidance explains how to handle image text and the 1,000-character limit."},{"id":"content-prep-caption-alt-overlap","query":"Should alt text repeat a quote that is already in the post caption?","primaryKeyword":"duplicate caption alt text","relatedQueries":["repeat text in alt","caption alt overlap"],"category":"Content preparation","audience":"Accessibility editors preparing text-based graphics","task":"Remove unnecessary duplication while preserving visual facts absent from the caption.","freeAsset":"Caption and alt comparison guide","guide":["Input: provide the visible caption, current alt text, and any image-only facts.","Check: mark exact or near-exact sentences that appear in both fields.","Output: when the caption already carries the message, keep only useful visual details in the alt text.","Check: when the caption omits essential image text, retain that text in the description instead of deleting it.","Output: verify that the revised description remains objective and within 1,000 characters."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Compare these fields locally. Caption: <CAPTION>. Alt text: <ALT_TEXT>. Image-only facts: <FACTS>. Return JSON with overlapSpans, captionCoversMessage, revisedAltText, retainedVisualFacts, and characterCount. Do not save or publish.","paidNextStep":"A paid plan can attach the final description to media in an X draft.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions","https://www.reddit.com/r/accessibility/comments/1m1t7q7/screen_reader_users_verbatim_text_in_alt_text_for/","https://www.reddit.com/r/accessibility/comments/1l31pl9/social_media_alt_text_and_repeated_information/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume is available. Two accessibility questions raised this duplication issue, though they were available only through search extracts."},{"id":"content-prep-alt-abbreviations","query":"Should abbreviations such as Dr or Ave be expanded in X image descriptions?","primaryKeyword":"alt text abbreviations","relatedQueries":["screen reader acronyms","expand abbreviations alt text"],"category":"Content preparation","audience":"Editors describing titles, dates, addresses, and organizations","task":"Expand author-written abbreviations while preserving text printed verbatim in the image.","freeAsset":"Alt abbreviation review","guide":["Input: provide the description and list any abbreviations visibly printed in the image.","Check: find shortened titles, street terms, months, and organization names.","Output: expand author-written forms such as Doctor, Avenue, or December where clarity improves.","Check: preserve a printed abbreviation when accurately transcribing the image and capitalize acronyms appropriately.","Output: recount the revised description and keep it within 1,000 characters."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this X image description locally: <ALT_TEXT>. Printed verbatim terms: <PRINTED_TERMS>. Return JSON with revisedAltText, edits containing from, to, and reason, preservedPrintedTerms, characterCount, and within1000. Do not save or publish.","paidNextStep":"A paid plan can retain the confirmed description with an uploaded image for X publishing.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume is available. The editing rule is documented, but no direct demand signal for a dedicated abbreviation helper was observed."},{"id":"content-prep-objective-alt-text","query":"How do I replace subjective phrases such as having fun in image alt text?","primaryKeyword":"objective alt text","relatedQueries":["literal image description","avoid assumptions alt text"],"category":"Content preparation","audience":"People describing photographs of other people","task":"Replace inferred emotions or actions with observable details.","freeAsset":"Objective alt text rewrite guide","guide":["Input: paste the current description and separately list facts known directly by the photographer.","Check: underline judgments or guesses such as having fun, upset, successful, or about to leave.","Output: replace each guess with visible evidence such as smiling, raised hands, a packed suitcase, or objects in frame.","Check: keep known intent only when the author can confirm it rather than inferring it from appearance.","Output: produce full sentences under X's 1,000-character maximum."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Rewrite this image description locally using observable details: <ALT_TEXT>. Confirmed context: <KNOWN_CONTEXT>. Return JSON with revisedAltText, removedJudgments, observableReplacements, characterCount, and within1000. Do not invent visual details. Do not save or publish.","paidNextStep":"A paid plan can use the confirmed description with media in an X draft.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume is available. Official examples support the rewrite method, but direct demand for this standalone task was not observed."},{"id":"content-prep-chart-map-alt","query":"How do I describe a chart or map on X without copying the entire dataset?","primaryKeyword":"chart alt text","relatedQueries":["map image description","data visualization alt text"],"category":"Content preparation","audience":"Researchers, journalists, and analysts","task":"Write findings-focused alt text and keep source details in the visible post.","freeAsset":"Chart description template","guide":["Provide the chart type, main takeaway, highest and lowest values, relevant labels, units, and source URL.","Identify the finding a reader should retain rather than listing every plotted point.","Write alt text containing the trend, important extremes, units, and necessary labels.","Omit decorative interface controls and review the description against X's documented image-description maximum.","Add the source URL to the visible post, account for X's documented URL treatment only as a planning rule, and validate the post in the official X composer."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Create a findings-focused X image description locally. Chart type: <TYPE>. Takeaway: <TAKEAWAY>. Extremes: <EXTREMES>. Labels: <LABELS>. Source URL: <URL>. Return JSON with altText, visiblePostSourceSentence, and omittedNonessentialDetails. Do not claim exact platform character counts or validity. Require final checks in X's composer and image-description field. Do not save or publish.","paidNextStep":"A paid plan can publish the chart and confirmed description to a connected X account when the required connection and scopes are available. Analytics depend on the connected account and granted scopes.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/write-image-descriptions","https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. X provides a detailed map-description example and documented limits, but demand volume was not measured."},{"id":"content-prep-leading-mention","query":"How should I rewrite an X post that starts with an @mention?","primaryKeyword":"X leading mention","relatedQueries":["post starts with username","X mention visibility"],"category":"Content preparation","audience":"X users mentioning another account","task":"Move a leading mention after the opening point so the post is not treated like a conversation opener.","freeAsset":"Leading mention rewrite","guide":["Paste the complete draft exactly as it would appear on X.","Determine whether the first visible characters form an @username mention.","Rewrite the opening so the main point comes first and the mention appears naturally later.","Prepare a quote-post comment as an alternative when the goal is to discuss another post.","Validate each selected option in the official X composer rather than using a simple code-point count as a weighted validator."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Rewrite this X draft locally: <DRAFT>. Return JSON with startsWithMention, reorderedPost, and quoteCommentAlternative. Preserve factual meaning. Do not claim exact weighted lengths or validity; require final validation in the official X composer. Do not save or publish.","paidNextStep":"A paid plan can schedule the selected standard post or publish it to a connected X account.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/types-of-posts","https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. X explicitly documents the Home visibility behavior for posts beginning with a username."},{"id":"content-prep-reply-mention-count","query":"Do the account names automatically added to an X reply count toward 280?","primaryKeyword":"X reply character count","relatedQueries":["reply mentions character limit","X auto mentions count"],"category":"Content preparation","audience":"People composing X replies and developers previewing them","task":"Distinguish auto-populated reply mentions from manually typed text and use the official X composer for final validation.","freeAsset":"Reply count worksheet","guide":["Provide the reply text and separately list the handles that X added automatically.","Identify which leading reply mentions are interface-provided and which mentions were manually typed into the reply body.","Apply X's documented exception only to genuinely auto-populated reply mentions.","Review URLs, emoji, CJK text, and manually typed mentions as categories that can affect weighted counting.","Use the official X composer to confirm whether the completed reply fits before publishing."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this X reply locally. Visible text: <TEXT>. Auto-populated handles: <HANDLES>. Return JSON with countedTextForReview, suppliedAutomaticMentions, manualMentions, and itemsRequiringComposerValidation. Do not claim an exact weighted length, remaining count, or validity. Require final validation in the official X composer. Do not save or publish.","paidNextStep":"A paid plan can publish a confirmed reply as a public X post.","availability":"guide-only","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. The auto-populated reply-mention exception is an official counting rule."},{"id":"content-prep-long-x-post","query":"Can I schedule an X post longer than 280 characters, and which mentions get notified?","primaryKeyword":"schedule long X post","relatedQueries":["X long post limit","X mention notification"],"category":"Content preparation","audience":"Authors preparing longer X posts","task":"Classify a long post, check first-280 mention placement, and create standard-post parts when scheduling the long form is unsuitable.","freeAsset":"Long post readiness checklist","guide":["Paste the complete draft and state whether replies are limited to mentioned accounts.","Treat text beyond the standard-post allowance as potentially requiring an X longer-post feature, and verify current eligibility and limits in the authenticated X interface.","Review which mentions appear near the beginning separately from those appearing later when notification or reply settings matter.","If longer-post scheduling is unavailable, divide the material into coherent standard-post drafts without using the TimeToPost character counter as a weighted validator.","Validate every part in the official X composer and verify X's current longer-post and scheduling restrictions before proceeding."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Assess this X draft locally: <DRAFT>. Reply setting: <SETTING>. Return JSON with likelyFormClass, mentionsNearBeginning, mentionsLater, issuesToVerify, and optionalStandardPostParts. Do not assert a current longer-post maximum, scheduling support, exact weighted lengths, or validity. Require verification in the authenticated X interface and official composer. Do not save or publish.","paidNextStep":"A paid plan can schedule the resulting standard X posts. It does not remove X's own restrictions on longer-post drafting or scheduling.","availability":"guide-only","evidenceUrls":["https://help.x.com/en/using-x/types-of-posts","https://help.x.com/en/using-x/how-to-post","https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume is available. Official pages document Premium, first-280 mention behavior, and web scheduling limits, but the researched maximum has an unresolved 4,000 versus 25,000 conflict."},{"id":"content-prep-article-to-x","query":"How can I turn an article into X posts that each fit the standard limit?","primaryKeyword":"article to X posts","relatedQueries":["repurpose article for X","article thread draft"],"category":"Content preparation","audience":"Content and SEO writers with an existing article","task":"Create source-grounded X drafts with one claim per post and a final link-back.","freeAsset":"Article-to-X drafting template","guide":["Provide the article text or a public source URL and the desired number of posts.","Extract only claims supported by the supplied source and remove article transitions that do not work as standalone posts.","Draft an opening post around one specific claim without a leading mention or URL.","Give each middle post one supported point and place the article URL in the final post, accounting for X's documented URL treatment only as a planning rule.","Label unsupported claims for removal and validate every completed draft in the official X composer."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","create_posts_from_source","get_source_status"],"mcpPrompt":"First call whoami, then get_capabilities. Show the authenticated organization and require explicit confirmation that <ORGANIZATION> is correct. Only if create_posts_from_source is reported as available and supports the supplied source type, use it to create X drafts from <PUBLIC_SOURCE_URL_OR_SUPPORTED_SOURCE>. Do not approve, schedule, publish, or autosend. Then use get_source_status if that capability is available. Return JSON with organization, sourceStatus, drafts containing text and sourceClaim, unsupportedClaims, and composerValidationRequired. Do not claim exact weighted lengths or validity; require final validation in the official X composer.","paidNextStep":"TimeToPost paid plans can retain generated drafts and schedule approved standard posts to X, subject to plan limits.","availability":"available","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters","https://help.x.com/en/using-x/types-of-posts"],"evidenceType":"hypothesis","demandConfidence":"low","demandNote":"No measured keyword volume is available. The output format is a product hypothesis constrained by official X counting and mention rules."},{"id":"content-prep-x-to-blog","query":"How do I turn a set of X posts into a clean blog draft?","primaryKeyword":"X thread to blog","relatedQueries":["posts to article","repurpose X thread"],"category":"Content preparation","audience":"Writers repurposing their own X posts","task":"Remove thread-only language and organize the remaining ideas into a search-ready article brief.","freeAsset":"Posts-to-article brief","guide":["Paste the posts in order and mark which hashtags are topical rather than reach-only.","Remove thread markers, requests to repost, leading account mentions, and reach-only hashtags.","Group the remaining supported claims under descriptive H2 headings without adding unsupported facts.","Draft a concise title and meta description, treating 60 and 155 characters as editing guidelines rather than hard Google limits.","Return the cleaned outline, removed-text log, title count, and meta-description count for human editorial review."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Work locally from <ORDERED_X_POSTS>. Remove thread-only language, group supported claims into a blog outline, and draft a concise title and meta description. Treat 60 title characters and 155 meta-description characters as editorial guidelines, not hard Google rules or ranking guarantees. Return JSON with title, titleCharacters, metaDescription, metaCharacters, sections, removedItems, and unsupportedClaims. Do not call AutoSEO, save, approve, publish, schedule, or autosend.","paidNextStep":"Growth can generate AutoSEO article drafts from a configured site's supported topic workflow. It does not import an arbitrary pasted X thread as the article source; a human can paste and edit the locally prepared outline.","availability":"guide-only","evidenceUrls":["https://dev.to/wfgsss/repurpose-twitter-threads-into-blog-posts-a-complete-workflow-mm4"],"evidenceType":"hypothesis","demandConfidence":"low","demandNote":"No measured keyword volume is available. One public workflow extract described the cleanup process and title and description targets; its ranking anecdote is not treated as evidence."},{"id":"content-prep-nfc-normalization","query":"Why can two visually identical X drafts produce different technical character counts?","primaryKeyword":"X Unicode normalization","relatedQueries":["NFC character count","composed accent X"],"category":"Content preparation","audience":"Developers and editors copying text between applications","task":"Compare raw and NFC-normalized Unicode text as a diagnostic, then validate the selected draft in the official X composer.","freeAsset":"Unicode normalization check","guide":["Paste the exact draft copied from the source application.","Compare its raw Unicode sequence with an NFC-normalized version, especially around accented letters and combining marks.","List visually similar spans whose underlying code points change during normalization.","Do not treat the TimeToPost character counter's code-point count as X weighted validation or assume that code points equal graphemes.","Review the selected text in the official X composer for final limit validation before use."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze this draft locally for Unicode normalization: <DRAFT>. Return JSON with normalizedText, normalizationChanges, rawCodePointCount, and normalizedCodePointCount. Explain that code-point counts are not grapheme counts or X weighted lengths. Do not claim remaining space or validity; require final validation in the official X composer. Do not save or publish.","paidNextStep":"A paid plan can schedule the normalized, validated standard post to X.","availability":"guide-only","evidenceUrls":["https://docs.x.com/fundamentals/counting-characters"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume is available. NFC normalization is documented, but demand for a standalone normalization diagnosis was not observed."},{"id":"scheduling-zone-anchor","query":"How do I schedule for a named timezone without changing my computer clock?","primaryKeyword":"timezone scheduler","relatedQueries":["convert post timezone","schedule in another timezone"],"category":"Scheduling","audience":"Remote social media operators","task":"Convert a civil time in an event timezone into the operator's local time and UTC.","freeAsset":"Timezone posting planner","guide":["Record the event datetime and IANA zone, for example 2026-11-03 20:00 in America/New_York.","Record the operator's IANA zone, for example Europe/Berlin.","Use a date-aware timezone converter backed by current IANA timezone data to obtain the operator-local datetime and UTC instant, including the calendar date.","Verify the dated offsets and abbreviations independently before entering the value into a device-clock scheduler."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a manual conversion checklist for {event_datetime}, {event_iana_zone}, and {operator_iana_zone}. Do not calculate or claim an exact conversion unless a date-aware IANA timezone service is actually available. Require independent verification of the UTC instant, local dates, offsets, and abbreviations.","paidNextStep":"A paid account can schedule the confirmed UTC instant as an X post, subject to its plan limits.","availability":"guide-only","evidenceUrls":["https://old.reddit.com/r/ModSupport/comments/1iqzdbi/timezones_on_scheduled_posts_any_news_on_a_fix/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Multiple operators described device-clock conversion problems, but visible discussion volume was small."},{"id":"scheduling-lead-time","query":"How do I schedule a discussion post one hour before an event in Eastern time?","primaryKeyword":"event lead time","relatedQueries":["post before event","Eastern time reminder"],"category":"Scheduling","audience":"Live event moderators","task":"Subtract a lead interval from an event time anchored to a named timezone.","freeAsset":"Lead-time worksheet","guide":["Write the event time with its zone, for example 2026-11-10 21:00 America/New_York.","Subtract the required lead, for example 60 minutes, before doing any zone conversion.","Convert the resulting 20:00 Eastern time to UTC and the operator's local zone.","Check the event date and post date separately before entering the post time."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a checklist for subtracting {lead_minutes} minutes from {event_datetime} in {event_iana_zone}, then verifying the result in {operator_iana_zone} with a date-aware IANA timezone converter. Do not claim an exact converted timestamp without such a service. Require checks of both event and posting dates.","paidNextStep":"After human confirmation, the resulting UTC instant can be used to schedule one X post.","availability":"guide-only","evidenceUrls":["https://old.reddit.com/r/ModSupport/comments/1iqzdbi/timezones_on_scheduled_posts_any_news_on_a_fix/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A moderator described this exact Eastern-time lead workflow in one small discussion."},{"id":"scheduling-date-line","query":"How do I schedule for the account's previous calendar date while traveling?","primaryKeyword":"date line scheduling","relatedQueries":["schedule yesterday timezone","traveling account timezone"],"category":"Scheduling","audience":"Traveling account managers","task":"Resolve a desired account-local date when the operator is already on another calendar day.","freeAsset":"Dual-date conversion card","guide":["Enter the desired account-local value, for example 2026-10-21 18:00 America/Chicago.","Enter the current operator zone, for example Asia/Tokyo.","Record the UTC result and the operator-local value, which may be 2026-10-22.","Check that the account-facing date remains October 21 before saving the slot."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a checklist for converting {account_local_datetime} in {account_iana_zone} to {operator_iana_zone} using a date-aware IANA timezone converter. Require verification of the UTC instant and both calendar dates. Do not claim an exact result or that a specific scheduler ignores the device timezone.","paidNextStep":"A confirmed UTC value can be scheduled on X without relying on the operator's device date.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/FacebookAds/comments/18nk9up/scheduling_posts_time_zone/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One operator reported being unable to select the account's prior date until changing the device timezone."},{"id":"scheduling-two-clocks","query":"How do I convert an audience activity chart when its timezone differs from my scheduler?","primaryKeyword":"activity chart timezone","relatedQueries":["analytics timezone mismatch","convert peak posting time"],"category":"Scheduling","audience":"Social media managers using activity charts","task":"Convert a chart hour into the separate timezone used by a scheduling control.","freeAsset":"Two-clock conversion worksheet","guide":["Identify the chart zone from its label, for example America/Los_Angeles.","Record the chart date and peak hour, for example 2026-10-06 at 09:00.","Convert that instant into the scheduler zone, for example Australia/Sydney.","Check for a next-day result before entering the converted time; do not treat the chart hour as a new recommendation."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a checklist for interpreting {chart_date} {chart_hour} in {chart_iana_zone} and converting that instant to {scheduler_iana_zone} with a date-aware IANA timezone converter. Do not invent a best time or claim an exact conversion without such a service.","paidNextStep":"If account analytics are connected and the required scopes are available, a paid operator can compare account data and separately schedule a selected X time after verification.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/FacebookAds/comments/18nk9up/scheduling_posts_time_zone/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. The source includes confusion about scheduler zones and a report of using a Pacific-labeled chart from Australia."},{"id":"scheduling-season-dst","query":"How do I keep weekly posts anchored to US Eastern when daylight saving dates differ?","primaryKeyword":"DST schedule","relatedQueries":["weekly timezone shift","Eastern time DST"],"category":"Scheduling","audience":"Operators managing international event seasons","task":"Build a weekly civil-time schedule and identify weeks when the cross-zone offset changes.","freeAsset":"DST season table","guide":["Choose the anchor zone and civil time, for example Thursday 20:00 America/New_York.","List each event date for the season rather than adding fixed seven-day durations.","Convert every dated occurrence to the operator zone and UTC.","Flag any row whose zone gap differs from the prior week and manually verify that row."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a manual procedure for listing each dated occurrence of {weekday} at {civil_time} in {anchor_iana_zone} from {start_date}, then converting every row separately with a date-aware IANA timezone service. Require verification of changed offsets and abbreviations. Do not generate exact timestamps without that service.","paidNextStep":"Confirmed occurrences can be added individually to an X schedule so each UTC instant is explicit.","availability":"guide-only","evidenceUrls":["https://old.reddit.com/r/ModSupport/comments/1iqzdbi/timezones_on_scheduled_posts_any_news_on_a_fix/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Operators specifically described daylight-saving mismatches between Europe and US Eastern."},{"id":"scheduling-dual-date","query":"How do I verify both the date and time when scheduling between Canada and Australia?","primaryKeyword":"dual date converter","relatedQueries":["Canada Australia time","cross timezone date"],"category":"Scheduling","audience":"Operators scheduling across large UTC offsets","task":"Display one instant as two full local dates and times.","freeAsset":"Dual-date card","guide":["Enter the source value, for example 2026-10-21 21:00 America/Toronto.","Convert it to Australia/Sydney and UTC.","Write both results with weekday, date, time, and abbreviation rather than only clock hours.","Check whether the destination is on October 22 before copying the schedule."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a checklist for showing {source_datetime} in {source_iana_zone} and {destination_iana_zone} with a date-aware IANA timezone converter. Require full weekday, date, time, abbreviation, and UTC verification. Do not claim exact values without that service.","paidNextStep":"The verified UTC instant can be scheduled as an X post after the operator confirms both date labels.","availability":"guide-only","evidenceUrls":["https://old.reddit.com/r/ModSupport/comments/1iqzdbi/timezones_on_scheduled_posts_any_news_on_a_fix/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A moderator explicitly worried about getting both the date and time wrong between Canada and Australia."},{"id":"scheduling-gmt-bst","query":"Is this London event time GMT or BST on the selected date?","primaryKeyword":"GMT BST checker","relatedQueries":["London time abbreviation","British summer time post"],"category":"Scheduling","audience":"Creators publishing international event announcements","task":"Determine whether a London-local datetime uses GMT or BST.","freeAsset":"Timezone abbreviation check","guide":["Enter the London-local date and time, for example 2026-07-15 at 19:00.","Resolve it with Europe/London rather than a fixed GMT offset.","Use the returned abbreviation, which is BST for this example, and record 18:00 UTC.","Check any announcement that says GMT and replace that label when it conflicts with the dated zone result."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Explain how to resolve {local_datetime} with Europe/London using a date-aware IANA timezone source and compare it with {typed_label}. Do not calculate or assert the abbreviation, offset, or UTC instant unless such a service is available. Require independent verification before correcting an announcement.","paidNextStep":"A corrected announcement can be scheduled on X at the confirmed UTC instant.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/VirtualYoutubers/comments/tdqz65/psa_for_vtubers_check_your_timezones_about_the/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A creator documented recurring confusion between GMT and British Summer Time."},{"id":"scheduling-multizone-line","query":"How do I write one event announcement for US, European, and Japanese viewers?","primaryKeyword":"multi timezone announcement","relatedQueries":["event time zone list","international stream time"],"category":"Scheduling","audience":"Global creators and event hosts","task":"Render one confirmed instant in five audience-facing timezones.","freeAsset":"Five-zone announcement line","guide":["Start from one UTC instant, for example 2026-11-07T17:00:00Z.","Convert it to US Pacific, US Eastern, UTC, Central European, and Japan time.","Include the correct dated abbreviations and mark Japan as the next date when applicable.","Check every displayed time still maps back to the same UTC instant before publishing."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a checklist for converting {utc_iso} into America/Los_Angeles, America/New_York, UTC, Europe/Berlin, and Asia/Tokyo with a date-aware IANA timezone service. Require full dates and verification that every displayed value maps to the same instant. Do not invent exact local values without that service.","paidNextStep":"The completed line can be scheduled as an X post on a paid plan.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/VirtualYoutubers/comments/tdqz65/psa_for_vtubers_check_your_timezones_about_the/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One creator recommended this five-zone pattern after observing incorrect announcements."},{"id":"scheduling-browser-mismatch","query":"How can I detect that my browser timezone differs from the timezone I intend to schedule in?","primaryKeyword":"browser timezone mismatch","relatedQueries":["device timezone scheduler","wrong schedule timezone"],"category":"Scheduling","audience":"Users of browser-based schedulers","task":"Compare the intended timezone with the device-detected timezone before saving.","freeAsset":"Timezone preflight checklist","guide":["Record the intended zone, for example America/New_York.","Read the browser or operating-system zone, for example America/Los_Angeles.","Convert the same civil time under both zones and compare the UTC results.","If the results differ, select the intended instant explicitly rather than saving the unverified browser interpretation."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a preflight checklist comparing {civil_datetime} in {intended_iana_zone} and {detected_iana_zone}. Explain how to use a date-aware IANA timezone converter to compare the resulting instants. Do not claim exact UTC values or a minute delta without that service.","paidNextStep":"Scheduling the confirmed UTC value on X avoids interpreting the time through a separate device-clock control.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/royalroad/comments/y8k711/how_does_rr_scheduling_work/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A user reported a two-hour shift caused by a laptop that remained on Pacific time."},{"id":"scheduling-dst-queue-audit","query":"How do I audit posts already scheduled across a daylight-saving change?","primaryKeyword":"DST queue audit","relatedQueries":["scheduled posts clock change","audit timezone queue"],"category":"Scheduling","audience":"Operators with an existing scheduled queue","task":"Compare stored UTC instants with the intended local wall times after a DST transition.","freeAsset":"Manual queue audit template","guide":["Export or copy each item as ID, stored UTC, intended IANA zone, and intended local datetime.","Convert every intended local datetime independently to its correct dated UTC value.","Mark a mismatch when the converted UTC differs from the stored UTC, for example by 60 minutes.","Correct only verified rows and recheck their local date and abbreviation after editing."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","list_posts","get_post"],"mcpPrompt":"First call whoami, then get_capabilities, show the authenticated organization, and require explicit confirmation before reading data. Only if list_posts and get_post are available with the required scopes, read {date_range}. Return a read-only JSON audit with post_id, stored_publish_time, intended_zone_placeholder, intended_local_placeholder, mismatch_status, and review_needed. Do not infer the intended timezone, edit, approve, publish, or reschedule anything.","paidNextStep":"Paid scheduling provides a queue to review, but any time correction should remain a human-confirmed scheduling action.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/royalroad/comments/y8k711/how_does_rr_scheduling_work/","https://www.reddit.com/r/AutoModerator/comments/9sqsji/scheduling_timezone_issues/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Two separate discussions described schedules crossing clock changes, although both concerned specific external systems."},{"id":"scheduling-civil-recurrence","query":"How do I keep a recurring post at the same local time after daylight saving changes?","primaryKeyword":"civil time recurrence","relatedQueries":["weekly post DST","fixed local time schedule"],"category":"Scheduling","audience":"Operators managing daily or weekly recurring posts","task":"Create dated civil-time occurrences instead of adding fixed 24-hour or seven-day durations.","freeAsset":"Recurrence expansion worksheet","guide":["Define the recurrence as a local rule, for example 18:00 every day in Europe/London.","Create each calendar date first, including dates on both sides of the clock change.","Convert each dated 18:00 occurrence to UTC separately.","Check that every local result remains 18:00 even where adjacent UTC gaps are 23 or 25 hours."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Expand {first_local_datetime}, zone {iana_zone}, interval {calendar_interval}, for {count} occurrences. Return JSON rows with local_datetime, abbreviation, utc_iso, previous_gap_hours, and dst_transition. Preserve civil time rather than a fixed-second interval.","paidNextStep":"The resulting UTC values can be scheduled as separate X posts after review.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/AutoModerator/comments/9sqsji/scheduling_timezone_issues/"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. An older scheduler discussion described fixed-gap recurrence moving the wall-clock hour after DST."},{"id":"scheduling-viewer-clock","query":"What date and time will viewers in another timezone see on my post?","primaryKeyword":"viewer time preview","relatedQueries":["post timestamp timezone","viewer local time"],"category":"Scheduling","audience":"Creators explaining global post times","task":"Preview one publication instant in several viewer-local timezones.","freeAsset":"Viewer clock preview","guide":["Enter the publisher's local datetime and IANA zone, for example 2026-10-02 19:00 Asia/Tokyo.","Convert it once to UTC.","Convert that UTC instant into each viewer zone, such as America/New_York and America/Los_Angeles.","Check and display calendar-date changes; note that this changes timestamp display, not the publication instant."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a checklist for converting {publisher_local_datetime} in {publisher_iana_zone} to UTC and then to {viewer_iana_zones} using a date-aware IANA timezone service. Require full-date display and verification. Do not claim exact viewer timestamps without that service.","paidNextStep":"If a viewer-local target is selected, its confirmed UTC instant can then be scheduled on X.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/explainlikeimfive/comments/t08e0h/eli5_how_does_social_media_appwebsites_show_time/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. The source directly asks which time appears for a viewer and discusses calendar-date changes."},{"id":"scheduling-csv-datetime","query":"What datetime format should I use in a bulk scheduling CSV?","primaryKeyword":"schedule CSV format","relatedQueries":["ISO post datetime","bulk schedule template"],"category":"Scheduling","audience":"Spreadsheet-based content operators","task":"Create an unambiguous schedule CSV using offset-bearing ISO-8601 timestamps.","freeAsset":"CSV datetime template","guide":["Create columns body, publish_at, and network.","Write publish_at as ISO-8601 with an offset or Z, for example 2026-10-06T09:00:00-04:00.","Reject bare values such as 2026-10-06 09:00 because they do not identify an instant.","Parse each accepted row back to UTC and check that it matches the intended local date before import or manual entry."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Validate CSV text {csv_text}. Require body, publish_at, and network. Return JSON with accepted_rows, rejected_rows containing row and error, and cleaned_csv. Accept only ISO-8601 timestamps with an explicit offset or Z. Mark networks other than x as manual_export.","paidNextStep":"After capability and plan checks, confirmed X rows may be entered through an authenticated scheduling workflow. Other network rows remain manual exports unless the platform is publicly supported.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/socialmedia/comments/1l5fjpx/a_fullblown_social_media_scheduler_on_google"],"evidenceType":"hypothesis","demandConfidence":"low","demandNote":"No measured keyword volume. Spreadsheet scheduling was discussed, but the specific ISO-8601 CSV contract is a proposed safe workflow rather than an observed request."},{"id":"scheduling-relative-phrase","query":"How do I turn 'tomorrow at 4pm' into an exact scheduled timestamp?","primaryKeyword":"natural language schedule","relatedQueries":["tomorrow at 4pm UTC","resolve schedule phrase"],"category":"Scheduling","audience":"Operators entering times in plain language","task":"Resolve a relative phrase against a supplied reference time and named timezone.","freeAsset":"Relative-time worksheet","guide":["Record the exact reference time, for example now equals 2026-10-01T15:00:00Z.","Supply the interpretation zone, for example America/New_York.","Resolve 'tomorrow at 4pm' to 2026-10-02T16:00:00-04:00 and 2026-10-02T20:00:00Z.","Confirm the written calendar date and reject phrases that omit either a clock time or timezone."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Resolve phrase {time_phrase} using reference instant {reference_utc_iso} and zone {iana_zone}. Return JSON with resolved_local_iso, utc_iso, calendar_date_text, ambiguity, and needs_confirmation. Do not guess if the time or zone is missing.","paidNextStep":"Only the confirmed absolute UTC value should be used for paid X scheduling.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/socialmedia/comments/1l5fjpx/a_fullblown_social_media_scheduler_on_google"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. A spreadsheet scheduler discussion mentioned English phrases such as 'tomorrow at 4pm'; demand for a separate resolver is inferred."},{"id":"scheduling-week-collisions","query":"How do I combine several channel schedules and find posts that collide?","primaryKeyword":"content calendar collisions","relatedQueries":["multi channel calendar","overlapping post times"],"category":"Scheduling","audience":"Creators managing multiple channels","task":"Merge dated publishing rows into one chronological calendar and flag short gaps.","freeAsset":"Weekly collision calendar","guide":["Create rows containing channel label, title, and an offset-bearing publish_at value.","Convert every row to UTC and sort the combined list chronologically.","Choose a minimum gap, for example 60 minutes, and flag adjacent items closer than that.","Export the checked list to a calendar file or use it as a manual native-publishing checklist."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze schedule rows {rows_json} with minimum gap {gap_minutes}. Return JSON with chronological_rows, collisions containing item IDs and minutes_apart, and an ICS-compatible event list. Do not claim to publish video or non-X rows.","paidNextStep":"Optional X announcement rows can be scheduled on X; video and other network entries remain manual calendar items.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SocialMediaAPIs/comments/1qvyvcf/how_to_schedule_youtube_shorts/"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. One explainer described one-at-a-time scheduling and the absence of a cross-channel calendar."},{"id":"scheduling-approval-gate","query":"How do I prevent an unapproved post from reaching the schedule?","primaryKeyword":"content approval workflow","relatedQueries":["approve before scheduling","social post signoff"],"category":"Scheduling","audience":"Agencies and client content teams","task":"Keep pending content in drafts and require explicit approval before scheduling.","freeAsset":"Approval gate checklist","guide":["Create a draft with body, approver, approval deadline, and proposed publish time.","Check that the approval deadline occurs before the proposed publish time.","Keep the item blocked while its status is pending, rejected, or missing an approver.","After explicit approval, recheck the final body and time before a separate scheduling action."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","create_drafts","list_drafts","list_approvals"],"mcpPrompt":"First call whoami, then get_capabilities, show the authenticated organization, and require explicit confirmation that {organization_name} is correct. Only if create_drafts, list_drafts, and list_approvals are reported as available and authorized, create draft-only records from {content_rows} and read their approval state. Return JSON with draft_id, approver when available, approve_by, proposed_publish_at, status, and blocking_reasons. Do not approve, schedule, publish, or autosend anything.","paidNextStep":"Paid workflows can retain drafts and approval records; scheduling remains a separate human-confirmed action after approval.","availability":"available","evidenceUrls":["https://www.reddit.com/r/socialmedia/comments/1l5fjpx/a_fullblown_social_media_scheduler_on_google"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. One agency-oriented comment said approval through sheets, email, or chat does not scale."},{"id":"scheduling-crosspost-pack","query":"How do I prepare one scheduled X post and a manual version for another network?","primaryKeyword":"crosspost template","relatedQueries":["adapt post by network","manual crossposting"],"category":"Scheduling","audience":"Operators reusing content across networks","task":"Produce an X-ready variant and a clearly labeled manual copy block without claiming automatic cross-network publishing.","freeAsset":"Two-slot posting pack","guide":["Enter the source text, link, X publish time, and the second network's manual publish time.","Use the character counter only for a simple Unicode code-point count of the X draft. It is not an X weighted validator and does not apply the 23-character URL rule.","Create a separate manual version using the second network's current editorial requirements.","Validate the X version in the official X composer, schedule only the X item, and add a separately zoned calendar reminder for the manual item."],"toolUrl":"/tools/character-counter/","mcpTools":[],"mcpPrompt":"Adapt source {source_text} and link {url} into JSON with x containing text and publish_at {x_publish_at}, plus manual containing text, label {manual_network_label}, and publish_at {manual_publish_at}. Keep claims unchanged. You may report simple Unicode code-point counts only, clearly labeled as non-weighted and non-validating. Require official X composer validation and never state that the manual item will be auto-published.","paidNextStep":"Starter includes up to 30 X posts per month, while the second network item remains a manual copy block.","availability":"available","evidenceUrls":["https://www.reddit.com/r/socialmedia/comments/1l5fjpx/a_fullblown_social_media_scheduler_on_google"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. One discussion asked whether a scheduled item could also crosspost like an in-composer share option."},{"id":"scheduling-us-baseline","query":"Should I start with Eastern time when my X audience is spread across the United States?","primaryKeyword":"best time US X","relatedQueries":["Eastern posting time","US audience schedule"],"category":"Scheduling","audience":"US-focused X account operators","task":"Use a source-labeled public timing curve as a baseline and translate it across US timezones.","freeAsset":"Best Time to Post","guide":["Open the public timing tool and keep its result labeled as a source-labeled public baseline rather than account analytics or a personalized optimum.","Select a candidate window. If applying it to a particular future date, record that date explicitly.","Use a separate date-aware IANA timezone converter to translate the dated instant across Central, Mountain, and Pacific time; the current planner code does not guarantee future-date DST conversion.","Check whether the audience is known to skew west before manually recording the final window."],"toolUrl":"/tools/best-time-to-post-calculator/","mcpTools":["best_time_teaser"],"mcpPrompt":"Use best_time_teaser for {platform} and {region_or_timezone}. Return JSON with source_label, candidate_windows, timezone, and limitations. Describe results as a public baseline, not this account's measured optimum. Do not schedule or publish.","paidNextStep":"When account analytics are connected and the required scopes are available, Pro can help an operator compare available account performance with the public baseline and schedule a chosen X time.","availability":"available","evidenceUrls":["https://timetopost.co/best-time-to-post/twitter/us/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. The question appears in product documentation, but documentation alone does not establish high demand."},{"id":"scheduling-own-hour-rank","query":"How do I rank posting hours using my own X performance data?","primaryKeyword":"best posting hour","relatedQueries":["X analytics posting time","rank post times"],"category":"Scheduling","audience":"X accounts with historical performance data","task":"Compare hour-of-week performance while exposing sample counts and refusing thin conclusions.","freeAsset":"Own-data ranking guide","guide":["Collect each post's publication timestamp and one consistent metric, such as impressions.","Convert all timestamps to the audience timezone and group them by weekday and hour.","For each group, calculate post count and median metric rather than ranking a single exceptional post.","Exclude groups below a chosen sample threshold, then compare the remaining top three windows."],"toolUrl":null,"mcpTools":["get_engagement_summary","get_optimal_times"],"mcpPrompt":"First call whoami, then get_capabilities, and confirm organization {organization_name}. Only if the authenticated account, required scopes, and both read tools are available, read {date_range} using get_engagement_summary and get_optimal_times. Return JSON with timezone, available ranked_windows, post_count_per_window when supplied by the tools, metric_basis, sample_limitations, and no_schedule_action. Do not infer unavailable analytics, draft, approve, schedule, or publish.","paidNextStep":"If account analytics are connected with the required scopes, Pro can expose available account-derived timing information for review. Scheduling a selected X post remains a separate action.","availability":"available","evidenceUrls":["https://timetopost.co/best-time-to-post/twitter/us/"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. Product documentation distinguishes editorial baselines from account samples; demand for this exact ranking workflow is inferred."},{"id":"scheduling-no-clock-change","query":"What time should I type into a device-clock scheduler without changing my system timezone?","primaryKeyword":"device clock conversion","relatedQueries":["schedule without timezone change","local scheduler time"],"category":"Scheduling","audience":"Operators using schedulers tied to device time","task":"Convert a desired zoned time into the wall time expected by the current device zone.","freeAsset":"No-clock-change card","guide":["Enter the desired value, for example 2026-10-08 20:00 America/New_York.","Enter the unchanged device zone, for example America/Toronto.","Copy the returned device-local datetime and UTC instant.","Before saving, check the device zone still matches the entered zone and confirm the desired-zone date remains correct."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Provide a checklist for converting {desired_local_datetime} in {desired_iana_zone} to {device_iana_zone} with a date-aware IANA timezone service. Require verification of the UTC instant, both local dates, and the device's actual zone before saving. Do not claim an exact value without that service.","paidNextStep":"A paid X schedule can use the verified UTC instant directly instead of a separate device-clock control.","availability":"guide-only","evidenceUrls":["https://old.reddit.com/r/ModSupport/comments/1iqzdbi/timezones_on_scheduled_posts_any_news_on_a_fix/","https://www.reddit.com/r/FacebookAds/comments/18nk9up/scheduling_posts_time_zone/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Changing the device timezone was suggested or used as a workaround in multiple small discussions."},{"id":"scheduling-x-draft-queue","query":"How do I prepare several X posts as drafts before scheduling any of them?","primaryKeyword":"X post drafts","relatedQueries":["draft social calendar","review posts before schedule"],"category":"Scheduling","audience":"Teams preparing an X content queue","task":"Create reviewable drafts while separating drafting from scheduling and publishing.","freeAsset":"Draft queue checklist","guide":["Prepare each row with draft text, proposed UTC time, source note, and reviewer.","Use the character counter only as a simple Unicode code-point editing aid, not as an X weighted validator, and verify proposed times with a date-aware IANA timezone source.","Validate each final text in the official X composer before creating draft-only records.","Create drafts only after confirming the authenticated organization and capabilities, then review their IDs, text, and proposed times as a batch.","Leave scheduling as a later explicit action after organization, content, and time confirmation."],"toolUrl":"/tools/character-counter/","mcpTools":["whoami","get_capabilities","create_drafts","list_drafts"],"mcpPrompt":"First call whoami, then get_capabilities, show the authenticated organization, and require explicit confirmation that {organization_name} is correct. Only if create_drafts and list_drafts are available and authorized, create draft-only X items from {rows_with_text_and_proposed_utc}, then verify them with list_drafts. Return JSON with draft_id, text, proposed_utc, validation_notes, and status. Do not claim X weighted validity, approve, schedule, publish, or autosend.","paidNextStep":"Starter supports up to 30 X posts per month; Pro provides unlimited scheduling, with scheduling still requiring a separate confirmed action.","availability":"available","evidenceUrls":["https://www.reddit.com/r/socialmedia/comments/1l5fjpx/a_fullblown_social_media_scheduler_on_google"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. The source discusses spreadsheet scheduling and approval needs; the draft-first implementation is grounded in actual TimeToPost draft tools."},{"id":"website-seo-01","slug":"website-seo-robots-blocked-snippet","query":"Why does Google say my description is unavailable because of robots.txt?","primaryKeyword":"robots.txt snippet","relatedQueries":["blocked search snippet","robots title issue"],"category":"Website SEO","audience":"CMS site owners whose titles or descriptions are missing from search results","task":"Check whether robots.txt blocks a specific page and distinguish crawl access from search exclusion.","freeAsset":"Robots access checklist","guide":["Input: paste the robots.txt text and affected URL, for example https://example.com/products/widget.","Match the URL path against the relevant User-agent group and its Allow and Disallow rules. Output: allowed, blocked, or unclear, plus the matching rule.","Open the page and view source. Check that one title element and one meta name=\"description\" exist.","If the page should appear with a snippet, remove only the rule blocking that path and verify the page remains publicly accessible.","If the page should stay out of search, allow crawling and add meta name=\"robots\" content=\"noindex\" or an X-Robots-Tag noindex header. Check that no conflicting index directive remains."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze this robots.txt and URL locally. Input: {\"robots_txt\":\"<ROBOTS_TEXT>\",\"url\":\"<PAGE_URL>\",\"goal\":\"show_snippet|exclude\"}. Return JSON only with urlAllowed, matchedRule, titleCheckInstructions, descriptionCheckInstructions, smallestRobotsChange, exclusionDirective, and cautions. Do not claim to crawl the URL.","paidNextStep":"A paid TimeToPost plan can support related content drafting and scheduling workflows after the page issue is fixed, but it does not replace search-engine recrawling.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SEO/comments/32rw5f/wordpress_robotstxt_making_problems_with/","https://developers.google.com/search/docs/appearance/title-link","https://developers.google.com/search/docs/crawling-indexing/robots/intro"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A forum user reported this exact symptom, and official documentation confirms that blocked URLs can still be indexed without normal page-derived titles or snippets."},{"id":"website-seo-02","slug":"website-seo-tag-search-indexing","query":"Will disallowing tag and search URLs in robots.txt remove them from Google?","primaryKeyword":"disallow vs noindex","relatedQueries":["noindex tag pages","block search URLs"],"category":"Website SEO","audience":"Blog owners managing tag archives and internal search-result pages","task":"Choose crawl and index controls separately for tag, category, and internal search URLs.","freeAsset":"Index control decision sheet","guide":["Input: list each path, whether visitors can click it, and its purpose, for example /tag/seo as a browsable archive and /?s=shoes as internal search.","Keep useful visitor-facing archives crawlable when they provide distinct navigation or content.","For URLs that should not appear in search, place a page-level noindex directive while leaving them crawlable long enough for the directive to be read.","Treat Sitemap lines as discovery hints, not removal instructions. Multiple absolute Sitemap URLs may be declared.","Output: a table with path, visitor value, crawl choice, index choice, exact directive, and a check that no robots.txt rule prevents reading noindex."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Create a crawl and indexing decision table from this input: {\"robots_txt\":\"<ROBOTS_TEXT>\",\"paths\":[{\"path\":\"<PATH>\",\"linked_from_site\":true,\"purpose\":\"tag|search|other\"}]}. Return JSON only with findings containing path, crawlChoice, indexChoice, directive, reason, and conflictCheck.","paidNextStep":"Paid TimeToPost content workflows can help create and schedule promotion for useful indexable hub pages after the site owner makes the technical changes.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SEO/comments/1fg3gks/am_i_doing_it_right_robottext_file/","https://developers.google.com/search/docs/crawling-indexing/robots/intro","https://developers.google.com/search/blog/2025/03/robots-refresher-page-level"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A 2024 discussion shows confusion about disallowing tag and search URLs, while official guidance says robots.txt is not a reliable removal mechanism."},{"id":"website-seo-03","slug":"website-seo-sitemap-directive-position","query":"Does the Sitemap line have to be last in robots.txt?","primaryKeyword":"sitemap robots.txt","relatedQueries":["multiple sitemap lines","sitemap directive position"],"category":"Website SEO","audience":"Site owners editing robots.txt and sitemap declarations","task":"Validate Sitemap directive syntax and placement without treating it as an indexing guarantee.","freeAsset":"Sitemap directive validator guide","guide":["Input: paste the complete robots.txt file.","Extract each line beginning with Sitemap: and check that its value is an absolute URL such as https://example.com/sitemap.xml.","Keep valid Sitemap directives wherever they occur in the file. They do not need to be the final lines.","Allow multiple Sitemap directives when the site has multiple sitemap files or indexes.","Output: valid sitemap URLs, malformed lines, corrected lines, and a manual submission checklist for the search engine's sitemap interface."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Validate this robots.txt text locally: <ROBOTS_TEXT>. Return JSON only with sitemapUrls, placementValid, malformedLines, correctedLines, and submissionChecklist. Do not claim that sitemap inclusion guarantees indexing.","paidNextStep":"Paid TimeToPost features are not required for this robots.txt task. Paid plans can support separate content creation, scheduling, and analytics work.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SEO/comments/7ysgbh/can_spiders_read_an_xml_sitemap_url_not_located/","https://www.reddit.com/r/SEO/comments/1fg3gks/am_i_doing_it_right_robottext_file/","https://support.google.com/webmasters/answer/183668"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. An older question directly asks about line position, a newer discussion shows continued syntax uncertainty, and official documentation permits the directive anywhere in robots.txt."},{"id":"website-seo-04","slug":"website-seo-title-rewrite-diagnosis","query":"Why is Google's search title different from my title tag?","primaryKeyword":"Google title rewrite","relatedQueries":["title tag changed","search title mismatch"],"category":"Website SEO","audience":"Publishers whose search result title differs from the HTML title","task":"Compare the title element with visible title signals and identify likely rewrite triggers.","freeAsset":"Title signal comparison","guide":["Input: collect the title element, first visible H1, og:title, site name, page language, and first 200 words.","Compare the fields for conflicting wording, vague labels such as Home, repeated keywords, duplicated site names, or language mismatches.","Choose one descriptive page-specific phrase and use it consistently in the title, main heading, and social title where editorially appropriate.","Output: issue list and one proposed title, for example Blue Widget Installation Guide | Example Site.","Check that the title is unique on the site and wait for recrawling. Search results may still vary by query and device."],"toolUrl":"/tools/seo-audit/","mcpTools":["seo_audit"],"mcpPrompt":"Run seo_audit with full=false for <PAGE_URL>. Then compare the returned page checks with these supplied fields: title=<TITLE>, h1=<H1>, og_title=<OG_TITLE>, site_name=<SITE_NAME>, language=<LANGUAGE>. Return JSON with issues, proposedTitle, supportingSignals, and manualChecks. Do not promise that a search engine will use the proposal.","paidNextStep":"Paid plans can store related drafts and support content scheduling and analytics. Search-result title selection remains controlled by the search engine.","availability":"available","evidenceUrls":["https://developers.google.com/search/docs/appearance/title-link","https://www.reddit.com/r/SEO/comments/32rw5f/wordpress_robotstxt_making_problems_with/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official documentation describes title rewrites and their source signals, while an observed discussion reports the symptom."},{"id":"website-seo-05","slug":"website-seo-duplicate-title-rewrite","query":"How do I rewrite repetitive title tags so every page is distinguishable?","primaryKeyword":"duplicate title tags","relatedQueries":["boilerplate titles","unique page titles"],"category":"Website SEO","audience":"Catalog and template-site editors with repetitive titles","task":"Rewrite a batch of boilerplate titles using page-specific facts.","freeAsset":"Title rewrite worksheet","guide":["Input: prepare rows with URL, current title, H1, page type, and one unique fact such as product, city, category, or article subject.","Group titles sharing the same long prefix or suffix and mark rows that differ by only one weak token.","For each row, lead with the unique subject, remove repeated keyword lists, and add the site name once if useful.","Output: URL, detected issue, proposed title, and needs_input when no unique fact exists.","Check that no two proposed titles are identical and that each accurately describes its page."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Rewrite these titles locally: {\"site_name\":\"<SITE_NAME>\",\"pages\":[{\"url\":\"<URL>\",\"current_title\":\"<TITLE>\",\"h1\":\"<H1>\",\"page_type\":\"<TYPE>\",\"unique_fact\":\"<FACT>\"}]}. Return JSON only with pages containing url, issues, proposedTitle, and status. Do not invent missing page facts.","paidNextStep":"Paid TimeToPost content workflows can create or store drafts related to revised pages, but they do not directly edit website title tags.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/title-link","https://webmasters.stackexchange.com/questions/56196/duplicate-meta-title-and-description-displayed-in-google-webmaster-tools","https://www.reddit.com/r/SEO/comments/1mhlyky/technical_seo_47_errors_i_found_in_50_sites_that/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance discourages boilerplate titles, and observed discussions report duplicate title problems."},{"id":"website-seo-06","slug":"website-seo-title-language-mismatch","query":"What should I do when the title is in a different language from the page?","primaryKeyword":"title language mismatch","relatedQueries":["multilingual title tag","wrong language search title"],"category":"Website SEO","audience":"Editors maintaining localized or multilingual pages","task":"Align the title, main heading, and social title with the page's primary language and writing system.","freeAsset":"Localized title checklist","guide":["Input: provide the current title, H1, og:title, a body sample, and the intended page language.","Identify fields written in a different language or writing system from the main content.","Draft a concise replacement title using only a translation or terminology supplied by the editor.","Apply matching language to the H1 and og:title where those fields describe the same page subject.","Output: mismatched fields, replacement title, fields to update, and needs_translation when verified wording was not supplied."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this localized title input: {\"title\":\"<TITLE>\",\"h1\":\"<H1>\",\"og_title\":\"<OG_TITLE>\",\"body_sample\":\"<BODY_SAMPLE>\",\"page_language\":\"<LANGUAGE>\",\"approved_terms\":[\"<TERM>\"]}. Return JSON with mismatch, fieldsToChange, proposedTitle or null, and blocker. Do not invent an authoritative translation.","paidNextStep":"Paid content workflows can store separate drafts for different audiences, but verified localization still requires editorial review.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/title-link"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. The issue is documented officially, but the supplied research found no direct user discussion requesting this workflow."},{"id":"website-seo-07","slug":"website-seo-meta-description-batch","query":"How can I create unique meta descriptions for a large catalog?","primaryKeyword":"meta description generator","relatedQueries":["bulk meta descriptions","unique product descriptions"],"category":"Website SEO","audience":"Catalog, directory, local, and news-site editors","task":"Generate factual, unique meta descriptions from structured page fields.","freeAsset":"Meta description template sheet","guide":["Input: create rows with URL, page type, name, author or business, date, price, location, hours, and a one-sentence summary where available.","Select only facts relevant to that page type and combine them into one readable description rather than a keyword list.","Output one description per URL and mark missing_facts when the row lacks enough distinct information.","Compare outputs and flag exact or near duplicates for revision.","Check each description against the live page so every stated fact is visible and current. Search engines may still choose body text instead."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Create factual meta descriptions from: {\"pages\":[{\"url\":\"<URL>\",\"type\":\"article|product|local|other\",\"fields\":{\"name\":\"<NAME>\",\"author\":\"<AUTHOR>\",\"date\":\"<DATE>\",\"price\":\"<PRICE>\",\"location\":\"<LOCATION>\",\"hours\":\"<HOURS>\",\"summary\":\"<SUMMARY>\"}}]}. Return JSON with url, metaDescription, status, usedFacts, and duplicateGroup. Do not invent facts or measured SEO outcomes.","paidNextStep":"Growth includes AutoSEO drafts at one per week. Those drafts can support broader content work, while website metadata changes still require the site's publishing system.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/snippet","https://developers.google.com/search/docs/crawling-indexing/special-tags"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official documentation explicitly recommends unique, programmatically generated descriptions for large database-driven sites."},{"id":"website-seo-08","slug":"website-seo-snippet-controls","query":"How do I limit, remove, or exclude part of a search snippet?","primaryKeyword":"snippet controls","relatedQueries":["max-snippet tag","data-nosnippet"],"category":"Website SEO","audience":"Publishers controlling how page content may appear in search snippets","task":"Map a snippet policy to robots directives or the data-nosnippet attribute.","freeAsset":"Snippet directive builder","guide":["Input: choose normal snippet, maximum character count, no snippet, or exclude one visible section.","For a maximum, output meta name=\"robots\" content=\"max-snippet:N\" using the chosen integer.","For no snippet, output meta name=\"robots\" content=\"nosnippet\" or the equivalent X-Robots-Tag header.","For one excluded section, add data-nosnippet to the relevant HTML element rather than blocking the whole page.","Check the head and response headers for duplicate directives. Output all conflicts and retain one intentional policy."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Build a snippet policy locally from {\"mode\":\"default|max_snippet|nosnippet|exclude_selector\",\"max_snippet\":<NUMBER_OR_NULL>,\"selector\":\"<SELECTOR_OR_NULL>\",\"existing_meta\":[\"<DIRECTIVE>\"],\"existing_header\":\"<HEADER_OR_NULL>\"}. Return JSON with metaTag, httpHeader, htmlAttribute, conflicts, and verificationSteps.","paidNextStep":"Paid TimeToPost plans do not replace website template changes. They can support related drafting and distribution after the policy is implemented.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/snippet","https://developers.google.com/search/docs/crawling-indexing/special-tags","https://developers.google.com/search/blog/2025/03/robots-refresher-page-level"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. The controls are documented officially, but the research did not include a direct user request for a builder."},{"id":"website-seo-09","slug":"website-seo-head-tag-check","query":"How can I verify title, description, robots, and canonical tags on a CMS page?","primaryKeyword":"SEO head tags","relatedQueries":["view source SEO","CMS meta tags"],"category":"Website SEO","audience":"Hosted CMS users who configure SEO fields without editing templates","task":"Check the rendered page head for essential tags and duplicates.","freeAsset":"Head tag verification checklist","guide":["Input: open the live page, use View Source, and copy the head section.","Count title elements and meta name=\"description\" tags. Flag duplicate title elements, duplicate descriptions, or a missing title. A meta description is optional, but record when it is absent.","List robots and crawler-specific meta tags, then flag conflicting index or snippet directives.","List rel=\"canonical\" values and verify that each observed value resolves to an absolute URL. Treat canonical tags as signals, not indexing guarantees.","Output: findings for each field, the exact duplicate or conflicting tags, and a note to change them in the CMS search settings when raw HTML is unavailable."],"toolUrl":"/tools/seo-audit/","mcpTools":["seo_audit"],"mcpPrompt":"Run seo_audit with full=false for <PAGE_URL>. Return JSON with titleFindings, descriptionFindings, robotsFindings, canonicalFindings, topThreeFixes, and manualSourceChecks. Treat this as a page check, not a full-site crawl.","paidNextStep":"Paid plans can add content drafting, scheduling, and analytics workflows. They do not directly configure third-party CMS templates.","availability":"available","evidenceUrls":["https://developers.google.com/search/docs/appearance/snippet","https://developers.google.com/search/docs/crawling-indexing/robots/intro"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. Official pages acknowledge that CMS users may set these fields through search settings, but the research found no direct request for this exact checker."},{"id":"website-seo-10","slug":"website-seo-sitemap-ranking","query":"How do I stop an XML sitemap from ranking instead of the real page?","primaryKeyword":"sitemap ranking","relatedQueries":["noindex XML sitemap","wrong page ranking"],"category":"Website SEO","audience":"Site owners seeing an XML sitemap URL in search results","task":"Reduce the sitemap file's search eligibility and verify the intended page's basic signals.","freeAsset":"Sitemap result recovery checklist","guide":["Input: record the sitemap URL, target content URL, current canonical, title, sitemap membership, and whether ordinary pages link to the XML file.","Remove navigational or editorial links to the XML file while keeping legitimate sitemap submission methods.","Configure the sitemap response with X-Robots-Tag: noindex and verify the header on the live response.","Check that the target page returns normally, has a unique title, uses a self-referencing canonical, and is the preferred URL listed in the sitemap.","Output: header change, links to remove, target-page failures, and a separate content-quality review because suppressing the XML file does not improve a weak page."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this user-supplied sitemap and target-page evidence locally: {\"sitemap_url\":\"<SITEMAP_URL>\",\"sitemap_response_headers\":\"<HEADERS>\",\"internally_linked\":true,\"target_page_url\":\"<TARGET_PAGE_URL>\",\"target_status\":\"<STATUS>\",\"target_title\":\"<TITLE>\",\"target_canonical\":\"<CANONICAL>\",\"target_in_sitemap\":true}. Return JSON with sitemapHeaderRecommendation, linksToRemove, targetPageChecks, topFixes, qualityReviewRequired, and manualChecks. Do not claim to crawl either URL or guarantee which URL a search engine will show.","paidNextStep":"After the canonical page is corrected, paid scheduling can distribute an approved public X post linking to that page. It does not influence search ranking directly.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SEO/comments/15l96ds/sitemap_ranking_for_a_keyword_instead_of_the/","https://support.google.com/webmasters/answer/183668"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A 2023 discussion reports this exact issue and includes a concrete noindex and content-quality response."},{"id":"website-seo-11","slug":"website-seo-duplicate-home-canonical","query":"How should I canonicalize duplicate home URLs such as / and /home?","primaryKeyword":"homepage canonical","relatedQueries":["duplicate home URL","noncanonical sitemap URL"],"category":"Website SEO","audience":"Developers managing duplicate homepage routes","task":"Select one preferred homepage URL and align canonicals, sitemaps, and internal links.","freeAsset":"Canonical alignment worksheet","guide":["Input: list each duplicate URL, current canonical, sitemap status, redirect status, and whether templates link to it.","Choose one absolute HTTPS URL as the preferred homepage based on the site's existing public convention.","Set every duplicate page's rel=canonical to that preferred URL, or redirect duplicates when that is appropriate for users and infrastructure.","Keep only the preferred URL in the sitemap and retarget internal links to it.","Output: preferred URL, canonical changes, sitemap removals, redirect candidates, and remaining signal conflicts."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Resolve this duplicate homepage cluster locally: {\"preferred_url\":\"<PREFERRED_URL>\",\"cluster\":[{\"url\":\"<URL>\",\"canonical\":\"<CANONICAL>\",\"in_sitemap\":true,\"internally_linked\":true,\"redirect_status\":\"<STATUS>\"}]}. Return JSON with preferredUrl, canonicalChanges, sitemapKeep, sitemapRemove, linksToRetarget, redirectCandidates, and conflicts.","paidNextStep":"Paid TimeToPost plans can support content and distribution around the corrected canonical URL, but canonical and redirect implementation stays in the website stack.","availability":"guide-only","evidenceUrls":["https://webmasters.stackexchange.com/questions/138488/semrush-says-sitemap-xml-contains-an-incorrect-page-due-to-non-canonical-url","https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls","https://support.google.com/webmasters/answer/139066","https://support.google.com/webmasters/answer/183668"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A direct question describes the duplicate homepage conflict, and official documentation supports aligning canonical and sitemap signals."},{"id":"website-seo-12","slug":"website-seo-sitemap-cleanup","query":"Which 404 or noncanonical URLs should I remove from my sitemap?","primaryKeyword":"sitemap cleanup","relatedQueries":["404 in sitemap","noncanonical sitemap"],"category":"Website SEO","audience":"Site owners cleaning CMS-generated XML sitemaps","task":"Classify sitemap URLs using supplied status codes, canonicals, and hosts.","freeAsset":"Sitemap cleanup spreadsheet","guide":["Input: export sitemap URL, HTTP status, canonical URL, and host into a table.","Keep rows that return 200 and identify themselves as the preferred canonical.","Remove rows returning 404 or 410 and rows whose canonical points to a different URL.","Flag URLs on a different host for separate review because sitemap host rules apply.","Output: keep list, remove list, and reason codes of not_found, non_canonical, wrong_host, or missing_observation. Check removed URLs against internal links before regenerating the sitemap."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Classify this supplied sitemap export without crawling: {\"sitemap_host\":\"<HOST>\",\"rows\":[{\"url\":\"<URL>\",\"status\":200,\"canonical\":\"<CANONICAL>\",\"host\":\"<HOST>\"}]}. Return JSON with keep, remove, review, and countsByReason. Do not infer missing HTTP data.","paidNextStep":"Paid TimeToPost plans do not provide a claimed full-site crawler. Related AutoSEO drafting is available on Growth, while sitemap regeneration remains a website operation.","availability":"guide-only","evidenceUrls":["https://support.google.com/webmasters/answer/183668","https://developers.google.com/search/docs/advanced/sitemaps/build-sitemap","https://www.reddit.com/r/SEO/comments/1mhlyky/technical_seo_47_errors_i_found_in_50_sites_that/","https://webmasters.stackexchange.com/questions/135779/what-to-do-when-you-have-sitemap-xml-and-canonical-url"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance supports listing preferred canonical URLs, and observed audit discussions report error and noncanonical URLs in sitemaps."},{"id":"website-seo-13","slug":"website-seo-cross-domain-canonical","query":"Should a syndicated copy with a cross-domain canonical be in its sitemap?","primaryKeyword":"cross-domain canonical","relatedQueries":["syndicated content sitemap","canonical different domain"],"category":"Website SEO","audience":"Publishers syndicating articles across properties","task":"Align cross-domain canonicals with each host's sitemap.","freeAsset":"Syndication canonical checklist","guide":["Input: provide the copy URL, canonical URL, copy sitemap host, and canonical sitemap host.","Confirm that the copy's rel=canonical uses the absolute preferred URL on the canonical host.","Omit the copy URL from the syndicating host's sitemap when it declares another host's URL as canonical.","Include the preferred URL only in a sitemap belonging to its own host.","Output: include or omit decisions for both sitemaps, the exact canonical element, and a check for conflicting noindex or canonical directives."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this syndication pair: {\"copy_url\":\"<COPY_URL>\",\"canonical_url\":\"<CANONICAL_URL>\",\"copy_sitemap_host\":\"<COPY_HOST>\",\"canonical_sitemap_host\":\"<CANONICAL_HOST>\",\"existing_robots_meta\":\"<META_OR_NULL>\"}. Return JSON with copySitemapDecision, canonicalSitemapDecision, relCanonical, robotsConflict, and checks.","paidNextStep":"Paid scheduling can publish an approved public X post that links to the preferred canonical article. It does not alter cross-domain canonical processing.","availability":"guide-only","evidenceUrls":["https://webmasters.stackexchange.com/questions/135779/what-to-do-when-you-have-sitemap-xml-and-canonical-url","https://support.google.com/webmasters/answer/183668","https://developers.google.com/search/docs/crawling-indexing/special-tags"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. An observed question directly addresses sitemap and cross-domain canonical handling, supported by official sitemap guidance."},{"id":"website-seo-14","slug":"website-seo-conflicting-robots-tags","query":"What happens when a page has both index and noindex robots tags?","primaryKeyword":"conflicting robots tags","relatedQueries":["duplicate robots meta","Next.js noindex issue"],"category":"Website SEO","audience":"Framework developers with metadata emitted by multiple components","task":"Find duplicate robots directives and reduce them to one intentional policy.","freeAsset":"Robots conflict parser guide","guide":["Input: copy every robots and crawler-specific meta tag from the head plus any X-Robots-Tag response header.","List each directive in source order and mark index versus noindex, follow versus nofollow, and snippet-control conflicts.","If the page should be excluded, retain one noindex directive and remove code paths emitting index directives.","If the page should be indexed, remove noindex and either retain one index,follow tag or rely on the documented default.","Output: observed tags, conflict list, one final directive, likely template sources to inspect, and a check that sitemap changes alone will not repair duplicate metadata."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Parse these supplied directives: {\"html_head\":\"<HEAD_HTML>\",\"x_robots_tag\":\"<HEADER_OR_NULL>\",\"intent\":\"index|noindex\"}. Return JSON with observedTags, conflicts, finalDirective, directivesToRemove, and templateDebugChecklist. Do not claim to inspect the live framework.","paidNextStep":"Paid TimeToPost workflows can hold related content drafts, but resolving framework metadata requires a code or CMS change.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SEO/comments/xkrb82/which_one_takes_precedence_if_have_two_googlebot","https://developers.google.com/search/docs/crawling-indexing/special-tags","https://developers.google.com/search/blog/2025/03/robots-refresher-page-level"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A framework user reported duplicate, conflicting tags and persistent indexing, while official guidance documents robots directives and restrictive conflict behavior."},{"id":"website-seo-15","slug":"website-seo-canonical-or-separate-pages","query":"Should related variant pages canonicalize to a hub or remain separate pages?","primaryKeyword":"canonical variants","relatedQueries":["hub page canonical","variant meta descriptions"],"category":"Website SEO","audience":"Editors managing topic hubs and related article variants","task":"Separate true duplicates from distinct pages and assign canonicals, descriptions, and hub links.","freeAsset":"Variant consolidation worksheet","guide":["Input: provide the hub URL and a short factual summary, current canonical, and current description for each variant.","Compare summaries. Treat substantially equivalent pages as consolidation candidates and distinct questions as separate pages.","For duplicates, choose one canonical and include only it in the sitemap.","For distinct pages, use self-referencing canonicals, write unique factual descriptions, and link each support page to the hub with a descriptive anchor.","Output: consolidate or separate decision, canonical map, description changes, internal links, and a check that the decision matches actual page content."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze this supplied content set: {\"hub\":{\"url\":\"<HUB_URL>\",\"summary\":\"<SUMMARY>\"},\"pages\":[{\"url\":\"<URL>\",\"summary\":\"<SUMMARY>\",\"canonical\":\"<CANONICAL>\",\"description\":\"<DESCRIPTION>\"}]}. Return JSON with decision, reasoning, canonicals, descriptions, sitemapDecision, and internalLinks. Do not infer similarity from URLs alone.","paidNextStep":"Growth includes one AutoSEO draft per week, which can support an approved hub or support-page brief. Website canonical and linking changes still require implementation.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SEO/comments/x74vwq/missing_meta_descriptions_on_pages_with_canonical/","https://www.reddit.com/r/TechSEO/comments/1mwdv0c/pillar_cluster_qa_checklist_i_use_to_prevent/","https://developers.google.com/search/docs/appearance/snippet"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A discussion reports canonicals being used on distinct variants, and a separate practitioner checklist describes hub and support linking."},{"id":"website-seo-16","slug":"website-seo-tracking-canonical-cleanup","query":"Should a canonical URL include UTM tracking parameters?","primaryKeyword":"UTM canonical","relatedQueries":["clean canonical URL","tracking parameter canonical"],"category":"Website SEO","audience":"Developers whose templates copy request parameters into canonical URLs","task":"Remove known tracking parameters from canonical and sitemap signals while preserving reviewed functional parameters.","freeAsset":"Canonical parameter cleaner","guide":["Input: provide the current canonical URL, sitemap URL, and any parameters the application genuinely needs to preserve.","Identify known tracking parameters such as utm_source, utm_medium, utm_campaign, gclid, and fbclid.","Remove known tracking parameters from the preferred absolute canonical while retaining only explicitly approved functional parameters.","Update the sitemap entry and internal links to the same cleaned URL.","Output: cleaned canonical, removed parameters, retained parameters, unknown parameters requiring review, and conflicts between canonical and sitemap."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Clean this canonical locally: {\"canonical_url\":\"<URL>\",\"sitemap_urls\":[\"<URL>\"],\"functional_parameters_to_keep\":[\"<PARAM>\"]}. Return JSON with cleanedCanonical, removedTrackingParameters, retainedParameters, unknownParameters, correctedSitemapUrls, and conflicts.","paidNextStep":"Paid plans can support associated content and promotion workflows, but URL normalization must be applied in the site's templates and linking system.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SEO/comments/1mhlyky/technical_seo_47_errors_i_found_in_50_sites_that/","https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls","https://support.google.com/webmasters/answer/139066"],"evidenceType":"hypothesis","demandConfidence":"low","demandNote":"No measured keyword volume. One audit-style post reports parameterized self-canonicals, and official guidance supports consistent absolute canonical signals, but no direct help request was observed."},{"id":"website-seo-17","slug":"website-seo-contextual-internal-links","query":"Which existing pages should a new article link to?","primaryKeyword":"internal link suggestions","relatedQueries":["contextual internal links","link from new article"],"category":"Website SEO","audience":"Bloggers and editors with an inventory of existing articles","task":"Select a small set of relevant internal destinations and contextual anchors from a supplied draft and page inventory.","freeAsset":"Internal link suggestion sheet","guide":["Input: split the draft into numbered paragraphs and supply existing URL, title, and one-sentence summary rows.","For each paragraph, identify pages whose supplied summary directly supports or expands the paragraph's topic.","Choose no more than one destination per paragraph and apply a page-level cap, for example three links in a short article.","Draft an anchor using natural words already present in the paragraph and vary anchors when the same topic recurs.","Output: paragraph number, destination, anchor, relevance reason, and skipped candidates. Check every destination manually before editing the draft."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Suggest internal links from supplied text only: {\"draft_paragraphs\":[\"<PARAGRAPH>\"],\"inventory\":[{\"url\":\"<URL>\",\"title\":\"<TITLE>\",\"summary\":\"<SUMMARY>\"}],\"max_links\":3}. Return JSON with links containing paragraphIndex, url, anchor, reason, plus skipped candidates and their reasons.","paidNextStep":"Growth AutoSEO drafts can support ongoing article creation. Pro includes unlimited scheduling and analytics for approved social promotion, but it does not imply automated website link insertion.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/TechSEO/comments/1lj9hxo/internal_linking_100_on_autopilot/","https://www.reddit.com/r/Wordpress/comments/1wkqvu5/promo_i_built_a_free_internal_linking_plugin_for/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A 2025 discussion describes recurring manual internal-link selection, and a later comment asks for contextual links, varied anchors, and caps."},{"id":"website-seo-18","slug":"website-seo-orphan-page-priority","query":"Which pages should receive internal links first?","primaryKeyword":"orphan page priority","relatedQueries":["deep page internal links","internal link audit"],"category":"Website SEO","audience":"Site owners prioritizing internal-link maintenance","task":"Rank indexable pages by missing inbound links and excessive click depth.","freeAsset":"Internal link priority queue","guide":["Input: prepare URL, indexable status, inbound internal-link count, and clicks from the homepage.","Exclude pages intentionally marked noindex or removed from the content plan.","Place pages with zero inbound internal links first, then pages at four or more clicks from the homepage.","For each destination, select one topically related source page from a supplied list and draft a descriptive anchor.","Output: ordered URL, priority reason, suggested source, anchor, and a check that the source is itself indexable and reachable."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Rank this supplied internal-link data: {\"pages\":[{\"url\":\"<URL>\",\"indexable\":true,\"inbound_internal_links\":0,\"depth_from_home\":4}],\"source_pages\":[{\"url\":\"<URL>\",\"title\":\"<TITLE>\",\"summary\":\"<SUMMARY>\"}]}. Return JSON with queue containing url, priorityReason, suggestedSourceUrl, suggestedAnchor, and validationNotes.","paidNextStep":"Paid TimeToPost plans can support content drafting and social analytics after site owners implement the internal links. No automated site crawl is claimed.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/Wordpress/comments/1wkqvu5/promo_i_built_a_free_internal_linking_plugin_for/","https://www.reddit.com/r/TechSEO/comments/1mwdv0c/pillar_cluster_qa_checklist_i_use_to_prevent/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. An observed comment specifically prioritizes orphan and deep pages, and a practitioner checklist also identifies orphan prevention as a concern."},{"id":"ai-visibility-llms-lint","query":"Is my llms.txt valid, or did I write it like robots.txt?","primaryKeyword":"llms.txt validator","relatedQueries":["llms.txt format","validate llms.txt"],"category":"AI visibility","audience":"Developers and technical editors","task":"Validate llms.txt structure against the published markdown proposal and identify robots.txt directives that do not belong.","freeAsset":"llms.txt lint checklist","guide":["Paste the complete file and number its lines. Raw llms.txt text # Acme Docs\n> Product documentation\n## Guides\n- [Start](/start) A line-numbered copy The file has exactly one H1.","Check the summary and section order. H1, optional blockquote, H2 sections and Optional section > Documentation for Acme API A list of missing or misplaced elements Optional is used only for links an agent may skip.","Inspect every section row. Each item beneath an H2 - [Authentication](https://example.com/docs/auth): Token setup Valid markdown links with optional notes Every list item has a title and URL.","Remove robots.txt syntax. Directive-like lines User-agent: *\nDisallow: /private A violation list with line numbers No User-agent, Allow, Disallow or Crawl-delay lines remain."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review this llms.txt locally without calling an MCP tool: {{LLMS_TXT}}. Return JSON with valid, errors containing line and message, h1, summary, and sections containing heading and links. Apply the published markdown proposal only and flag robots.txt directives.","paidNextStep":"No paid TimeToPost feature validates or monitors llms.txt. Growth includes AutoSEO drafts once per week, but that is a separate content workflow.","availability":"guide-only","evidenceUrls":["https://llmstxt.org/","https://www.reddit.com/r/llmscentral/comments/1nvseck/how_to_create_an_llmstxt_file_stepbystep_tutorial","https://www.reddit.com/r/AISearchLab/comments/1mzzdqv/what_is_the_right_way_to_create_an_llmstxt"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Two discussion excerpts show confusion between the markdown proposal and robots.txt-style files."},{"id":"ai-visibility-llms-path","query":"Should llms.txt be at the site root or beside my docs?","primaryKeyword":"llms.txt location","relatedQueries":["path scoped llms.txt","docs llms.txt"],"category":"AI visibility","audience":"Documentation owners and web developers","task":"Check whether an llms.txt file is published at the conventional site-root location and document any additional project-specific files without treating them as a hierarchical override system.","freeAsset":"llms.txt path worksheet","guide":["Write the site origin and the documentation page URL. One page URL https://example.com/docs/api/auth The origin and normalized page path Exclude the query string and fragment.","Check the conventional root location. The site origin https://example.com/llms.txt HTTP status and content type for /llms.txt Do not treat an HTML error page as a valid llms.txt file.","Record any additional llms.txt files intentionally published by the site owner. Known project or documentation paths https://example.com/docs/llms.txt A list of additional files and their stated scope Do not infer that the deepest file automatically overrides the root file.","Review the selected file's links and stated scope. The root file and any documented project-specific file Links under a Docs section The file to use for the stated project and any out-of-scope links State that external client discovery and adoption may vary."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Given {{PAGE_URL}}, the manually collected status for the conventional root file, and any site-documented additional files in {{CANDIDATE_STATUSES}}, return JSON with rootFile, additionalFiles, documentedScope, recommendedFile, reasoning, outOfScopeLinks, and limitations. Do not apply a deepest-path override rule or claim that outside systems fetch any file.","paidNextStep":"No paid TimeToPost feature resolves or maintains path-scoped llms.txt files.","availability":"guide-only","evidenceUrls":["https://llmstxt.org/"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. The need is inferred from uncertainty about where to publish the proposed file; external client discovery and support may vary."},{"id":"ai-visibility-markdown-alternate","query":"What clean markdown URL should an agent open for this HTML page?","primaryKeyword":"markdown alternate","relatedQueries":["page markdown version","html to markdown URL"],"category":"AI visibility","audience":"Documentation and marketing teams","task":"Test proposed markdown alternate URL patterns without claiming they affect citations.","freeAsset":"markdown alternate probe sheet","guide":["Normalize the page URL. Canonical HTML URL https://example.com/docs/setup A URL without query parameters Keep the original host and path.","Create the proposal's alternate candidates. Normalized URL /docs/setup.md, /docs/setup/index.md, /docs/setup/index.html.md A candidate URL list Do not overwrite or publish anything.","Open each candidate and record status and content type. Candidate list 200 text/markdown Status and content type table A 200 HTML shell is not a clean markdown response.","Compare the successful body with the visible page. Markdown response and source page Both contain the Installation heading Preferred alternate or none Label citation impact as unknown."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Using the manually fetched results {{URL_RESULTS}}, return JSON with candidates containing url, status, contentType and textPresent, plus preferred and limitations. Do not claim markdown alternates improve ranking or citations.","paidNextStep":"Starter supports up to 30 X posts, so an approved documentation update can be shared on X separately. It does not generate or host markdown alternates.","availability":"guide-only","evidenceUrls":["https://llmstxt.org/","https://www.reddit.com/r/SEO/comments/1tc550w/we_opensourced_the_markdown_spec_we_built_after/","https://www.reddit.com/r/webdev/comments/1nsxht3/llmstxt"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. The proposal defines alternate patterns, while discussion excerpts describe demand for cleaner non-hydrated page representations."},{"id":"ai-visibility-link-relations","query":"How can clients discover a page's markdown version and covering llms.txt?","primaryKeyword":"markdown link relation","relatedQueries":["rel alternate markdown","rel describedby llms.txt"],"category":"AI visibility","audience":"Server, CDN and template developers","task":"Check documented HTML and HTTP link relations for markdown and llms.txt discovery.","freeAsset":"link relation checklist","guide":["Collect the raw response headers. One public page URL https://example.com/docs/start The complete Link header value Use the raw response rather than rendered developer tools markup.","Inspect raw HTML link elements. HTML head source <link rel=\"alternate\" type=\"text/markdown\" href=\"/docs/start.md\"> Alternate and describedby relations The markdown relation includes type text/markdown.","Resolve relative targets. Every discovered href /llms.txt becomes https://example.com/llms.txt Absolute target URLs Targets resolve against the page URL.","Open each target. Resolved targets 200 text/markdown Broken, redirected or successful status Do not infer client adoption from a valid relation."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze these copied headers and raw HTML locally: {{HEADERS_AND_HTML}}. Return JSON with httpLink, htmlLinks, brokenTargets, and caveat that current client adoption is not established.","paidNextStep":"No paid TimeToPost feature monitors HTTP Link headers or HTML discovery relations.","availability":"guide-only","evidenceUrls":["https://llmstxt.org/"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. The use case follows the proposal's discovery mechanism, with no observed demand count."},{"id":"ai-visibility-llms-links","query":"Which llms.txt links are broken, redirected or unnecessarily large?","primaryKeyword":"llms.txt link audit","relatedQueries":["broken llms.txt links","audit llms.txt"],"category":"AI visibility","audience":"Editors maintaining curated llms.txt indexes","task":"Manually audit the destinations listed in llms.txt and keep the result distinct from citation tracking.","freeAsset":"llms.txt link audit table","guide":["Extract each markdown link and its section. llms.txt contents Guides | Setup | https://example.com/setup One row per link Mark whether the row is under Optional.","Open each URL and record the final destination. Extracted URLs /old redirects to /new Initial URL, final URL and status Treat repeated redirects as an issue.","Record response type and approximate size. Successful responses text/html, 420 KB Content type and byte estimate Flag unusually large files for editorial review, not as an automatic failure.","Prioritize repairs. Audit table 404 required guide before large optional appendix Ordered repair list Required-section failures come before Optional-section issues."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review the manually collected llms.txt link table {{LINK_TABLE}}. Return JSON with links containing sourceAnchor, finalUrl, status, approximateBytes and optional, followed by repairs in priority order. Do not claim any citation effect.","paidNextStep":"No paid TimeToPost plan provides llms.txt link monitoring.","availability":"guide-only","evidenceUrls":["https://llmstxt.org/"],"evidenceType":"hypothesis","demandConfidence":"low","demandNote":"No measured keyword volume. Link maintenance is a practical inference from the curated index format, not an observed demand signal."},{"id":"ai-visibility-robots-matrix","query":"If robots.txt blocks crawlers, can they still read my llms.txt?","primaryKeyword":"AI crawler robots.txt","relatedQueries":["Googlebot llms.txt","Google-Extended robots"],"category":"AI visibility","audience":"Site owners managing crawl and training controls","task":"Separate Googlebot, Google-Extended and wildcard robots.txt rules for llms.txt and its linked pages.","freeAsset":"crawler access matrix","guide":["Open the site's robots.txt. Site origin https://example.com/robots.txt Raw robots.txt text Confirm it is not an HTML error page.","List paths to test. llms.txt and important linked pages /llms.txt, /docs/start.md A path checklist Include each path exactly as requested.","Evaluate rules separately. Googlebot, Google-Extended and * groups Googlebot allowed; Google-Extended disallowed Token-by-path allow table Do not merge Googlebot and Google-Extended into one control.","Document the limitation. Completed matrix User-triggered fetch behavior may differ A factual access summary Do not promise every assistant will obey the file."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Parse this copied robots.txt locally: {{ROBOTS_TXT}} for these paths {{PATHS}}. Return JSON with groups and a matrix for Googlebot, Google-Extended and wildcard. State that user-triggered assistants may behave differently and do not claim universal enforcement.","paidNextStep":"No paid TimeToPost plan changes or monitors robots.txt access controls.","availability":"guide-only","evidenceUrls":["https://llmstxt.org/","https://developers.google.com/search/docs/appearance/ai-features","https://www.reddit.com/r/aeo/comments/1vsr4er/we_blocked_a_page_in_robotstxt_then_asked_8_ai/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance distinguishes Search crawl control from other controls, and one small discussion test reports inconsistent user-triggered fetching."},{"id":"ai-visibility-firewall-fetch","query":"Does a non-browser crawler receive my page or a firewall challenge?","primaryKeyword":"crawler firewall test","relatedQueries":["bot challenge check","non-browser fetch test"],"category":"AI visibility","audience":"Site owners using bot protection or captcha services","task":"Compare manually captured responses without bypassing access controls.","freeAsset":"fetch comparison worksheet","guide":["Request the page without JavaScript using a command-line client or server log. One public URL https://example.com/article Status, content type and body size Do not solve or bypass a challenge.","Repeat with an ordinary browser user-agent. The same URL Mozilla-compatible user-agent A second status and size Keep all other request settings unchanged.","Repeat with a crawler token you are authorized to test. User-supplied user-agent A clearly identified test crawler A third response summary Do not impersonate a crawler for access.","Compare challenge indicators. Three response summaries 403 plus captcha text only for crawler token Likely accessible, blocked or inconclusive A 200 response can still contain a challenge or thin shell."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Compare these user-collected response summaries {{FETCH_RESULTS}}. Return JSON with results containing userAgent, status, bytes, textWords and challengeSuspected, plus conclusion and limitations. Do not recommend bypassing a firewall or captcha.","paidNextStep":"No paid TimeToPost feature performs neutral-network crawler monitoring or bypasses access controls.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/DigitalMarketing/comments/1uqtkoa/i_checked_34_websites_from_a_thread_here_to_see/","https://www.reddit.com/r/webdev/comments/1nsxht3/llmstxt","https://www.reddit.com/r/TechSEO/comments/1ucgsw1/im_crawling_1m_sites_to_see_how_theyre/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Several discussion excerpts report captcha, firewall and response failures, but their samples are self-selected."},{"id":"ai-visibility-raw-text","query":"What article text exists before JavaScript runs?","primaryKeyword":"raw HTML text","relatedQueries":["JavaScript content check","crawler text extractor"],"category":"AI visibility","audience":"Teams publishing client-rendered content","task":"Compare raw response text with the rendered page and identify a thin application shell.","freeAsset":"raw text comparison","guide":["Save the initial HTML response without executing scripts. One page URL view-source:https://example.com/article Raw HTML Use the network response, not the rendered DOM.","Extract the title, headings and readable body text. Raw HTML Title plus H1 and three paragraphs Outline and approximate word count Ignore scripts, styles and navigation boilerplate.","Compare it with the browser-rendered article. Raw and rendered text Raw response has 40 words; rendered article has 900 Missing headings and passages Do not assign an unsupported minimum word threshold.","Choose a remediation. Comparison result Server-render the main article text A specific engineering action The important content should be available as text."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Compare the user-supplied raw HTML and rendered-page text locally: {{RAW_AND_RENDERED_TEXT}}. Return JSON with rawTitle, rawHeadings, approximateRawWordCount, renderedHeadings, approximateRenderedWordCount, missingPassages, classification, remediationOptions, and limitations. Do not claim to fetch the URL, impose a minimum word threshold, or guarantee search or citation outcomes.","paidNextStep":"Growth includes AutoSEO drafts once per week. It does not guarantee server rendering or AI citations.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/ai-features","https://llmstxt.org/","https://www.reddit.com/r/SEO/comments/1tc550w/we_opensourced_the_markdown_spec_we_built_after/","https://www.reddit.com/r/TechSEO/comments/1vdmnwp/i_tested_11_recent_sites_with_four_ai_crawler/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance recommends textual availability, and discussion excerpts describe hydrated or thin raw HTML."},{"id":"ai-visibility-jsonld-source","query":"Is my JSON-LD in the initial HTML or inserted after load?","primaryKeyword":"raw JSON-LD check","relatedQueries":["JSON-LD initial HTML","client-side schema"],"category":"AI visibility","audience":"Teams using client-side widgets or tag managers","task":"Check whether structured data is present in the raw response without asserting a citation benefit.","freeAsset":"source schema probe","guide":["Capture the raw HTML response. One public page URL https://example.com/service Unrendered source Do not use the post-JavaScript Elements panel.","Search for application/ld+json scripts. Raw source <script type=\"application/ld+json\"> All raw JSON-LD blocks Record an explicit none-found result.","Parse each block. JSON-LD text \"@type\":\"Organization\" Types and top-level keys Flag invalid JSON rather than guessing its meaning.","Compare with rendered markup. Raw blocks and rendered DOM blocks FAQPage appears only after load Initial, client-inserted or absent classification Do not claim server-side placement improves citations."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Compare the user-supplied raw HTML and rendered DOM excerpts locally: {{RAW_AND_RENDERED_HTML}}. Return JSON with rawJsonLdBlocks, renderedJsonLdBlocks, parseErrors, types, placementClassification, and limitations. Use unknown when the supplied evidence is insufficient, and do not claim that placement changes citation outcomes.","paidNextStep":"Growth provides weekly AutoSEO drafts, but it does not install or move JSON-LD into server-rendered HTML.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/aeo/comments/1sfl8mz/we_tested_50_sites_with_gtminjected_structured/","https://developers.google.com/search/docs/appearance/ai-features"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One self-reported audit excerpt describes client-injected JSON-LD missing from raw HTML; prevalence was not independently measured."},{"id":"ai-visibility-schema-consistency","query":"Which structured-data claims are missing from the visible page?","primaryKeyword":"schema content mismatch","relatedQueries":["JSON-LD visible text","schema placeholder check"],"category":"AI visibility","audience":"Publishers generating structured data from templates","task":"Compare important JSON-LD strings with visible source text and detect unresolved placeholders.","freeAsset":"schema consistency table","guide":["Extract JSON-LD from the raw response. Raw page HTML headline, name and description fields Field paths and string values Skip non-text values.","Extract visible text from the same response. Raw HTML Page heading and article body Normalized visible text Use the same response version for both sides.","Compare each structured-data string. JSON-LD values and visible text JSON-LD price is absent from the page Matched and unmatched fields Allow minor whitespace differences but not changed facts.","Search for template tokens. JSON-LD text {{product_name}} or ${price} Unresolved placeholder list Review every flagged value before publishing."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Compare the user-supplied raw HTML, extracted visible text, and JSON-LD locally: {{SCHEMA_AND_VISIBLE_TEXT}}. Return JSON with fields containing path, value, visibleMatch and notes, plus unresolvedPlaceholders, manualReview, and limitations. Do not fetch the page, invent missing facts, or claim ranking or citation effects.","paidNextStep":"Growth includes AutoSEO drafts once per week. Technical schema corrections remain a site implementation task.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/ai-features","https://www.reddit.com/r/DigitalMarketing/comments/1uqtkoa/i_checked_34_websites_from_a_thread_here_to_see/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance says structured data should match visible text, and one audit excerpt reports unresolved template values."},{"id":"ai-visibility-faq-shape","query":"Should this page use FAQPage or QAPage markup?","primaryKeyword":"FAQPage vs QAPage","relatedQueries":["FAQ schema type","QAPage markup"],"category":"AI visibility","audience":"Help-center and public-information editors","task":"Choose the appropriate markup shape and verify that accepted answers are visible.","freeAsset":"FAQ markup decision guide","guide":["Classify how answers are created. Page editorial model Publisher supplies one answer per question Single-answer or community-answer classification Confirm whether users can submit alternative answers.","Select the candidate type. Classification Single publisher answer maps to FAQPage FAQPage or QAPage recommendation Use QAPage when users can submit competing answers.","List every question and accepted answer. Visible page text How do refunds work? Refunds take five business days. Question-answer pairs Each accepted answer is visible on the page.","State eligibility limits. Site type and chosen markup Not a government or health site A caution about rich-result expectations Do not present markup as an AI citation feature."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze this page description and copied question-answer text locally: {{PAGE_CONTENT}}. Return JSON with recommendedType, rationale, visibleQA, jsonLdOnlyAnswers, and limitations. Do not claim rich-result or AI citation eligibility.","paidNextStep":"Growth can create weekly AutoSEO drafts, but it does not guarantee FAQ rich results or AI citations.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/structured-data/faqpage","https://developers.google.com/search/docs/appearance/ai-features"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. The distinction is documented, but the FAQ documentation was available only as a search excerpt in the research."},{"id":"ai-visibility-search-eligibility","query":"What does this URL need to be eligible as a supporting link in search AI features?","primaryKeyword":"AI search eligibility","relatedQueries":["AI Overview eligibility","search snippet eligibility"],"category":"AI visibility","audience":"Site owners evaluating public search eligibility","task":"Review ordinary crawl, index and snippet signals without requiring a special AI file.","freeAsset":"AI search eligibility checklist","guide":["Run the free single-page SEO audit. Public page URL https://example.com/guide A 0 to 100 score and top three fixes Treat it as a page check, not a full crawl or ranking report.","Verify Googlebot access. robots.txt and page path Googlebot is not disallowed Allowed, blocked or ambiguous Do not substitute Google-Extended for Googlebot.","Inspect index and snippet controls. Raw HTML and response headers No noindex and no page-wide nosnippet Control inventory A canonical to another host requires review.","Confirm meaningful text is present. Raw response body The article heading and core answer appear in source Text-present or thin-shell result State that passing does not guarantee appearance."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review the user-supplied single-page audit output, robots.txt rules, raw HTML, and response headers locally: {{PAGE_EVIDENCE}}. Return JSON with auditFindings, googlebotAccess, indexControls, snippetControls, canonicalReview, meaningfulTextPresent, manualChecks, and limitations. Do not request a gated report, measured rankings, or keyword gaps. State that passing these checks does not guarantee indexing or an AI-feature supporting link.","paidNextStep":"Growth includes weekly AutoSEO drafts. Paid plans do not guarantee indexing, rankings or supporting-link placement.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/ai-features","https://dev.to/thefron/i-shipped-llmstxt-json-ld-and-ai-crawler-allowances-heres-what-each-one-actually-does-1i75"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance directly states that ordinary indexing and snippet eligibility apply and no additional technical requirement exists."},{"id":"ai-visibility-snippet-controls","query":"How can I exclude one section from snippets without removing the page from search?","primaryKeyword":"data-nosnippet","relatedQueries":["nosnippet vs noindex","max-snippet control"],"category":"AI visibility","audience":"Publishers controlling search previews","task":"Distinguish page-wide and section-level snippet controls.","freeAsset":"snippet control decoder","guide":["State the intended scope. Content to restrict Hide one pricing note but keep the article indexed Section-level or page-level requirement Do not use noindex for a section-only goal.","Inspect meta tags and headers. Raw HTML head and HTTP headers meta robots content=\"nosnippet\" Page-wide controls Record noindex, nosnippet and max-snippet separately.","Inspect the target element. Raw HTML around the sensitive text <span data-nosnippet>Internal note</span> Section-level control status The attribute surrounds the exact text to exclude.","Explain the consequence. Detected controls data-nosnippet limits that region; noindex removes eligibility Plain-language effect by control Do not generalize behavior to every answer engine."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Review the copied raw HTML and headers {{HTML_AND_HEADERS}} locally. Return JSON with controls containing kind, scope and value, recommendedControl for {{INTENDED_SCOPE}}, and limitations. Do not claim universal support outside the documented search system.","paidNextStep":"No paid TimeToPost feature edits or deploys snippet-control markup.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/ai-features"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. The controls and their roles are explicitly named in official documentation."},{"id":"ai-visibility-stale-snippet","query":"Why is old text still showing after I added a snippet control?","primaryKeyword":"snippet not updating","relatedQueries":["nosnippet not working","recrawl snippet control"],"category":"AI visibility","audience":"Site owners debugging recently changed preview controls","task":"Verify the current raw response and follow the documented recrawl troubleshooting order.","freeAsset":"snippet update debug sheet","guide":["Fetch the current raw HTML. Affected page URL https://example.com/pricing Current response body and headers Confirm the intended control is actually present.","Check the control's scope and syntax. Current markup data-nosnippet wraps the old price Correct, misplaced or absent A page-wide meta directive cannot be inferred from rendered styling.","Record cache information and deployment time. Cache headers and publish timestamp Updated today; CDN age 12 hours Possible stale-delivery factors Do not claim which version the crawler stored.","Request recrawl in the owner's search account. Verified live URL Use URL Inspection A user-completed recrawl request Allow recrawl time and avoid promising an update date."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Using the user-collected current HTML, headers and deployment time {{DEBUG_INPUT}}, return JSON with controlInRawHtml, syntaxAssessment, cacheFactors, orderedNextChecks and limitations. Do not claim access to Search Console or crawler cache.","paidNextStep":"No paid TimeToPost plan accesses Search Console or requests recrawls.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/ai-features"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. Official documentation includes this troubleshooting sequence, but no discussion-based demand was measured."},{"id":"ai-visibility-traffic-measurement","query":"How can I tell whether search AI features sent traffic instead of ordinary web results?","primaryKeyword":"AI search traffic","relatedQueries":["AI Overview traffic","AI referral attribution"],"category":"AI visibility","audience":"Marketers and founders measuring discovery","task":"Explain the documented reporting limit and avoid presenting llms.txt fetches as citations.","freeAsset":"AI traffic interpretation guide","guide":["Open the Web search performance report in the site owner's account. A user-controlled search performance account Performance filtered to Web Clicks and impressions included in Web reporting Do not assume a separate AI-feature dimension exists.","Export the relevant date and page range. Page filter and dates /guide from August 1 to August 31 A user-provided aggregate table Label it as combined Web performance.","Inspect direct referral and server logs separately. Analytics export or access-log excerpt Requests to /llms.txt by user-agent Referral totals and file-fetch counts A file fetch is not evidence of a citation.","Write the measurement conclusion. Combined search data and logs AI-feature traffic cannot be isolated from this report Known, unknown and proxy signals Do not estimate an unsupported AI traffic share."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze only the user-provided aggregate export and log counts {{MEASUREMENT_DATA}}. Return JSON with webPerformance, directReferrals, llmsTxtFetches, known, unknown and caveats. Do not claim Search Console access, separate AI-feature attribution or that a fetch equals a citation.","paidNextStep":"Pro includes analytics, but no provided TimeToPost tool isolates search AI-feature traffic or accesses Search Console.","availability":"guide-only","evidenceUrls":["https://developers.google.com/search/docs/appearance/ai-features","https://llmstxt.org/","https://dev.to/thefron/i-shipped-llmstxt-json-ld-and-ai-crawler-allowances-heres-what-each-one-actually-does-1i75"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance says these appearances are included under Web performance, creating a documented attribution limitation."},{"id":"mcp-connect-remote-server","query":"How do I connect my assistant to the TimeToPost MCP server?","primaryKeyword":"connect MCP server","relatedQueries":["remote MCP setup","MCP OAuth login"],"category":"AI agents and MCP","audience":"Marketers using an MCP-compatible assistant","task":"Connect the authenticated remote MCP endpoint and verify its available tools.","freeAsset":"MCP connection checklist","guide":["Add https://api.timetopost.co/mcp as a remote MCP server in the client. Input example: the exact HTTPS URL. Output: a saved server entry.","Complete the browser OAuth flow when prompted. Check: do not paste an API key or access token into chat.","Call whoami. Output check: an authenticated account and organization context are returned.","Call get_capabilities. Output check: use only the tool names returned for the authenticated account.","Run list_free_tools as a read-only test. Check: a structured free-tool catalog is returned without attempting a mutation."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","list_free_tools"],"mcpPrompt":"Connect to https://api.timetopost.co/mcp using the client's browser OAuth flow. Call whoami, then get_capabilities, then list_free_tools. Return JSON only as {account:{label,organization}, capabilities:[string], freeTools:[{name,slug}]}. Do not call any mutation, scheduling, approval, or publishing tool.","paidNextStep":"Paid scheduling and analytics capabilities depend on the authenticated account and the capabilities returned by get_capabilities. Confirm backend plan eligibility before any paid action.","availability":"available","evidenceUrls":["https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization","https://stackoverflow.blog/2026/01/21/is-that-allowed-authentication-and-authorization-in-model-context-protocol/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Public install discussions show URL-based remote MCP connections, while protocol documentation establishes browser authorization and authenticated tool discovery."},{"id":"mcp-troubleshoot-oauth-discovery","query":"What should I check when my MCP client says OAuth discovery failed?","primaryKeyword":"OAuth discovery failed","relatedQueries":["MCP metadata error","MCP login failure"],"category":"AI agents and MCP","audience":"Users unable to start the TimeToPost MCP login","task":"Separate an incorrect endpoint from a client or OAuth discovery failure.","freeAsset":"OAuth discovery triage card","guide":["Confirm the configured endpoint is exactly https://api.timetopost.co/mcp. Check for missing HTTPS, copied punctuation, or an extra path.","Reconnect and watch for a browser authorization prompt. Output check: a browser flow should open rather than asking for a token in chat.","If discovery still fails, remove the saved server entry and add the endpoint again to clear stale metadata.","Confirm the client supports authenticated remote HTTP MCP servers, not only local command-based servers.","Record the client name, timestamp, endpoint, and exact error text for support. Do not include access tokens or authorization codes."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Help me diagnose an OAuth discovery failure for the endpoint https://api.timetopost.co/mcp. Input: <client name and exact error text with secrets removed>. Return JSON as {endpointChecks:[string], clientChecks:[string], safeRetrySteps:[string], supportDetails:[string]}. Do not request or expose tokens, authorization codes, passwords, or API keys.","paidNextStep":"OAuth troubleshooting applies to the authenticated MCP connection regardless of subscription. A paid plan does not replace the need for a compatible MCP client and successful OAuth authorization.","availability":"guide-only","evidenceUrls":["https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization","https://stackoverflow.blog/2026/01/21/is-that-allowed-authentication-and-authorization-in-model-context-protocol/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. OAuth discovery and remote MCP authorization failures are documented implementation issues, but their frequency among marketers was not measured."},{"id":"mcp-recover-invalid-grant","query":"Why did MCP login fail with invalid_grant after I approved it?","primaryKeyword":"MCP invalid grant","relatedQueries":["OAuth code expired","PKCE mismatch"],"category":"AI agents and MCP","audience":"Users whose browser consent completed but token exchange failed","task":"Recover from a failed OAuth authorization-code exchange without sharing credentials.","freeAsset":"Invalid grant recovery guide","guide":["Start a completely new connection attempt instead of reusing the prior authorization code. Check: old codes are not copied into chat.","Complete browser consent promptly because authorization codes are short-lived.","Keep the same client and redirect flow throughout the attempt. A changed redirect URI or client identity can invalidate the exchange.","If the client opened multiple login tabs, close them and retry with one clean authorization flow.","If failure continues, report the client name and sanitized error. Output example: invalid_grant after browser consent, with no code, verifier, or token attached."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Create a safe recovery checklist for this sanitized MCP OAuth error: <exact error without codes or tokens>. Return JSON as {likelyChecks:[string], freshLoginSteps:[string], secretsNeverToShare:[string], escalationSummary:string}. Do not ask for an authorization code, PKCE verifier, access token, refresh token, password, or API key.","paidNextStep":"This is an authentication recovery task, not a paid feature. After connection succeeds, paid capabilities depend on the account's plan and the result of get_capabilities.","availability":"guide-only","evidenceUrls":["https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. invalid_grant is a documented OAuth failure, but the supplied research did not measure how often TimeToPost users encounter it."},{"id":"mcp-check-scopes-and-permissions","query":"I'm logged in, so why is an MCP tool still forbidden?","primaryKeyword":"MCP insufficient scope","relatedQueries":["MCP 403 error","MCP tool permission"],"category":"AI agents and MCP","audience":"Authenticated users receiving a permission error","task":"Distinguish successful authentication from missing capability or organization access.","freeAsset":"MCP permission checklist","guide":["Call whoami to identify the current account and organization. Check: it is the organization the user intended to access.","Call get_capabilities before retrying the blocked action. Output: the capabilities currently available to that account.","Compare the requested tool with the returned capabilities instead of assuming every listed server tool is authorized.","Treat 401 as missing or invalid authentication and 403 as insufficient permission or scope.","If the organization is wrong, stop and reconnect with the intended account rather than attempting the write in another workspace."],"toolUrl":null,"mcpTools":["whoami","get_capabilities"],"mcpPrompt":"Call whoami and then get_capabilities. Input: the blocked tool name <tool_name> and intended organization <organization_name>. Return JSON as {authenticated:boolean, currentOrganization:string, organizationMatches:boolean, requestedTool:string, capabilityVisible:boolean, safeNextAction:string}. Do not call the blocked tool or any mutation.","paidNextStep":"If the required capability is paid, confirm backend plan eligibility and organization authorization. Upgrading does not override organization permissions.","availability":"available","evidenceUrls":["https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization","https://modelcontextprotocol.io/docs/concepts/tools"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Protocol documentation explicitly distinguishes authentication and authorization failures, and public discussions report tools varying by user permissions."},{"id":"mcp-find-real-tool-names","query":"How can I see the real MCP tool names instead of asking the model to guess?","primaryKeyword":"MCP tool list","relatedQueries":["available MCP tools","wrong tool name"],"category":"AI agents and MCP","audience":"People writing reliable prompts for TimeToPost","task":"Discover authenticated capabilities and use only actual TimeToPost tool names.","freeAsset":"Verified tool catalog worksheet","guide":["Call whoami to establish the authenticated account and organization.","Call get_capabilities and preserve the returned tool or capability names exactly.","Use list_free_tools for the public-tool subset and list_integrations for available connection types.","Copy exact names such as seo_audit or list_drafts into prompts. Do not translate them into invented names.","If a desired name is absent, classify the workflow as manual or guide-only rather than repeatedly calling a guessed tool."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","list_free_tools","list_integrations"],"mcpPrompt":"Call whoami, get_capabilities, list_free_tools, and list_integrations. Return JSON as {organization:string, capabilities:[string], freeTools:[string], integrations:[string]}. Preserve exact returned names. Do not infer, rename, or invent tools and do not call mutations.","paidNextStep":"Paid functionality is account-specific. Use get_capabilities and the backend plan check to determine which scheduling, AI, or analytics actions are available.","availability":"available","evidenceUrls":["https://www.reddit.com/r/GithubCopilot/comments/1kmd5nl/where_to_find_list_of_tools_available_to_agent/","https://modelcontextprotocol.io/docs/concepts/tools"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A public discussion records a user receiving incorrect invented tool names, and the MCP documentation defines formal tool discovery."},{"id":"mcp-use-small-tool-set","query":"How do I keep an MCP marketing workflow from loading or calling unnecessary tools?","primaryKeyword":"MCP tool selection","relatedQueries":["reduce MCP context","MCP capability profile"],"category":"AI agents and MCP","audience":"Operators using assistants with many connected tools","task":"Select a minimal set of TimeToPost tools for one clearly bounded job.","freeAsset":"Minimal tool profile worksheet","guide":["Write one bounded job sentence, such as auditing one page and returning three fixes.","Call whoami, then get_capabilities, and select only the returned tools directly required for that job.","Separate read-only work from mutations. Do not include scheduling or publishing tools in a research profile.","Write the expected output fields and stop conditions before making any task-specific call.","After the run, verify that the assistant called only the selected tools and did not substitute similarly named tools."],"toolUrl":null,"mcpTools":["whoami","get_capabilities"],"mcpPrompt":"Call whoami and then get_capabilities for this job: <one concrete marketing job>. Return JSON as {organization:string, job:string, availableCapabilities:[string], minimalTools:[string], excludedMutationTools:[string], suggestedPrompt:string, outputContract:object}. Build the suggested prompt locally from the returned capabilities. Do not execute the suggested workflow or call any mutation.","paidNextStep":"Paid capabilities remain account-specific. Confirm them with get_capabilities and the backend plan check while continuing to expose only the smallest relevant tool set.","availability":"available","evidenceUrls":["https://www.reddit.com/r/mcp/comments/1u1gy61/mcp_connector_v014_and_015_adaptive_tool_loading/","https://modelcontextprotocol.io/docs/concepts/tools"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Builder discussions specifically identify full tool schemas as context overhead and describe smaller active tool profiles."},{"id":"mcp-audit-one-web-page","query":"Can my assistant audit one page for basic SEO and GEO issues?","primaryKeyword":"SEO page audit","relatedQueries":["technical SEO check","GEO page audit"],"category":"AI agents and MCP","audience":"Content marketers checking a specific public page","task":"Run the existing deterministic page audit and prioritize the top three fixes.","freeAsset":"SEO and GEO audit","guide":["Provide one publicly reachable page URL. Input example: https://example.com/article.","Run the free audit with the full or gated report disabled. Output: deterministic checks and a score from 0 to 100.","Extract the top three reported issues and preserve the audit's wording rather than claiming a full-site crawl.","For each issue, map the result to one page edit, such as changing a title or adding a missing description.","Recheck the page after deployment and compare the same deterministic checks. Check: do not describe this as measured live rankings."],"toolUrl":"https://timetopost.co/tools/seo-audit/","mcpTools":["seo_audit"],"mcpPrompt":"Use seo_audit on <public_page_url> with the free result only and full=false if supported. Return JSON as {url:string, score:number, checks:[{name,status,evidence}], topFixes:[{issue,action,verification}]}. State that this is a single-page technical audit, not a full crawl or measured ranking report.","paidNextStep":"Use the available single-page audit for its deterministic checks only. It does not crawl a site or provide measured rankings, search volume, or keyword-gap data. Growth may generate configured-topic articles through AutoSEO after backend capability confirmation.","availability":"available","evidenceUrls":["https://www.reddit.com/r/BestGitHubRepos/comments/1wm7ee9/seomonster_a_local_mcp_server_that_turns_seo_work/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Multiple public marketing-MCP posts describe asking an assistant for SEO analysis, but the available TimeToPost function is limited to one fetched page and deterministic checks."},{"id":"mcp-get-keyword-snapshot","query":"Can my assistant give me directional keyword ideas without claiming exact search volume?","primaryKeyword":"keyword snapshot","relatedQueries":["keyword ideas","estimated keyword bands"],"category":"AI agents and MCP","audience":"Writers choosing a topic or phrase","task":"Retrieve free directional keyword ideas with estimated bands and redacted exact metrics.","freeAsset":"Keyword Snapshot","guide":["Enter one seed phrase. Input example: remote team content calendar.","Run the free snapshot with full=false. Output: directional ideas and estimated bands, not measured exact volume.","Group returned ideas by apparent intent using only the supplied wording and fields.","Choose one primary phrase and two supporting phrases based on relevance to the intended page.","Add a note to the brief that exact volume, difficulty, CPC, and trend data were not included in the free result."],"toolUrl":"https://timetopost.co/tools/keyword-snapshot/","mcpTools":["keyword_snapshot"],"mcpPrompt":"Use keyword_snapshot for the seed phrase <seed_keyword> with the free result and full=false if supported. Return JSON as {seed:string, ideas:[{keyword,estimatedBand,intent}], selected:{primary:string,supporting:[string]}, limitation:string}. The limitation must say the free output is directional and does not provide measured exact search volume.","paidNextStep":"Treat the snapshot as directional only. Do not promise measured live search volume, difficulty, CPC, or trends. Use keyword_research or keyword_add_to_plan only if get_capabilities returns those exact tools and the backend confirms access.","availability":"available","evidenceUrls":["https://www.reddit.com/r/BestGitHubRepos/comments/1wm7ee9/seomonster_a_local_mcp_server_that_turns_seo_work/","https://www.reddit.com/r/Agentic_SEO/comments/1v2hxxa/built_an_mcp_server_that_connects_claude_to/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Public SEO-agent posts repeatedly ask what to write next, but the free TimeToPost result contains estimated bands rather than measured exact metrics."},{"id":"mcp-check-brand-geo-visibility","query":"Can my assistant check whether one AI model mentions my brand?","primaryKeyword":"GEO visibility check","relatedQueries":["AI brand mention","answer engine visibility"],"category":"AI agents and MCP","audience":"Brand and content teams checking answer-engine visibility","task":"Run one source-labeled AI model probe and report whether the brand appeared.","freeAsset":"GEO Visibility Check","guide":["Provide the exact brand name and one natural-language prompt. Input example: Which services help with <problem>?","Run one free model probe. Output: whether the supplied brand appeared in that response.","Record the model or source label returned by the tool and the exact prompt used.","Classify the result only as appeared or did not appear for this probe. Do not convert it into a citation rank or market share.","Repeat later with the same prompt if monitoring manually, and keep each probe separate rather than claiming statistical coverage."],"toolUrl":"https://timetopost.co/tools/geo-visibility/","mcpTools":["geo_visibility_check"],"mcpPrompt":"Use geo_visibility_check with brand <exact_brand_name> and prompt <exact_question>. Return JSON as {brand:string, prompt:string, sourceLabel:string, appeared:boolean, evidence:string, limitation:string}. The limitation must state that this is one model probe, not citation ranking, repeated visibility measurement, or competitor analysis.","paidNextStep":"The gated report adds multiple prompts, repeated mentions, and competitor comparisons. It should not be represented as part of the free single-probe result.","availability":"available","evidenceUrls":["https://www.reddit.com/r/BestGitHubRepos/comments/1wm7ee9/seomonster_a_local_mcp_server_that_turns_seo_work/"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. A public SEO-agent post explicitly asks whether an answer engine recommends a brand, but it is promotional evidence rather than measured demand."},{"id":"mcp-get-public-posting-time","query":"What is a reasonable public best time to post before I have account analytics?","primaryKeyword":"best time to post","relatedQueries":["posting time calculator","social posting hours"],"category":"AI agents and MCP","audience":"Marketers without enough account-specific engagement history","task":"Retrieve a source-labeled public timing curve as a starting point.","freeAsset":"Best Time to Post calculator","guide":["Choose the supported platform context and an IANA timezone.","Run the public timing calculation. Treat the result as a source-labeled aggregate baseline, not account-specific analytics.","Select two candidate windows from the returned curve. For future dates, convert them with a date-aware IANA timezone converter and verify daylight-saving behavior manually; the current calculator uses a current-date UTC offset and is not reliable for arbitrary future-date conversion.","Place the verified windows into a manual test plan with comparable post types.","After several posts, compare actual account engagement and stop treating the public curve as personalized advice."],"toolUrl":"https://timetopost.co/tools/best-time-to-post-calculator/","mcpTools":["best_time_teaser"],"mcpPrompt":"Use best_time_teaser for <platform_context> and <timezone>. Return JSON as {sourceLabel:string, timezone:string, candidateWindows:[{day,start,end}], personalization:false, conversionCaveat:string, testPlan:[string]}. State that future dates require date-aware IANA timezone conversion and manual DST verification. Do not claim these times come from the user's account analytics.","paidNextStep":"A downloadable calendar may be available through the gated flow, but future event times must be verified with date-aware IANA timezone conversion because the current calculator uses a current-date offset. Account analytics require the relevant connection, scopes, data, and capability.","availability":"available","evidenceUrls":["https://www.reddit.com/r/AgentsOfAI/comments/1wn6u20/i_was_tired_of_generic_x_advice_so_i_gave_my/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A public discussion directly contrasts generic posting-time advice with account-specific performance, supporting use of a public curve only as a starting point."},{"id":"mcp-review-account-optimal-times","query":"Can my assistant find posting times from my connected account data?","primaryKeyword":"optimal posting times","relatedQueries":["account posting analytics","best time from engagement"],"category":"AI agents and MCP","audience":"Authenticated customers with connected account analytics","task":"Retrieve account-specific optimal times and separate them from public timing benchmarks.","freeAsset":"Optimal-time review template","guide":["Call whoami and confirm the intended organization before requesting account analytics.","Call get_capabilities and verify that get_optimal_times is returned for the account.","Confirm that the requested account is connected, the required scopes are present, and sufficient analytics data is available. If any condition is missing, stop without promising personalized results.","If supported, request the account and timezone and preserve the tool's returned provenance and limitations.","Build a test calendar manually. Do not schedule or publish, and verify future dates with a date-aware IANA timezone conversion."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","get_optimal_times"],"mcpPrompt":"Call whoami, then get_capabilities. Confirm the organization equals <organization_name>. Only if get_optimal_times is returned and the requested account is connected with required scopes and data, call it for <account_or_channel> and <timezone>. Return JSON as {organization:string, account:string, timezone:string, windows:[object], provenance:string, prerequisitesMet:boolean, limitations:[string], nextTest:[string]}. Do not promise results when prerequisites are missing, and do not schedule, approve, or publish anything.","paidNextStep":"Account-specific timing is conditional on the connected account, required scopes, sufficient data, get_capabilities, and backend plan eligibility. Scheduling is a separate user-confirmed action.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/AgentsOfAI/comments/1wn6u20/i_was_tired_of_generic_x_advice_so_i_gave_my/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One detailed public workflow asks for account-specific topic and time analysis, but the post is promotional and does not establish broad demand."},{"id":"mcp-compare-engagement-periods","query":"How can I compare recent engagement with the previous period using my connected data?","primaryKeyword":"engagement comparison","relatedQueries":["social performance change","post engagement summary"],"category":"AI agents and MCP","audience":"Social teams reviewing account performance","task":"Retrieve engagement summaries for two periods and calculate transparent differences.","freeAsset":"Period comparison worksheet","guide":["Define two equal date ranges. Input example: the last seven complete days and the preceding seven days.","Call whoami and get_capabilities, then confirm the intended organization and read access.","Call get_engagement_summary separately for each period using the same account and dimensions.","Calculate current minus previous for fields actually returned. Output check: absent metrics remain null rather than being invented.","Flag possible outliers for human review, but do not claim causation from a summary alone."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","get_engagement_summary"],"mcpPrompt":"Call whoami, then get_capabilities, and confirm organization <organization_name>. If confirmed, use get_engagement_summary for <account_id>, current range <current_start/current_end>, and previous range <previous_start/previous_end>. Return JSON as {account:string, current:object, previous:object, deltas:object, missingMetrics:[string], possibleOutliers:[object], causalClaims:false}. Do not mutate, schedule, approve, or publish.","paidNextStep":"Connected-account comparison is conditional on the account connection, required scopes and metrics, get_capabilities, and backend plan eligibility. Keep the workflow read-only.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/AgentsOfAI/comments/1wn6u20/i_was_tired_of_generic_x_advice_so_i_gave_my/","https://www.reddit.com/r/Agentic_SEO/comments/1v2hxxa/built_an_mcp_server_that_connects_claude_to/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Public examples ask for current-versus-previous comparisons using first-party data, though the examples are product posts rather than a measured sample."},{"id":"mcp-analyze-post-metrics","query":"Which of my posts performed best without relying on generic advice?","primaryKeyword":"post performance analysis","relatedQueries":["social post metrics","top posts analysis"],"category":"AI agents and MCP","audience":"Creators and marketers with connected post analytics","task":"Read actual post metrics and rank posts using a user-selected metric.","freeAsset":"Post-metric analysis template","guide":["Choose a date range and one primary metric from the metrics the account actually exposes.","Call whoami and get_capabilities, then confirm the organization before reading post data.","Use list_posts to identify posts in the range and get_post_metrics for the selected posts.","Rank only on the selected metric and show raw values. Check: do not combine unlike metrics into an unexplained score.","Read the top posts with get_post and note repeated topics or formats as hypotheses to test, not proven causes."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","list_posts","get_post_metrics","get_post"],"mcpPrompt":"Call whoami, then get_capabilities, and confirm organization <organization_name>. Read posts for <account_id> in <date_range>, retrieve available metrics, and rank by <one_metric>. Return JSON as {metric:string, ranked:[{postId,value,textExcerpt}], unavailableMetrics:[string], repeatedPatterns:[string], caveat:string}. Do not create, edit, schedule, approve, or publish anything.","paidNextStep":"Connected post analysis is conditional on the account connection, required scopes and returned metrics, get_capabilities, and backend plan eligibility. Analysis does not queue a post.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/AgentsOfAI/comments/1wn6u20/i_was_tired_of_generic_x_advice_so_i_gave_my/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A detailed public workflow explicitly asks the assistant to use the account's own posts, replies, and metrics instead of generic recommendations."},{"id":"mcp-create-reviewable-drafts","query":"Can my assistant create social drafts without scheduling or publishing them?","primaryKeyword":"AI social drafts","relatedQueries":["draft for approval","no autopublish workflow"],"category":"AI agents and MCP","audience":"Editors who want assistance writing but retain publication control","task":"Create draft records for a confirmed organization and leave them unapproved and unscheduled.","freeAsset":"Draft-only workflow card","guide":["Prepare a brief with topic, audience, factual inputs, prohibited claims, and desired length. Input example: a 240-character X post about a published article.","Call whoami and get_capabilities, then show the organization and ask the user to confirm it before creating anything.","Use create_drafts only after confirmation. Output: draft IDs and text, with no schedule time or publication action.","Use list_drafts to verify the new records exist and remain drafts.","Return the drafts for human editing. Check: do not call approve_draft, schedule_post, publish_post, or publish_thread."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","create_drafts","list_drafts"],"mcpPrompt":"First call whoami, then get_capabilities. Show the organization and require explicit confirmation that it equals <organization_name>. After confirmation, use create_drafts with brief {topic:<topic>, audience:<audience>, facts:<verified_facts>, prohibitedClaims:<claims>, channel:'X', count:<count>}. Then call list_drafts to verify them. Return JSON as {organization:string, drafts:[{id,text,status}], scheduled:false, approved:false, published:false}. Do not call approve_draft, reject_draft, schedule_post, publish_post, or publish_thread.","paidNextStep":"Draft creation requires the returned capability and backend plan eligibility. Keep drafts unapproved, unscheduled, and unpublished until a separate human-confirmed action. Public publishing support is X only.","availability":"guide-only","evidenceUrls":["https://community.n8n.io/t/draft-approve-google-sheets-gpt-draft-slack-approve-reject-human-still-posts/310875","https://www.reddit.com/r/AI_Agents/comments/1uy2g3y/the_3_levels_i_let_ai_touch_a_task_most_people/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A detailed community workflow uses draft, approve or reject, and human posting, while a separate discussion recommends draft-for-approval for most real work."},{"id":"mcp-review-draft-queue","query":"How can I review pending drafts without letting the assistant approve them?","primaryKeyword":"draft review queue","relatedQueries":["pending social drafts","human approval queue"],"category":"AI agents and MCP","audience":"Editors responsible for reviewing generated content","task":"List draft records and produce a human review sheet without changing statuses.","freeAsset":"Draft review rubric","guide":["Call whoami and confirm the intended organization before reading drafts.","Call get_capabilities and verify list_drafts is available.","List the relevant drafts and retrieve individual details with get_post when a record is linked to a post object.","Score each draft manually for factual support, audience fit, prohibited claims, length, and required edits.","Return a review recommendation only. Check: no approve_draft, reject_draft, scheduling, or publishing call is made."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","list_drafts","get_post"],"mcpPrompt":"Call whoami, then get_capabilities, and confirm organization <organization_name>. Use list_drafts for <status_or_filter>. Read details only as needed. Return JSON as {drafts:[{id,text,status,checks:{facts,audience,claims,length},recommendedEdits:[string],recommendation:'review'|'revise'}]}. Do not approve, reject, schedule, publish, or otherwise mutate any record.","paidNextStep":"Paid plans can support subsequent X scheduling, but approval and scheduling should remain separate explicit actions after the reviewer edits the draft.","availability":"available","evidenceUrls":["https://community.n8n.io/t/draft-approve-google-sheets-gpt-draft-slack-approve-reject-human-still-posts/310875","https://tibinjacob.com/blog/human-in-the-loop-gtm-agents"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. The supplied sources describe concrete draft queues and recommend placing a human gate immediately before consequential actions."},{"id":"mcp-create-drafts-from-source","query":"Can my assistant turn one source URL into drafts while keeping them unpublished?","primaryKeyword":"drafts from source","relatedQueries":["repurpose URL into posts","source based social draft"],"category":"AI agents and MCP","audience":"Content teams repurposing an existing article or source","task":"Create draft records from a source and verify processing status without publishing.","freeAsset":"Source-to-draft brief","guide":["Provide one source URL and a brief containing audience, channel, factual constraints, and number of drafts.","Call whoami and get_capabilities, show the organization, and require explicit confirmation before creating records.","Use create_posts_from_source after confirmation, with output constrained to drafts.","Use get_source_status until the source reports a terminal state, then use list_drafts to inspect the resulting drafts.","Check each draft against the source and return unsupported statements for removal. Do not approve, schedule, or publish."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","create_posts_from_source","get_source_status","list_drafts"],"mcpPrompt":"Call whoami and get_capabilities. Show the organization and require confirmation that it equals <organization_name>. Then use create_posts_from_source with {sourceUrl:<url>, audience:<audience>, channel:'X', count:<count>, outputMode:'draft'}. Check get_source_status and list_drafts. Return JSON as {source:string, status:string, drafts:[{id,text,sourceSupported:boolean,unsupportedClaims:[string]}], approved:false, scheduled:false, published:false}. Do not approve, schedule, or publish.","paidNextStep":"Source-based draft creation requires the exact returned capabilities and backend plan eligibility. Keep outputs as X drafts for human source checking; approval, scheduling, and publishing are separate actions.","availability":"guide-only","evidenceUrls":["https://community.n8n.io/t/draft-approve-google-sheets-gpt-draft-slack-approve-reject-human-still-posts/310875","https://tibinjacob.com/blog/human-in-the-loop-gtm-agents"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Research documents demand for AI drafting with human review and source visibility, though it does not measure searches for this exact source-to-draft workflow."},{"id":"mcp-prepare-x-schedule-receipt","query":"How do I prepare an X scheduling receipt before anything is queued?","primaryKeyword":"X schedule receipt","relatedQueries":["review before scheduling","social scheduling checklist"],"category":"AI agents and MCP","audience":"Teams that want a final check before scheduling an X post","task":"Assemble a read-only receipt containing the intended account, final text, media, and time.","freeAsset":"X scheduling receipt","guide":["Call whoami and get_capabilities, then confirm the organization and that X scheduling is available.","Use list_drafts and get_post to read the selected draft without changing it.","If media is referenced, record the existing media identifiers and expected attachment order without uploading new media.","Build a receipt with organization, account, final text, media IDs, timezone, and scheduled timestamp.","Compare the receipt with the original instruction. Stop on an account, audience, channel, text, or date mismatch. Do not call schedule_post."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","list_drafts","get_post","scheduler_status"],"mcpPrompt":"Call whoami, then get_capabilities, and confirm organization <organization_name>. Read draft <draft_id> and scheduler_status for the intended X account <account_id>. Return JSON as {organization:string, account:string, network:'X', draftId:string, finalText:string, mediaIds:[string], scheduledAt:<ISO8601>, timezone:string, mismatches:[string], readyForHumanDecision:boolean}. Do not upload, approve, schedule, publish, or mutate anything.","paidNextStep":"Starter at $12 per month supports up to 30 X posts, and Pro at $49.99 per month includes unlimited scheduling. The actual schedule_post call must remain a separate explicit action after reviewing the receipt.","availability":"available","evidenceUrls":["https://www.reddit.com/r/AI_Agents/comments/1va08fz/best_way_to_schedule_social_media_posts_from/","https://modelcontextprotocol.io/docs/concepts/tools"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. Visible comments on a removed scheduling thread specify receipt fields and mismatch gates, but the original post was unavailable."},{"id":"mcp-check-before-publish-retry","query":"How do I avoid duplicate X posts after a scheduling or publishing error?","primaryKeyword":"avoid duplicate posts","relatedQueries":["publishing retry check","social post status"],"category":"AI agents and MCP","audience":"Operators handling an uncertain X scheduling result","task":"Read scheduler and post state before deciding whether any retry is necessary.","freeAsset":"No-duplicate retry checklist","guide":["Stop automatic retries when a schedule or publish result is uncertain.","Call whoami and get_capabilities, then confirm the intended organization.","Use scheduler_status and list_posts to look for the job, matching text, account, and time window.","If a matching queued or published post exists, record it and do not retry.","If no match exists, return the evidence and require a fresh human decision. Do not call schedule_post or publish_post in the diagnostic workflow."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","scheduler_status","list_posts","get_post"],"mcpPrompt":"Call whoami, then get_capabilities, and confirm organization <organization_name>. Check scheduler_status and list_posts for account <account_id>, text fingerprint <text_or_hash>, and window <start/end>. Return JSON as {matchingJobs:[object], matchingPosts:[object], state:'queued'|'published'|'failed'|'not_found'|'uncertain', retryRecommended:false, humanDecisionRequired:boolean}. Do not retry, schedule, cancel, approve, or publish.","paidNextStep":"Scheduling is available on paid plans, including up to 30 X posts on Starter and unlimited scheduling on Pro. A retry should be a separate human-confirmed action only after the read-back shows no duplicate.","availability":"available","evidenceUrls":["https://www.reddit.com/r/AI_Agents/comments/1va08fz/best_way_to_schedule_social_media_posts_from/"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. A visible discussion comment explicitly recommends reading platform state before retrying to prevent duplicates, but the parent post was removed."},{"id":"analytics-median-engagement-rate","query":"One post went viral. How do I calculate the engagement rate of a typical post?","primaryKeyword":"median engagement rate","relatedQueries":["viral post skew","typical post engagement"],"category":"Analytics and conversion","audience":"Creators preparing a media kit or responding to a sponsor","task":"Calculate per-post and median engagement rates from user-supplied metrics using one consistent denominator basis.","freeAsset":"Median engagement calculator","guide":["Choose one basis for the entire batch: followers, impressions, or reach. The calculator does not retrieve platform data.","Prepare at least five posts. For each post, enter any available likes, comments, shares, and saves, plus its denominator. Use the same basis for every post.","Example follower-based input: 420 likes, 35 comments, denominator 12500, basis followers. With omitted metrics treated as zero, the rate is 3.64 percent.","In the web UI, calculate one post at a time. For up to 100 posts, use the MCP batch tool and review the complete input before approving calculation.","Read perPost rate for each row, medianRate for the typical post, and aggregateRate for total supplied engagements divided by total supplied denominators.","Disclose the selected basis and confirm denominator consistency. Do not present a universal good or bad benchmark."],"toolUrl":"/tools/engagement-rate-calculator/","mcpTools":["calculate_engagement"],"mcpPrompt":"After I approve the complete user-supplied posts array, call calculate_engagement with {\"posts\":{{posts_json}}}. Each row must contain denominator and one shared basis of followers, impressions, or reach, with optional likes, comments, shares, and saves. Return the tool's perPost, medianRate, and aggregateRate results, state the basis and metric definition, and note that no platform data was retrieved. Do not post, publish, or add universal benchmarks.","paidNextStep":"Pro includes connected-account analytics and post metrics that can support recurring X performance reviews.","availability":"available","evidenceUrls":["https://www.reddit.com/r/SideProject/comments/1rgu79r/i_built_a_free_instagram_engagement_rate/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One discussion explicitly describes viral-post skew and using a median, but it is a promotional thread."},{"id":"analytics-sponsor-quote-calculator","query":"What sponsorship quote should I calculate from my followers and my own price per thousand?","primaryKeyword":"sponsorship quote calculator","relatedQueries":["creator rate formula","sponsored post quote"],"category":"Analytics and conversion","audience":"Creators preparing a quote for one sponsored post","task":"Calculate a base quote and an engagement-adjusted quote using only user-supplied pricing assumptions.","freeAsset":"Sponsor quote formula sheet","guide":["Enter followers and your own price per 1,000 followers. Example: 18000 followers and $20 per 1,000.","Calculate the base as followers divided by 1,000 times the supplied price. The example base is $360.","Calculate engagement as (likes + comments + shares) divided by followers times 100.","Define your own editable uplift bands before calculating. Example: 0 to 2 percent adds 0 percent, 2 to 4 adds 10 percent, and above 4 adds 20 percent.","Multiply the base by 1 plus the selected uplift. Output base, engagement rate, matched band, uplift, and adjusted quote.","Check that the result labels all bands as user assumptions and does not present them as market rates."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Calculate a sponsor quote from {{followers}}, {{price_per_thousand}}, {{likes}}, {{comments}}, {{shares}}, and editable bands {{bands_json}}. Return JSON with base_quote, engagement_rate, matched_band, uplift_percent, adjusted_quote, currency, and assumption_notice. Do not invent pricing bands or market benchmarks.","paidNextStep":"If the backend confirms eligibility, an approved X announcement may be scheduled separately. This worksheet does not establish market pricing or recommend a sponsorship rate.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/branddeals/comments/1okw4ax/how_to_charge_for_brand_deals/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A discussion provides the two-step arithmetic, but its dollar multipliers are community advice rather than validated rates."},{"id":"analytics-creator-engagement-comparison","query":"Which of two creators has the stronger engagement rate using the same formula?","primaryKeyword":"compare creator engagement","relatedQueries":["creator rate comparison","influencer engagement compare"],"category":"Analytics and conversion","audience":"Small businesses comparing two creator proposals","task":"Compare two user-supplied creator metric summaries with one transparent engagement formula and denominator basis.","freeAsset":"Creator comparison calculator","guide":["Collect a comparable metric summary for each creator. The calculator does not retrieve or scrape creator data.","For each creator, enter likes, comments, shares, and saves as available, plus a denominator and one shared basis such as followers.","Submit the two rows together through MCP. The web UI supports only one row per calculation, so its separate results must be compared manually.","Review each perPost rate. The higher value indicates the stronger rate only under the supplied metrics, denominator basis, and sampling method.","Use aggregateRate only as the combined engagements divided by combined denominators. It is not an average creator score.","Report both inputs, both rates, the shared basis, and sample limitations. Do not infer pricing or apply a universal benchmark."],"toolUrl":"/tools/engagement-rate-calculator/","mcpTools":["calculate_engagement"],"mcpPrompt":"After I approve the two user-supplied creator rows, call calculate_engagement with {\"posts\":{{creators_json}}}. Both rows must use the same basis and comparable supplied metrics. Return perPost, medianRate, and aggregateRate, then identify the higher perPost rate by input order. State that the tool did not retrieve profile data. Do not scrape, estimate fees, post, or add benchmarks.","paidNextStep":"Pro analytics can be used for connected X account performance analysis, while external creator figures still need to be supplied by the user.","availability":"available","evidenceUrls":["https://www.reddit.com/r/SideProject/comments/1sds2ik/i_made_an_influencer_pricing_analyzer_for"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. The source is a builder's collaboration-pricing problem, not independent evidence of broad buyer demand."},{"id":"analytics-engagement-by-format","query":"Should I calculate engagement separately for still posts and short videos?","primaryKeyword":"engagement by format","relatedQueries":["video engagement rate","post format analytics"],"category":"Analytics and conversion","audience":"Creators publishing both still posts and short videos","task":"Calculate median and aggregate engagement separately for user-labeled format groups using a consistent basis.","freeAsset":"Format engagement calculator","guide":["Label each user-supplied post with a format such as still or short-video. The calculator does not retrieve posts or infer formats.","Choose one denominator basis for all compared groups: followers, impressions, or reach. Enter optional engagement metrics and the applicable denominator for every post.","Create one batch per format and keep labels consistent. Each MCP call can calculate up to 100 posts; the web UI accepts one post at a time.","Run calculate_engagement separately for each format group. Do not combine reel and short-video unless you intentionally normalize those labels first.","Compare medianRate and aggregateRate across groups while reporting each group's row count and shared basis.","Treat small samples cautiously, disclose missing metrics, and do not use a universal format benchmark."],"toolUrl":"/tools/engagement-rate-calculator/","mcpTools":["calculate_engagement"],"mcpPrompt":"After I approve the user-supplied posts grouped by format, call calculate_engagement once per format with each group's posts array. All compared groups must use the same basis and metric definition. Return each format's perPost, medianRate, aggregateRate, and row count. State that formats and metrics were supplied by the user and no platform data was retrieved. Do not post or add benchmarks.","paidNextStep":"Pro analytics can support analysis of connected X post metrics, with format labels supplied or maintained by the user.","availability":"available","evidenceUrls":["https://www.reddit.com/r/SideProject/comments/1rgu79r/i_built_a_free_instagram_engagement_rate/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A discussion and comment explicitly question whether still and short-video posts should be mixed, but evidence comes from one thread."},{"id":"analytics-engagement-rate-definitions","query":"Which engagement rate should I report when I have followers and impressions?","primaryKeyword":"engagement rate formula","relatedQueries":["engagement by followers","engagement by impressions"],"category":"Analytics and conversion","audience":"Creators and sponsors comparing different engagement formulas","task":"Calculate and label follower-based and impression-based rates from user-supplied metrics without selecting a universal benchmark.","freeAsset":"Engagement definition calculator","guide":["Supply the engagement metrics yourself because the calculator does not retrieve platform data. Decide whether likes, comments, shares, and saves are available consistently.","Create one followers batch with each row's follower denominator and basis followers.","Create a separate impressions batch with the same engagement metrics, each row's impression denominator, and basis impressions. Do not mix bases in one call.","Use MCP for batches of up to 100 posts. The web UI calculates only one post at a time.","Compare the returned perPost, medianRate, and aggregateRate values, clearly labeling the numerator metrics and denominator basis for each result.","Do not choose a preferred formula solely because it is larger, and do not describe any percentage as universally good or bad."],"toolUrl":"/tools/engagement-rate-calculator/","mcpTools":["calculate_engagement"],"mcpPrompt":"After I approve both user-supplied arrays, call calculate_engagement separately with {\"posts\":{{followers_posts_json}}} and {\"posts\":{{impressions_posts_json}}}. The first array must use basis followers and the second basis impressions, with the same disclosed engagement metrics where possible. Return and label each call's perPost, medianRate, and aggregateRate. State that no platform data was retrieved. Do not post, select a universal formula, or add benchmarks.","paidNextStep":"Pro analytics and get_post_metrics can support a consistent connected-X reporting workflow when the account exposes the required fields.","availability":"available","evidenceUrls":["https://www.reddit.com/r/SideProject/comments/1rgu79r/i_built_a_free_instagram_engagement_rate/","https://www.reddit.com/r/branddeals/comments/1okw4ax/how_to_charge_for_brand_deals/","https://docs.x.com/x-api/posts/post-lookup-by-post-id"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Discussions use different numerators, while official documentation distinguishes metric groups, showing why the formula must be labeled."},{"id":"analytics-batch-utm-links","query":"How do I create tagged links for the same campaign across several sites?","primaryKeyword":"batch UTM links","relatedQueries":["campaign URL generator","social UTM links"],"category":"Analytics and conversion","audience":"Small businesses and indie launches sharing one offer across channels","task":"Create one campaign URL per user-supplied source while keeping campaign and medium consistent.","freeAsset":"Batch campaign URL builder","guide":["Prepare up to 20 records. For each record, enter an HTTP or HTTPS landing URL, source, medium, and campaign, with optional term and content.","Repeat the approved medium and campaign across records while changing source as needed, such as x, newsletter, or community.","Review exact spelling and capitalization before building. The tool does not automatically require lowercase values.","Run the batch. The builder preserves existing non-conflicting query parameters and URL fragments, performs no network fetch, and refuses URLs containing credentials or using non-HTTP protocols.","Copy the returned tagged URLs and verify that each record contains the intended campaign values.","Destination availability is not checked locally, so test the final links separately before distribution."],"toolUrl":"/tools/campaign-link-builder/","mcpTools":["build_campaign_urls"],"mcpPrompt":"After I approve the complete records array, call build_campaign_urls with {\"records\":{{records_json}}}. Each of up to 20 records must contain url, source, medium, and campaign, with optional term and content. Return the generated URLs and any validation refusal. Preserve user-approved capitalization. Explain that existing query parameters and fragments are preserved, no destination was fetched, and nothing was posted or scheduled.","paidNextStep":"After confirming the organization and draft, Starter can schedule an approved X post containing the X-specific tagged URL.","availability":"available","evidenceUrls":["https://support.google.com/analytics/answer/10917952?hl=en","https://www.reddit.com/r/gamedev/comments/15bqs0o/indie_game_devs_your_practical_steam_utm_guide/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official documentation specifies the parameters and a discussion provides a worked social use case; the batch wrapper is a hypothesis."},{"id":"analytics-utm-naming-linter","query":"Can I check campaign links for inconsistent source names and capitalization?","primaryKeyword":"UTM naming checker","relatedQueries":["UTM consistency","campaign link audit"],"category":"Analytics and conversion","audience":"Founders and freelancers tagging links manually","task":"Lint pasted campaign URLs for missing fields, mixed case, spaces, and user-defined naming inconsistencies.","freeAsset":"UTM lint checklist","guide":["Paste the URLs and define your allowed source and medium values, such as x and organic_social.","Parse every URL and check for utm_source, utm_medium, and utm_campaign.","Flag uppercase characters and unencoded spaces because values are case-sensitive and spaces require encoding.","Compare values against your allowed list and flag near-duplicates, such as two names you use for the same source.","Output each issue with its URL, issue code, current value, and proposed corrected URL.","Review every proposed replacement so the destination path and non-UTM query parameters remain unchanged."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Lint URLs {{urls_json}} against allowed_sources {{allowed_sources_json}} and allowed_mediums {{allowed_mediums_json}}. Return JSON issues with url, code, parameter, current_value, suggested_value, and corrected_url. Preserve destination paths and non-UTM parameters. Do not publish.","paidNextStep":"For an X draft, an authenticated MCP workflow can call whoami, get_capabilities, confirm the organization, create a draft, and leave it unapproved for review.","availability":"guide-only","evidenceUrls":["https://support.google.com/analytics/answer/10917952?hl=en","https://www.reddit.com/r/digital_marketing/comments/1ov6ln6/utm_parameters_explained_for_a_newbie/"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official guidance confirms case sensitivity, and a discussion describes fragmented reporting from inconsistent source names."},{"id":"analytics-required-utm-check","query":"Which campaign parameters are missing from my tagged link?","primaryKeyword":"required UTM parameters","relatedQueries":["missing UTM tags","UTM not set"],"category":"Analytics and conversion","audience":"People creating their first campaign link","task":"Check which documented campaign parameters are present and identify missing core tags.","freeAsset":"Required UTM checker","guide":["Paste the final URL you intend to use, including its query string.","Parse and list utm_source, utm_medium, utm_campaign, utm_id, and utm_source_platform as present or missing.","Treat source, medium, and campaign as the core set for this checklist and explain that partial tagging can contribute to not-set reporting.","Create an example URL with placeholders only for missing core values, such as YOUR_MEDIUM.","Output the present list, missing list, placeholder URL, and a note that parameter order does not matter.","Replace every placeholder and test the final link before publishing."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Inspect URL {{url}} for utm_source, utm_medium, utm_campaign, utm_id, and utm_source_platform. Return JSON with present, missing, missing_core, and placeholder_url. Preserve existing parameters and do not invent campaign values.","paidNextStep":"An authenticated X drafting workflow can validate the link before creating a draft, after whoami, get_capabilities, and organization confirmation.","availability":"guide-only","evidenceUrls":["https://support.google.com/analytics/answer/10917952?hl=en","https://support.google.com/analytics/answer/15593651"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. The failure mode is documented officially, but the research did not include a matching user discussion for this exact checker."},{"id":"analytics-newsletter-utm-links","query":"What tags should I add so newsletter clicks do not look like direct traffic?","primaryKeyword":"newsletter UTM tags","relatedQueries":["email campaign tracking","newsletter link tracking"],"category":"Analytics and conversion","audience":"Creators and small businesses sending newsletters","task":"Generate consistently tagged newsletter links with issue and link-position identifiers.","freeAsset":"Newsletter campaign URL builder","guide":["Choose an approved issue slug, such as october-launch, and prepare up to 20 destination records.","For every record, set source to newsletter, medium to email, campaign to the issue slug, and content to a position such as hero, middle, or footer.","Submit each HTTP or HTTPS destination as its own record. URLs containing credentials or using other protocols are refused.","Run the builder. Existing query parameters and fragments are preserved, and no destination is fetched.","Review the returned URLs and confirm that each position has the intended content value and destination.","Test the links in the rendered newsletter separately because the local builder does not verify that destinations load or send email."],"toolUrl":"/tools/campaign-link-builder/","mcpTools":["build_campaign_urls"],"mcpPrompt":"After I approve the newsletter records, call build_campaign_urls with {\"records\":{{records_json}}}. Each record must use source newsletter, medium email, the approved issue slug as campaign, and its approved position as content. Return the generated URLs and validation refusals. State that query parameters and fragments were preserved, destinations were not fetched, and no email was sent or published.","paidNextStep":"If the newsletter is also promoted on X, Starter can schedule a separately tagged and approved X post.","availability":"available","evidenceUrls":["https://www.reddit.com/r/independentanalytics/comments/1seuwub/why_you_should_always_use_utm_parameters_when/","https://support.google.com/analytics/answer/10917952?hl=en"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. A discussion describes missing newsletter referrer data, and official documentation provides the campaign-tag structure."},{"id":"analytics-post-content-utm","query":"Should separate social posts share one campaign and use content tags for each post?","primaryKeyword":"utm content per post","relatedQueries":["social post UTM","campaign naming structure"],"category":"Analytics and conversion","audience":"Operators whose acquisition report has become one campaign row per post","task":"Keep one promotion campaign while differentiating individual posts with content parameters.","freeAsset":"Post content campaign URL builder","guide":["Enter up to 20 HTTP or HTTPS destination records with the same approved source, medium, and campaign.","Assign each planned post a unique content value, such as launch-hook-a or launch-hook-b.","Review the records for duplicate content values before calculation. The builder creates URLs but does not decide whether identifiers are semantically unique.","Run the builder. It preserves existing query parameters and fragments, refuses credential-bearing or non-HTTP URLs, and performs no fetch.","Output a mapping of your post IDs to the returned URLs. Keep the post ID separately if it differs from the content value.","Review every URL before use. The tool does not publish, schedule, or verify the destination."],"toolUrl":"/tools/campaign-link-builder/","mcpTools":["build_campaign_urls"],"mcpPrompt":"After I approve the complete post records, call build_campaign_urls with {\"records\":{{records_json}}}. Each record must contain the approved url, source, medium, shared campaign, and unique content value. Return the generated URLs in input order and separately report any duplicate content values found in the approved input. State that no destination was fetched and nothing was posted or scheduled.","paidNextStep":"After whoami, get_capabilities, and organization confirmation, create_drafts can save X copy with planned tagged URLs as drafts only.","availability":"available","evidenceUrls":["https://www.reddit.com/r/digital_marketing/comments/1ov6ln6/utm_parameters_explained_for_a_newbie/","https://support.google.com/analytics/answer/10917952?hl=en","https://support.google.com/analytics/answer/6383005"],"evidenceType":"official-documentation","demandConfidence":"medium","demandNote":"No measured keyword volume. Official pages define utm_content for creative variants, and a discussion warns that one campaign per post creates messy reporting."},{"id":"analytics-utm-redirect-diff","query":"Which campaign parameters disappeared after my link redirected?","primaryKeyword":"UTM redirect checker","relatedQueries":["lost UTM parameters","campaign URL redirect"],"category":"Analytics and conversion","audience":"People checking links opened through shorteners or in-app browsers","task":"Compare a planned URL with the final address copied after a real click.","freeAsset":"UTM redirect diff sheet","guide":["Copy the exact planned URL from the post or message before clicking it.","Open the link in the target environment, wait for redirects to finish, and copy the final address-bar URL.","Parse UTM parameters from both URLs and classify each as kept, lost, added, or changed.","Example: planned utm_source=x and landed with no utm_source should be reported as lost, not blank success.","Output kept names, lost names, changed values, and a corrected planned URL for another test.","Repeat the click after correction because this comparison cannot guarantee that a platform or redirector will preserve tags."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Compare planned URL {{planned_url}} with landed URL {{landed_url}}. Return JSON with kept, lost, added, changed entries containing name, planned_value, and landed_value, plus corrected_planned_url. Do not claim that any platform preserves parameters.","paidNextStep":"For connected X content, get_post can retrieve the saved post record for review, while redirect testing still requires the user's final clicked URL.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/smallbusiness/comments/1p5afly/how_are_you_handling_your_igtiktok_bio_traffic/","https://docs.x.com/x-api/posts/post-lookup-by-post-id"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One practitioner discussion reports untagged social traffic appearing direct, while official X documentation describes expanded and unwound URL data."},{"id":"analytics-two-link-content-test","query":"How do I distinguish two links in the same message when both go to one page?","primaryKeyword":"utm content test","relatedQueries":["track two links","same URL link tracking"],"category":"Analytics and conversion","audience":"Newsletter writers and social publishers using repeated destinations","task":"Create two URLs that share a destination and campaign values but use different content identifiers.","freeAsset":"Two-link campaign URL builder","guide":["Enter the same HTTP or HTTPS destination twice with the same source, medium, and campaign.","Choose two distinct content labels that identify placement or creative, such as top-button and footer-text.","Review the exact labels before calculation. If your naming rules normalize case or punctuation, confirm they remain distinct after that manual normalization.","Submit the two records. The builder preserves other query parameters and fragments, refuses credential-bearing or non-HTTP URLs, and performs no fetch.","Compare the returned URLs and confirm that the intended difference is the content value.","Place each reviewed URL in the correct message location and test the rendered message separately. The tool does not publish or verify destinations."],"toolUrl":"/tools/campaign-link-builder/","mcpTools":["build_campaign_urls"],"mcpPrompt":"After I approve the two records and confirm their content labels are distinct under my naming rules, call build_campaign_urls with {\"records\":{{records_json}}}. Both records must share the approved url, source, medium, and campaign while using different content values. Return both generated URLs and any validation refusal. State that no destination was fetched and nothing was posted.","paidNextStep":"If the backend confirms eligibility, an approved X post may be scheduled with the reviewed tagged links. Confirm that the final X composition is appropriate before scheduling.","availability":"available","evidenceUrls":["https://support.google.com/analytics/answer/10917952?hl=en","https://developers.google.com/analytics/devguides/collection/ga4/reference/config"],"evidenceType":"official-documentation","demandConfidence":"low","demandNote":"No measured keyword volume. Official documentation explicitly defines campaign content for links sharing a destination, but no user discussion in the research asked this exact question."},{"id":"analytics-profile-link-priority","query":"How should I order a crowded profile link page around one main goal?","primaryKeyword":"profile link order","relatedQueries":["link page priority","profile call to action"],"category":"Analytics and conversion","audience":"Creators and local businesses with crowded profile link lists","task":"Choose one primary destination and organize remaining links as secondary or overflow.","freeAsset":"Profile link priority sheet","guide":["State one current goal using a verb, such as buy, book, join, or read.","List every link with its label, URL, and how directly it supports that goal.","Select the single link with the shortest path to the stated goal as primary.","Choose no more than three secondary links and move all remaining links into overflow.","Write one profile sentence naming the primary action, for example Book a 20-minute consultation.","Output primary, secondary, overflow, and the profile sentence, then check that similarly important styling is not assigned to every link."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Given goal {{goal}} and links {{links_json}}, organize them into one primary, up to three secondary, and overflow. Return JSON with primary, secondary, overflow, rationale_per_link, and a profile_sentence under 160 characters. Do not claim to host or edit a profile page.","paidNextStep":"If the backend confirms eligibility, an approved X post may point to the selected primary URL. TimeToPost does not host or edit the external profile page.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SaaS/comments/1r5g8fz/i_analyzed_5_creators_linkinbio_pages_almost_none","https://www.reddit.com/r/smallbusiness/comments/1p5afly/how_are_you_handling_your_igtiktok_bio_traffic/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Two discussions describe equal-weight link lists and unclear primary actions, although one review covers only five pages."},{"id":"analytics-profile-pin-test","query":"How can I compare a product pin with an email signup pin fairly?","primaryKeyword":"profile pin test","relatedQueries":["bio link test","shop vs signup"],"category":"Analytics and conversion","audience":"Sellers rotating the top destination on an existing profile page","task":"Compare two periods using the same profile-click, pin-click, order, and signup fields.","freeAsset":"Profile pin experiment sheet","guide":["Choose two non-overlapping periods and record their start date, end date, and pin type.","For each period, enter profile clicks, pin clicks, orders, and signups from your own records.","Calculate pin click share as pin clicks divided by profile clicks.","Calculate orders per profile click and signups per profile click separately.","Set a minimum profile-click threshold before reviewing results. If either period is below it, label the comparison insufficient.","Output both period rows and metric differences without declaring that product or signup pins win generally."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Compare periods {{periods_json}} using minimum profile clicks {{min_clicks}}. Return JSON rows with pin_click_share, orders_per_profile_click, signups_per_profile_click, sufficient_sample, and differences. Do not generalize beyond the supplied periods.","paidNextStep":"Tagged X posts can be scheduled on Starter to support a controlled traffic period, but TimeToPost does not rotate external profile links.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/InstagramMarketing/comments/1onbhgx/real_question_for_creators_with_link_in_bio"],"evidenceType":"observed-discussion","demandConfidence":"low","demandNote":"No measured keyword volume. One self-reported experiment asks this question, but it does not establish a general winner or broad demand."},{"id":"analytics-cta-path-comparison","query":"How do I compare a profile-link call to action with a comment-keyword call to action?","primaryKeyword":"CTA conversion comparison","relatedQueries":["link in bio conversion","comment keyword results"],"category":"Analytics and conversion","audience":"Creators testing two response paths with their own posts","task":"Calculate profile-click and keyword-comment response rates from user-supplied counts.","freeAsset":"CTA path comparison sheet","guide":["List each tested post with impressions, profile clicks, keyword comments, messages sent, landing arrivals, and optional sales.","Calculate profile clicks per 100 impressions and keyword comments per 100 impressions.","Calculate landing arrivals per 100 impressions as a separate downstream measure.","Only calculate sales rates when sales were entered; otherwise leave them blank.","Output aggregate rates, per-post rates, and the number of posts in each path.","Check that results use your own counts and do not reuse conversion percentages reported by other accounts."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Analyze CTA test rows {{posts_json}}. Return JSON with profile_clicks_per_100, keyword_comments_per_100, landing_arrivals_per_100, optional sales_per_100, per_post rows, and post_count. Leave unavailable rates null and add no external benchmarks.","paidNextStep":"TimeToPost has create_dm_funnel and related authenticated workflow tools; any mutation must begin with whoami, get_capabilities, organization confirmation, and creation as a draft only without activation or sending.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SocialMediaMarketing/comments/1r8j3fr/link_in_bio_vs_dm_for_link_i_tested_the/","https://www.reddit.com/r/InstagramMarketing/comments/1s49bie/why_the_link_in_bio_cta_is_killing_your"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Two discussions describe comparing profile-link and comment-keyword paths, but their claimed conversion rates were not verified."},{"id":"analytics-profile-spike-swap","query":"What should I change my profile link to while one post is getting attention?","primaryKeyword":"profile link spike","relatedQueries":["temporary bio link","viral post conversion"],"category":"Analytics and conversion","audience":"Sellers with one outbound profile URL and a currently active post","task":"Prepare a temporary tagged destination, short profile text, and manual revert date.","freeAsset":"Spike link swap checklist","guide":["Enter the usual URL, spike-specific URL, traffic source, post ID, and number of days for the temporary change.","Keep utm_campaign tied to the offer and set utm_content to the post ID followed by -spike.","Generate the tagged spike URL without altering required non-UTM query parameters.","Write profile text under 160 characters that names the immediate destination and action.","Calculate the revert date from the start date and selected duration.","Output the tagged URL, profile text, revert date, and manual restore checklist; do not claim the profile can be edited automatically."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Prepare a temporary profile-link plan using usual_url {{usual_url}}, spike_url {{spike_url}}, source {{source}}, campaign {{campaign}}, post_id {{post_id}}, start_date {{start_date}}, and days {{days}}. Return JSON with tagged_url, profile_text under 160 characters, revert_on, and restore_steps. Do not edit any profile.","paidNextStep":"Starter can schedule an approved X follow-up using the spike-specific tagged URL; editing profiles on other networks is not an available publishing capability.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/smallbusiness/comments/1p5afly/how_are_you_handling_your_igtiktok_bio_traffic/"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One detailed discussion recommends temporarily changing the destination while a post is active; tagging and revert fields are a practical hypothesis."},{"id":"analytics-article-derivative-pack","query":"Can you turn my article into an X thread, caption, pull quote, and email teaser?","primaryKeyword":"article repurposing","relatedQueries":["blog to X thread","content derivative pack"],"category":"Analytics and conversion","audience":"Founders and creators repurposing an existing long-form article","task":"Create distinct derivative drafts and count characters for every X post.","freeAsset":"Article derivative prompt","guide":["Paste the article text or provide a source URL, then specify the desired X thread length.","Extract the central claim, three supporting points, one quotable sentence, and one email takeaway before drafting locally.","Write the X thread so each post advances the argument, then draft a separate caption, pull quote, and email teaser.","Use the basic character counter only as a Unicode code-point count. It is not X-weighted, URLs are not fixed at 23 characters, and emoji grapheme clusters may count differently.","Paste every X post into the official X composer for final validation. Keep longer text clearly labeled rather than silently cutting it, and remove claims unsupported by the source."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Using source text or URL {{source}}, draft locally an X thread of {{x_post_count}} posts plus a caption, pull_quote, and email_teaser. Return JSON with x items containing text and basic_codepoint_count, plus caption, pull_quote, email_teaser, source_claim_checks, and validation_notice. The validation_notice must say the count is not X-weighted, URL weighting is not implemented, emoji graphemes can differ from code points, and every post must be checked in the official X composer. Do not create records, approve, schedule, publish, or send.","paidNextStep":"After human review, eligible X drafts may be created or scheduled only through capabilities returned by get_capabilities and a successful backend plan check. TimeToPost does not import arbitrary pasted article text through AutoSEO; AutoSEO generates configured-topic articles from site configuration.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/n8n/comments/1rx58p0/i_built_a_workflow_that_turns_any_blog_post_into/","https://www.reddit.com/r/SaaS/comments/1s8jzsf/how_we_automated_content_repurposing_1_blog_post/","https://www.reddit.com/r/indiehackers/comments/1n4x3xj/how_are_you_all_turning_longform_blogs_into_short/","https://docs.x.com/x-api/posts/post-lookup-by-post-id"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. Several independent discussions describe the same article-to-thread workflow, though many are product-promotion posts; official X documentation confirms long-form note text exists."},{"id":"analytics-derivative-format-tags","query":"How do I give each article derivative its own tagged link?","primaryKeyword":"content format UTM","relatedQueries":["repurposed content tracking","format campaign links"],"category":"Analytics and conversion","audience":"People distributing one article through social and email derivatives","task":"Generate a shared campaign link set with a distinct format identifier for each derivative.","freeAsset":"Derivative campaign URL matrix","guide":["Prepare up to 20 derivative records using the canonical HTTP or HTTPS article URL and one approved campaign value.","For each derivative, enter its source and medium, then use a unique format label such as x-thread or newsletter-hero as content.","Review source and medium carefully so email and social derivatives do not share the wrong channel values.","Run the builder. It preserves existing query parameters and fragments, refuses URLs with credentials or non-HTTP protocols, and performs no network fetch.","Map each derivative label to the returned URL and confirm campaign consistency across the set.","Test destinations separately before distribution. The tool creates links only and does not publish derivatives."],"toolUrl":"/tools/campaign-link-builder/","mcpTools":["build_campaign_urls"],"mcpPrompt":"After I approve the complete derivative records, call build_campaign_urls with {\"records\":{{records_json}}}. Each record must contain the canonical url, its approved source and medium, the shared campaign, and its derivative label as content. Return generated URLs in input order and any validation refusals. State that query parameters and fragments were preserved, no destination was fetched, and nothing was published.","paidNextStep":"An approved X derivative can be drafted and scheduled with its own tagged URL; other format links remain copy-ready exports.","availability":"available","evidenceUrls":["https://www.reddit.com/r/GrowthHacking/comments/1snv55g/our_content_repurposing_system_one_piece_becomes/","https://support.google.com/analytics/answer/10917952?hl=en"],"evidenceType":"hypothesis","demandConfidence":"low","demandNote":"No measured keyword volume. Repurposing and UTM differentiation are independently supported, but the combined workflow was not directly requested in the research."},{"id":"analytics-repurpose-performance-rank","query":"Which past posts are worth rewriting, and which spike was a one-off?","primaryKeyword":"post performance ranking","relatedQueries":["content repurposing analytics","post outlier analysis"],"category":"Analytics and conversion","audience":"Creators choosing which past posts to repurpose","task":"Rank user-supplied posts by link-click rate and separately flag engagement outliers.","freeAsset":"Repurpose ranking worksheet","guide":["Prepare rows with post ID, impressions, likes, replies, reposts, and link clicks.","Set a minimum impression threshold before ranking, such as 500 impressions.","Calculate click rate as link clicks divided by impressions and engagement rate as likes plus replies plus reposts divided by impressions.","Calculate the median engagement rate across eligible rows and flag posts above twice that median as outliers.","Rank eligible posts by click rate, but label rows with no recorded click data as unranked rather than zero-performing.","Output ranked rows, outlier flags, threshold, formulas, and excluded IDs, then review outliers separately from repeatable click performers."],"toolUrl":null,"mcpTools":["whoami","get_capabilities","get_post_metrics","get_engagement_summary"],"mcpPrompt":"First call whoami, then get_capabilities, and confirm the organization before reading connected X data. For post IDs {{post_ids}} and minimum impressions {{min_impressions}}, use only fields actually returned by get_post_metrics and get_engagement_summary. Return JSON with available_fields, ranked rows containing post_id, click_rate if available, engagement_rate, outlier, excluded_reason, plus formulas and median_engagement. Do not invent missing click metrics and do not create, schedule, approve, or publish anything.","paidNextStep":"Connected X performance review is conditional on account connection, scopes, returned metrics, get_capabilities, and backend plan eligibility. Any rewrite should be created later as a separate reviewed draft.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/SideProject/comments/1rgu79r/i_built_a_free_instagram_engagement_rate/","https://www.reddit.com/r/smallbusiness/comments/1p5afly/how_are_you_handling_your_igtiktok_bio_traffic/","https://docs.x.com/x-api/posts/post-lookup-by-post-id"],"evidenceType":"hypothesis","demandConfidence":"low","demandNote":"No measured keyword volume. Outlier skew and click attribution concerns are supported separately, but a combined rank-and-rewrite request was not directly observed."},{"id":"analytics-ad-cost-rates","query":"What are my CPM, CPC, CPA, and CTR from spend, impressions, clicks, and conversions?","primaryKeyword":"CPM CPC CPA calculator","relatedQueries":["ad cost calculator","campaign rate formulas"],"category":"Analytics and conversion","audience":"Small businesses calculating basic promotion economics","task":"Calculate four standard rates from user-supplied campaign totals.","freeAsset":"Campaign cost formula card","guide":["Enter spend, currency, impressions, clicks, and conversions. Example: $500, 100000 impressions, 2000 clicks, and 50 conversions.","Calculate CPM as spend divided by impressions times 1,000. The example CPM is $5.","Calculate CPC as spend divided by clicks and CPA as spend divided by conversions. The example values are $0.25 and $10.","Calculate CTR as clicks divided by impressions times 100. The example CTR is 2 percent.","Return null with a denominator-zero explanation whenever impressions, clicks, or conversions are zero.","Output the four values and formulas without adding industry benchmarks or performance labels."],"toolUrl":null,"mcpTools":[],"mcpPrompt":"Using spend {{spend}}, currency {{currency}}, impressions {{impressions}}, clicks {{clicks}}, and conversions {{conversions}}, return JSON with cpm, cpc, cpa, ctr_percent, formulas, and null_reasons. Use null for zero denominators. Do not add benchmarks.","paidNextStep":"Connected X performance may be reviewed alongside these manually calculated rates only when the account, scopes, returned metrics, capabilities, and backend plan eligibility support it.","availability":"guide-only","evidenceUrls":["https://www.reddit.com/r/programmatic/comments/1pi3q4n/i_built_a_free_privacyfocused_calculator_for_ad"],"evidenceType":"observed-discussion","demandConfidence":"medium","demandNote":"No measured keyword volume. One builder describes repeatedly using spreadsheets for CPM, CPC, and CPA arithmetic; it supports the task but not benchmark demand."}]}