{"name":"io.github.adsandcode/contentgate","slug":"adsandcode-contentgate","title":null,"description":"Pre-deploy checks for content sites: keywords, translations, links, claims, page SEO/GEO audit.","url":"https://mcp.market/server/adsandcode-contentgate","rating":null,"grade":"A","score":89,"certified":false,"status":"active","category":"seo","tags":["seo","devtools","maps"],"presence":{"score":29,"stars":0,"forks":0,"downloads_week":173,"last_push_at":"2026-10-23T05:17:49.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/adsandcode/contentgate","website":"https://adsandcode.com/en/open-source/contentgate/","version":"0.2.0","remotes":[],"packages":[{"registryType":"npm","identifier":"mcp-server-contentgate","version":"0.2.0","transport":{"type":"stdio"}}],"tools":[{"name":"audit_page","description":"Page-level SEO/GEO audit of one rendered HTML page, before it ships. Checks:","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_claims","description":"Scan copy for affirmative performance claims of the kind that get finance, health and other regulated advertising rejected: guaranteed profit, stated win rates, promised returns. A disclaimer is not flagged when its negation governs the claim itself, shortly before it in the same clause (不保證獲利, 'we do not guarantee profit', 'no guaranteed returns'), or when the phrase is named as forbidden ('guara","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_internal_links","description":"Check that a content page links to at least one commercial page of its own site from its body, and optionally that it states a concrete figure. Links inside excluded boilerplate do not count, because a site-wide call-to-action block would otherwise satisfy this on every page and the check would guard nothing. Relative links count; an absolute link counts only when its host is in site_hosts (or a s","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_keywords","description":"Verify that target keywords actually appear in a rendered page. Every term tied at the highest search volume must appear at least `primary_min_hits` times; every other term at least once. Matching is literal and case-insensitive: whitespace is never normalised, because 'web hosting' and 'webhosting' are different terms with different search volumes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_translation","description":"Compare a translation against its source document for structural drift: heading sequence, HTML tag sequence, table row count, internal link paths, price tokens, locale prefix on internal links, leftover source-script characters, introduced em dashes and emoji. This checks structure, not meaning: it cannot tell you a translation is good, only that it is no longer the same document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"compare_pages","description":"Measure how many sentences two pages share word for word, using the text a crawler sees with JavaScript off (navigation and footers excluded). Sentences split on 。！？ and on . ! ? followed by whitespace; sentences under ten characters are ignored. The share is measured in characters, in both directions, and the larger figure decides, because a short page copied into a long one is a small share of t","write_action":false,"price_micros":0,"input_schema":null},{"name":"content_hash","description":"Hash the meaningful content of a page, with volatile blocks and scripts removed. Use it to tell a real edit from a rebuild.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sitemap_lastmod","description":"Decide a sitemap lastmod date honestly. Hash the meaningful content of a page, compare it against the stored hash, and move the date only when the content genuinely changed. Stamping today's date on every URL every build teaches crawlers that the field carries no information.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":89,"grade":"A","scanned_at":"2026-10-25T05:01:07.323Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-25T05:01:07.280Z","components":{"code":{"score":25,"max":25,"notes":["19 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"mcp-server-contentgate","version":"0.2.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-22T20:40:09.320Z","repositoryUrl":"git+https://github.com/adsandcode/contentgate.git","weeklyDownloads":173}],"repo":{"found":true,"owner":"adsandcode","repo":"contentgate","archived":false,"pushedAt":"2026-10-23T05:17:49Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/330147358?v=4","ownerCreatedAt":"2026-09-16T19:36:30Z","license":"MIT"},"icon":{"url":"https://adsandcode.com/assets/img/favicon.svg","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":173,"license":"MIT","lastPushAt":"2026-10-23T05:17:49.000Z","score":29}}}},"grade_history":[],"reviews":[]}