SEO, 키워드 밀도, 번역 무결성, 링크 유효성 및 규제 준수 사항 검토를 포함한 배포 전 콘텐츠 감사를 수행합니다.
다른 이름 adsandcode/contentgate, mcp-server-contentgate
- 스타
- 0
- Tools
- 8
- 다운로드, 30일
- —
- 최신 버전
- 0.2.0
- 마지막 커밋
- 2026년 10월 23일
- 라이선스
- MIT
contentgate MCP란?
contentgate은(는) MCP server입니다. SEO, 키워드 밀도, 번역 무결성, 링크 유효성 및 규제 준수 사항 검토를 포함한 배포 전 콘텐츠 감사를 수행합니다. 8개 도구를 제공합니다. 예: check_keywords, check_translation, check_internal_links.
프로젝트 README에서 생성된 요약
contentgate MCP server 정보
Contentgate는 개발자와 에디터가 배포 전에 SEO, 번역 무결성 및 규제 준수 여부를 웹 콘텐츠를 감사할 수 있도록 지원합니다. 이 MCP server는 페이지가 라이브로 전환된 후가 아니라 작성 단계에서 오류를 잡아낼 수 있는 전문 도구 모음을 제공합니다. 콘텐츠를 입력하면 검사 결과가 출력되는 순수 유틸리티 방식으로 작동하며, 실행 중 파일 시스템이나 네트워크 접근이 필요하지 않습니다. 사용자는 npx를 통해 서버를 실행하여 로컬 개발 워크플로우나 AI 클라이언트 설정에 이러한 검사 기능을 통합할 수 있습니다.
서버에는 JSON-LD 구조화된 데이터, 이미지 alt 속성 및 favicon 존재 여부를 확인하는 audit_page와 같은 특정 도구가 포함되어 있습니다. 개발자는 check_keywords를 사용하여 타겟 용어 포함 여부를 확인하고, check_translation으로 원문과 번역문 사이의 구조적 일치성을 유지하며, check_claims를 통해 규정을 위반할 수 있는 광고 문구를 식별할 수 있습니다. 또한 두 문서 간의 문장 중복도를 측정하는 compare_pages와 페이지의 실제 변경 여부를 확인하는 sitemap_lastmod 기능도 제공합니다. 이러한 도구들은 콘텐츠가 JavaScript 없이도 읽기 가능하며 특정 편집 표준을 준수하도록 돕습니다.
활용 사례
- 1SEO 및 구조화된 데이터 검증페이지가 JavaScript 없이 읽기 가능한지, 검색 엔진을 위한 올바른 JSON-LD 마크업을 포함하고 있는지 확인합니다.
- 2규제 광고 문구 검증카피 문구가 규제 대상 광고에서 거부될 수 있는 방식으로 결과를 사실처럼 기술하고 있는지 식별합니다.
- 3번역 무결성 보장번역된 문서가 원본 문서와 구조적으로 동일하게 유지되는지 확인합니다.
- 4내부 링크 수익성 감사페이지가 단순한 상용구 콘텐츠가 아닌 사이트의 수익 창출 영역으로 링크를 연결하는지 확인합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
contentgate MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 contentgate MCP 설치
$ claude mcp add contentgate -- npx -y mcp-server-contentgateCursor에 contentgate MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"contentgate": {
"command": "npx",
"args": [
"-y",
"mcp-server-contentgate"
]
}
}
}VS Code에 contentgate MCP 설치
.vscode/mcp.json
{
"servers": {
"contentgate": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-server-contentgate"
]
}
}
}VS Code CLI에 contentgate MCP 설치
$ code --add-mcp '{"name":"contentgate","type":"stdio","command":"npx","args":["-y","mcp-server-contentgate"]}'Claude Desktop에 contentgate MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"contentgate": {
"command": "npx",
"args": [
"-y",
"mcp-server-contentgate"
]
}
}
}Codex에 contentgate MCP 설치
$ codex mcp add contentgate -- npx -y mcp-server-contentgateCodex config.toml에 contentgate MCP 설치
~/.codex/config.toml
[mcp_servers.contentgate] command = "npx" args = ["-y", "mcp-server-contentgate"]
Gemini CLI에 contentgate MCP 설치
$ gemini mcp add -s user contentgate npx -- -y mcp-server-contentgateGemini settings.json에 contentgate MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"contentgate": {
"command": "npx",
"args": [
"-y",
"mcp-server-contentgate"
]
}
}
}contentgate MCP 도구 8
README에서 감지됨check_keywordscheck_translationcheck_internal_linkscheck_claimssitemap_lastmodcontent_hashaudit_pagecompare_pages
| check_keywords | — | |
| check_translation | — | |
| check_internal_links | — | |
| check_claims | — | |
| sitemap_lastmod | — | |
| content_hash | — | |
| audit_page | — | |
| compare_pages | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능adsandcode/contentgate is public and reachablegithub.com/adsandcode/contentgate ↗통과
- 패키지가 이 저장소를 소스로 명시mcp-server-contentgate names adsandcode/contentgate as sourcenpmjs.com/package/mcp-server-contentgate ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-23github.com/adsandcode/contentgate ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from mcp-server-contentgate통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음99 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음8 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기mcp-server-contentgate
MCP server for pre-deploy content checks. Catch the problem while the page is being written, not after it is live.
Documentation and background: adsandcode.com/en/open-source/contentgate
{
"mcpServers": {
"contentgate": { "command": "npx", "args": ["-y", "mcp-server-contentgate"] }
}
}
Tools
| Tool | What it answers |
|---|---|
check_keywords |
Do the terms this page is meant to rank for actually appear in it? |
check_translation |
Is this translation still structurally the same document as its source? |
check_internal_links |
Does this page link to anything on its own site that makes money, outside the boilerplate? Absolute links count only for hosts in site_hosts. |
check_claims |
Does this copy state outcomes as facts in a way regulated advertising rejects? A disclaimer counts only when its negation governs the claim itself. |
sitemap_lastmod |
Has this page genuinely changed, or is the build about to lie about it? |
content_hash |
Stable hash of a page with volatile blocks removed. |
audit_page |
Is this page readable without JavaScript, marked up with JSON-LD that parses, honest about its outbound links, and complete in its images and favicon? |
compare_pages |
How many sentences do these two pages share word for word? |
Every tool is pure: content in, verdict out. No filesystem access, no network access, nothing written.
The guards are also importable as plain functions, and importing starts
nothing: import { checkClaims, auditPage } from "mcp-server-contentgate".
Page audit
audit_page runs six checks on one rendered page and returns a verdict for
each; pass checks to run fewer.
visible_text: characters readable with JavaScript off, leaving out<template>and elements with thehiddenattribute. Google renders JavaScript; many AI crawlers read only the HTML the server sent, so an article injected by a script is invisible to them. 1200 is a house default, not a search-engine number.structured_data: every JSON-LD block parses, the@typevalues you require are present (defaultArticle,BreadcrumbList,Organization), and there is adateModified. A required type is satisfied by its schema.org subtypes (BlogPostingandNewsArticleare Articles;Corporation,NewsMediaOrganizationor aLocalBusinessis an Organization). AProfilePageis not required to be anArticle.outbound_links: external links withoutrelnofollow,sponsoredorugc. Google does not require anyrelon ordinary editorial links (onlysponsoredon paid or affiliate links andugcon user-generated ones), so do not addnofollowto a citation to make this pass: list the sites you cite incite_ok. Hosts are resolved the way a browser resolves them, so backslashes and extra slashes do not disguise where a link goes; registries anyone can register under (co.uk,github.io,pages.dev) are refused incite_ok.images:<img>withoutaltorwidth.alt=""is accepted.favicon: home page only; an icon<link>in the head, in a format Google Search lists (BMP, GIF, ICO, PNG, JPEG, PPM, TIFF), read from the URL path or, for adata:URI, its MIME type.stock_phrases: an editorial style list, not a detector of machine-written text. The default list is one editor's Traditional Chinese taste and is meant to be replaced: connectives such as 因此, and 然而, flag ordinary sentences. Pass your own, and always for any other language.
compare_pages splits both pages into sentences (on 。!? and on . ! ? before
whitespace), ignores sentences under ten characters, and measures the shared
share in characters in both directions.
Sources for each rule are in the repository README.
The one design rule
A guard that has never been shown to fail is decoration.
The server runs its negative tests at startup and refuses to start if they fail. A checker that cannot prove it still catches a known-bad input should not be answering questions about your content.
The same test file is run by the Python implementation in the same repository, and both are required to produce identical verdicts on every case.
Three behaviours worth knowing before you call it
Keyword matching never normalises whitespace. web hosting and
webhosting are different strings with different search volumes. If you pass
one, the other does not satisfy it.
Pass exclude_classes. A call-to-action block that appears on every page
will otherwise satisfy check_keywords and check_internal_links everywhere,
and both tools become decoration.
Set forbid_source_script: false when the target language shares the source
script, such as Simplified Chinese from a Traditional Chinese source. Otherwise
every document in that locale is reported as untranslated.
Python CLI
The same checks run as a deploy gate, reading your site from disk, in the
contentgate package in the same repository.
Licence
MIT.
Maintainer
Built and maintained by Ads & Code.
contentgate MCP 질문
contentgate MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add contentgate -- npx -y mcp-server-contentgate를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
contentgate MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
contentgate MCP는 어떤 도구를 제공하나요?
8개 도구를 제공합니다. 예: check_keywords, check_translation, check_internal_links, check_claims, sitemap_lastmod.
audit_page 도구는 어떤 종류의 검사를 수행하나요?
가시적 텍스트 가독성, JSON-LD 구조화된 데이터 파싱, 외부 링크 속성, 이미지 alt/width 태그, favicon 존재 여부, 상투적 문구 탐지 등 총 6가지 검사를 수행합니다.
서버에 네트워크나 파일 시스템 접근 권한이 필요한가요?
아니요, 모든 도구는 순수 함수로 동작하며 제공된 콘텐츠에 대해서만 작동합니다. 실행 중 파일 시스템이나 네트워크 접근이 필요하지 않습니다.
키워드 매칭 시 공백은 어떻게 처리되나요?
키워드 매칭은 공백을 정규화하지 않습니다. 즉, 'web hosting'과 'webhosting'은 서로 다른 문자열로 처리됩니다.
서버가 검사 기능을 제대로 수행하는지 어떻게 보장하나요?
서버는 시작 시 네거티브 테스트를 실행하며, 이 테스트가 실패할 경우 시작을 거부합니다. 이를 통해 알려진 오류 입력을 확실히 잡아낼 수 있도록 보장합니다.