一键导入
seo-spam-detection
Detect black-hat SEO techniques and spam indicators. Scans for keyword stuffing, hidden text, cloaking, spammy links, and other violations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Detect black-hat SEO techniques and spam indicators. Scans for keyword stuffing, hidden text, cloaking, spammy links, and other violations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Convert SCB scoring output into a prioritized remediation and re-evaluation plan with veto-first sequencing, pillar-weight impact sizing, and explicit recheck checkpoints.
Classify page/content type for SCB, resolve profile-specific weights and extension items, and output a normalized scoring manifest for downstream SCB skills and reports.
Setup automated monitoring for ongoing AdSense compliance. Configure rules, alert thresholds, and monitoring workflows to detect and prevent violations post-approval.
Entry point for all users. Comprehensive site diagnostic that identifies all compliance gaps across Content, Technical, UX, Policy, and Trust pillars. Generates prioritized action plan.
Verify all affiliate link disclosures for FTC, ASA, and international compliance. Finds undisclosed affiliate links and ensures proper format.
Run ARB-style audits across multiple sites, normalize results, rank client opportunities, and produce white-label delivery outputs for agencies and consultants.
| name | seo-spam-detection |
| description | Detect black-hat SEO techniques and spam indicators. Scans for keyword stuffing, hidden text, cloaking, spammy links, and other violations. |
Comprehensive detection of black-hat SEO techniques and spam indicators. Protects against policy violations and search penalties.
Audit for SEO spam:
Input: Website URL or source files Output: Spam detection report + risk assessment Time: 20-40 minutes
This skill is the main Search Integrity contributor and should align to the benchmark scope explicitly:
Core 79: required coverage is SI01-SI12Core 79 + Profile: required coverage is SI01-SI12 plus any SI extension items selected by profile or trigger rulesFull 105: cover SI01-SI16Structured results should declare:
score_modecovered_itemsselected_profile_items limited to SI itemstriggered_extension_items limited to SI itemsmanual_review_required when evidence is directional but not conclusiveIf this skill finds issues in SI13-SI16 while running Core 79, mark them as extension_findings so the aggregator can decide whether to widen scope.
Loading page with keywords unnaturally to improve rankings.
Examples:
Good Density (~1-2% of words):
Bad Density (>5%):
Manual Check:
Automated Check:
function checkKeywordDensity(text, keyword) {
const words = text.toLowerCase().split(/\s+/);
const keywordCount = words.filter(
word => word.includes(keyword.toLowerCase())
).length;
const density = (keywordCount / words.length) * 100;
// Red flags
if (density > 5) return { spam: true, reason: 'High keyword density' };
if (density > 3 && !naturalLanguage(text)) return { spam: true, reason: 'Forced keywords' };
return { spam: false };
}
Tools:
Method 1: White Text on White Background
<div style="color: #fff; background: #fff;">
keyword keyword keyword
</div>
Method 2: Font Size 0
<div style="font-size: 0;">keyword spam</div>
Method 3: Off-Page Positioning
.spam {
position: absolute;
left: -9999px; /* Off-screen */
}
Method 4: Comments or Metadata
<!-- hidden keyword spam -->
<meta name="hidden" content="keyword spam">
Visual Check:
Code Check:
# Find suspicious CSS
grep -r "color: #fff" *.html
grep -r "font-size: 0" *.html
grep -r "left: -999" *.css
grep -r "display: none" *.css # If non-accessible
Automated Check:
function findHiddenText(element) {
const style = window.getComputedStyle(element);
const issues = [];
// Check visibility
if (style.display === 'none') issues.push('Hidden with display:none');
if (style.visibility === 'hidden') issues.push('Hidden with visibility:hidden');
if (style.opacity === '0') issues.push('Hidden with opacity:0');
// Check positioning
const left = parseInt(style.left);
if (left < -100) issues.push('Off-screen text');
// Check color contrast
const color = style.color;
const bg = style.backgroundColor;
if (contrast(color, bg) < 1) issues.push('No contrast (hidden)');
return issues;
}
Showing different content to users vs. search engines.
Example:
Check User-Agent:
Tools:
Manual Check:
# Check as user
curl -H "User-Agent: Mozilla/5.0" https://example.com/page
# Check as Googlebot
curl -H "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1)" https://example.com/page
# Compare output (should be identical)
diff user-agent-response.html googlebot-response.html
Low-Quality Link Farms:
Unnatural Patterns:
Step 1: Get Backlinks
# Using SEMrush, Moz, Ahrefs, or similar:
# Export all backlinks to CSV
Step 2: Categorize
✅ Quality backlinks:
- News sites
- Industry publications
- Educational institutions
- High authority domains (DA >40)
- Natural, varied anchor text
⚠️ Questionable backlinks:
- Blogs that accept any content
- PBN indicators
- Exact match keywords 30-50%
- Recent bulk additions
❌ Spam backlinks:
- Obvious PBN (similar design/content)
- Exact match keywords 70%+
- Link farms
- Adult/gambling/pharmaceutical
- Automated comments
Step 3: Analyze Patterns
function analyzeBacklinks(links) {
let spam_score = 0;
// Check anchor text ratio
const exactMatch = links.filter(l =>
l.anchor === targetKeyword
).length;
if (exactMatch / links.length > 0.5) spam_score += 30;
// Check domain authority
const lowDA = links.filter(l => l.domainAuthority < 20).length;
if (lowDA / links.length > 0.7) spam_score += 20;
// Check diversity
const uniqueDomains = new Set(links.map(l => l.domain)).size;
if (uniqueDomains / links.length < 0.8) spam_score += 15;
return spam_score;
}
If you find spam links:
# Create disavow file
disavow.txt:
domain spam-site-1.com
domain spam-site-2.com
url https://bad-site.com/link-to-me
# Submit to Google Search Console
Spam Comment Indicators:
WordPress:
Custom Systems:
function isSpamComment(comment) {
const spam_score = 0;
// Generic praise
if (/great post|nice article|thanks for sharing/.test(comment.text))
spam_score += 20;
// Links in comment
if (comment.text.includes('http')) spam_score += 30;
// Very short comment
if (comment.text.length < 20) spam_score += 15;
// All caps
if (comment.text === comment.text.toUpperCase()) spam_score += 15;
return spam_score > 50;
}
Content:
Technical:
Links:
Comments:
# SEO Spam Detection Report
## Keyword Stuffing
- Pages analyzed: 150
- Keyword density average: 1.8%
- High density (>5%): 0 pages
- Suspicious patterns: 0
- Status: ✅ CLEAN
## Hidden Text/Links
- Pages scanned: 150
- Hidden text found: 0
- Off-screen content: 0
- Hidden links: 0
- Status: ✅ CLEAN
## Cloaking
- User-agent test: PASSED
- Content identical for all: ✅
- Googlebot sees same: ✅
- Status: ✅ CLEAN
## Backlink Analysis
- Total backlinks: 45
- Quality backlinks: 40 (89%)
- Questionable: 5 (11%)
- Spam backlinks: 0 (0%)
- Spam score: LOW
### Action Items
- Review 5 questionable links
- Disavow any confirmed spam
## Comment Spam
- Total comments: 320
- Spam detected: 3 (1%)
- Status: ✅ MINIMAL
## Overall Risk
- Risk level: LOW
- Recommendations: Monitor backlinks quarterly
Built-In Options:
Professional Tools:
Related Skills:
policy-risk-scannerads-readiness-assessmentactive-compliance-monitor