AI Slop Code RIsk Monitor

AgriciDaniel/claude-seo

Universal SEO skill for Claude Code. 26 sub-skills + 19 sub-agents covering technical SEO, E-E-A-T, schema, GEO/AEO, agent readiness (Lighthouse Agentic Browsing, WebMCP, llms.txt), backlinks, local SEO, e-commerce, international SEO, Google APIs, and PDF/Excel reporting. 9 optional extensions for live SEO data.

29.7 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for AgriciDaniel/claude-seo, a Python project with 18,686 GitHub stars. SynthScan examined 77,942 lines of code across 439 source files, recording 1378 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 29.7 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

29.7
Adjusted Signal
29.7
Raw Pattern Score
100%
Time Factor
2026-10-04
Last Push
18.7K
Stars
Python
Language
77.9K
Lines of Code
439
Files
1.4K
Pattern Hits
2026-10-12
Scan Date
0.11
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 46.6/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 857 finding(s).

Hallucinated Dependency & Supply Chain Risk 8.7/100 · LOW

Are imports declared and package/API names verified? 113 finding(s).

Agent Over-Engineering Ratio 71.3/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 1121 finding(s).

PR Review Velocity Impact 76.6/100 · CRITICAL

Which changes need focused human review? 1378 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 49MEDIUM 321LOW 1008

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 1378 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Decorative Section Separators207 hits · 750 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_metadata_template.py87# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_metadata_template.py89# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_metadata_template.py173# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_metadata_template.py175# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_metadata_template.py253# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_metadata_template.py255# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_metadata_template.py307# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_metadata_template.py309# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_metadata_template.py33# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_metadata_template.py35# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_metadata_template.py214# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_metadata_template.py216# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_phase_j_executable.py33# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_phase_j_executable.py35# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_phase_j_executable.py125# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_phase_j_executable.py127# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_phase_j_executable.py207# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_phase_j_executable.py209# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_phase_j_executable.py362# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/test_phase_j_executable.py364# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/test_portability.py19# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_portability.py21# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_portability.py95# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_portability.py97# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_banana_cost_tracker.py60# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_banana_cost_tracker.py62# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_banana_cost_tracker.py145# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_banana_cost_tracker.py147# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_banana_cost_tracker.py202# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_banana_cost_tracker.py204# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_unlighthouse_run.py37# --------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_unlighthouse_run.py39# --------------------------------------------------------------------------COMMENT
MEDIUMtests/test_unlighthouse_run.py89# --------------------------------------------------------------------------COMMENT
MEDIUMtests/test_unlighthouse_run.py91# --------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_unlighthouse_run.py158# --------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_unlighthouse_run.py160# --------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_gbp_lint_and_polish.py23# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_gbp_lint_and_polish.py25# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_gbp_lint_and_polish.py80# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_gbp_lint_and_polish.py82# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_gbp_lint_and_polish.py100# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_gbp_lint_and_polish.py102# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_dataforseo_costs.py45# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_dataforseo_costs.py47# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_dataforseo_costs.py106# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_dataforseo_costs.py108# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_dataforseo_costs.py150# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_dataforseo_costs.py152# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py139# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py141# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py224# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py226# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py240# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py242# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py262# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py264# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py500# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py502# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py533# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_render_page.py535# ---------------------------------------------------------------------------COMMENT
147 more matches not shown…
Hyper-Verbose Identifiers711 hits · 750 pts
SeverityFileLineSnippetContext
LOWtests/test_agent_mcp_permissions.py16def test_dataforseo_agent_mirrors_allow_only_sanctioned_mcp_path():CODE
LOWtests/test_agent_mcp_permissions.py25def test_dataforseo_agent_mirrors_fail_closed_without_mcp():CODE
LOWtests/test_agent_mcp_permissions.py37def test_dataforseo_agent_bodies_stay_mirrored():CODE
LOWtests/test_agent_mcp_permissions.py43def test_dataforseo_installers_use_matching_mcp_server_name():CODE
LOW⚡tests/test_metadata_template.py72def test_templated_pairs_are_flagged_high(title: str, description: str) -> None:CODE
LOW⚡tests/test_metadata_template.py81def test_templated_pairs_report_the_matched_cta(title: str, description: str) -> None:CODE
LOW⚡tests/test_metadata_template.py164def test_short_title_echo_is_not_flagged() -> None:CODE
LOW⚡tests/test_metadata_template.py178def test_brand_suffix_leaked_into_description() -> None:CODE
LOW⚡tests/test_metadata_template.py187def test_brand_named_first_in_description_is_not_a_leak() -> None:CODE
LOW⚡tests/test_metadata_template.py195def test_description_identical_to_title() -> None:CODE
LOW⚡tests/test_metadata_template.py203def test_title_echo_without_cta_is_medium_not_high() -> None:CODE
LOW⚡tests/test_metadata_template.py236def test_edge_cases_return_a_well_formed_result(title: str, description: str) -> None:CODE
LOW⚡tests/test_metadata_template.py243def test_missing_metadata_is_reported_not_flagged() -> None:CODE
LOW⚡tests/test_metadata_template.py249def test_none_inputs_are_tolerated() -> None:CODE
LOW⚡tests/test_metadata_template.py271def test_site_wide_templating_is_high_risk() -> None:CODE
LOW⚡tests/test_metadata_template.py279def test_one_templated_page_is_not_a_site_pattern() -> None:CODE
LOW⚡tests/test_metadata_template.py286def test_clean_site_has_no_flags() -> None:CODE
LOW⚡tests/test_metadata_template.py293def test_shared_cta_tail_is_counted_across_pages() -> None:CODE
LOW⚡tests/test_metadata_template.py300def test_empty_site_does_not_divide_by_zero() -> None:CODE
LOW⚡tests/test_metadata_template.py319def test_cli_emits_valid_json() -> None:CODE
LOW⚡tests/test_metadata_template.py328def test_cli_fail_on_any_exits_nonzero() -> None:CODE
LOW⚡tests/test_metadata_template.py335def test_cli_without_input_returns_usage_error() -> None:CODE
LOW⚡tests/test_metadata_template.py341def test_cli_reads_a_pairs_file(tmp_path) -> None:CODE
LOW⚡tests/test_metadata_template.py365def test_json_output_reports_heuristic_method() -> None:CODE
LOW⚡tests/test_metadata_template.py373def test_human_output_names_the_method_as_heuristic() -> None:CODE
LOW⚡tests/test_metadata_template.py380def test_findings_do_not_claim_a_specific_spam_update_caused_or_targeted_this() -> None:CODE
LOWtests/test_metadata_template.py145def test_legitimate_pairs_are_not_flagged_templated(title: str, description: str) -> None:CODE
LOWtests/test_metadata_template.py152def test_cta_alone_is_not_enough_to_flag() -> None:CODE
LOWtests/test_metadata_template.py352def test_pairs_file_accepts_parse_html_meta_description_key(tmp_path) -> None:CODE
LOWtests/test_keywordseverywhere_api.py61def test_get_rank_posts_the_documented_bulk_request() -> None:CODE
LOW⚡tests/test_keywordseverywhere_api.py83def test_get_rank_auth_error_maps_to_error_status() -> None:CODE
LOW⚡tests/test_keywordseverywhere_api.py93def test_get_rank_rate_limit_maps_to_rate_limited_status() -> None:CODE
LOW⚡tests/test_keywordseverywhere_api.py103def test_get_rank_html_error_page_is_not_echoed() -> None:CODE
LOWtests/test_keywordseverywhere_api.py116def test_get_rank_ssrf_block_surfaces_as_error_not_a_crash() -> None:CODE
LOWtests/test_keywordseverywhere_api.py140def test_upstream_error_body_never_echoes_the_key(monkeypatch):CODE
LOWtests/test_keywordseverywhere_api.py159def test_redirects_and_non_json_bodies_get_a_clear_error(status, message) -> None:CODE
LOWtests/test_keywordseverywhere_api.py169def test_post_goes_through_a_pinned_session_without_following_redirects() -> None:CODE
LOWtests/test_audit_instructions.py10def test_seo_audit_starts_with_render_page_auto() -> None:CODE
LOWtests/test_audit_instructions.py19def test_seo_audit_requires_persistent_artifacts() -> None:CODE
LOWtests/test_audit_instructions.py32def test_audit_agents_use_renderer_or_capture_script() -> None:CODE
LOWtests/test_audit_instructions.py45def test_audit_agents_document_output_dir_findings_contract() -> None:CODE
LOWtests/test_audit_instructions.py69def test_seo_audit_report_command_keeps_outputs_in_audit_dir() -> None:CODE
LOW⚡tests/test_phase_j_executable.py38def test_discovery_url_for_normalizes_to_well_known():CODE
LOW⚡tests/test_phase_j_executable.py81def test_parse_profile_flags_a_flat_non_spec_profile():CODE
LOW⚡tests/test_phase_j_executable.py89def test_parse_profile_flags_missing_capability_fields():CODE
LOW⚡tests/test_phase_j_executable.py98def test_parse_profile_flags_missing_fields_and_unknown_capability():CODE
LOW⚡tests/test_phase_j_executable.py112def test_parse_profile_rejects_non_object_root():CODE
LOW⚡tests/test_phase_j_executable.py117def test_known_capabilities_cover_core_commerce_verbs():CODE
LOW⚡tests/test_phase_j_executable.py130def test_iptc_vocab_contains_required_merchant_center_value():CODE
LOW⚡tests/test_phase_j_executable.py138def test_audit_reports_target_not_found(tmp_path):CODE
LOW⚡tests/test_phase_j_executable.py143def test_audit_reports_exiftool_unavailable(tmp_path, monkeypatch):CODE
LOW⚡tests/test_phase_j_executable.py152def test_inject_rejects_unknown_source_type(tmp_path):CODE
LOW⚡tests/test_phase_j_executable.py160def test_inject_reports_missing_exiftool(tmp_path, monkeypatch):CODE
LOW⚡tests/test_phase_j_executable.py169def test_inject_succeeds_when_subprocess_returns_zero(tmp_path, monkeypatch):CODE
LOW⚡tests/test_phase_j_executable.py212def test_analyze_html_counts_semantic_tags_and_widgets():CODE
LOWtests/test_phase_j_executable.py55def test_parse_profile_rejects_malformed_json():CODE
LOWtests/test_phase_j_executable.py61def test_parse_profile_valid_spec_profile():CODE
LOWtests/test_phase_j_executable.py181def test_audit_classifies_files_via_mocked_exiftool(tmp_path, monkeypatch):CODE
LOW⚡tests/test_phase_j_executable.py367def test_render_page_result_dict_includes_accessibility_tree_key():STRING
LOWtests/test_phase_j_executable.py230def test_analyze_html_detects_unlabeled_inputs():STRING
651 more matches not shown…
Excessive Try-Catch Wrapping167 hits · 276 pts
SeverityFileLineSnippetContext
LOWextensions/ahrefs/install.sh82except Exception:CODE
LOWextensions/dataforseo/install.sh151except Exception:CODE
LOWextensions/firecrawl/install.sh118except Exception:CODE
LOWextensions/banana/install.sh129except Exception:CODE
LOWextensions/banana/scripts/cost_tracker.py122 except Exception:CODE
MEDIUMextensions/banana/scripts/cost_tracker.py163 print(f"Error: Missing pricing config at {PRICING_PATH}.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/cost_tracker.py171 print("Error: pricing.json must include checked_date and models.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/cost_tracker.py187 print(f"Error: No pricing for model '{model}' in {PRICING_PATH}.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/cost_tracker.py196 print(f"Error: No pricing for resolution '{resolution}' in {PRICING_PATH}.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/cost_tracker.py284 print("Error: Pass --confirm to reset the cost ledger.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/cost_tracker.py334 print(f"Error: {exc}", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/presets.py32 print("Error: Preset name must contain only letters, numbers, hyphens, and underscores.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/presets.py47 print(f"Error: Preset '{name}' not found.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/presets.py82 print(f"Error: Preset '{args.name}' already exists. Use a different name.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/presets.py109 print("Error: Pass --confirm to delete the preset.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/presets.py113 print(f"Error: Preset '{args.name}' not found.", file=sys.stderr)CODE
MEDIUMextensions/banana/scripts/setup_mcp.py95 print("Error: API key cannot be empty.")CODE
MEDIUMscripts/bing_webmaster.py25 print("Error: requests library required. Install with: pip install requests")CODE
MEDIUMscripts/bing_webmaster.py34 print("Error: backlinks_auth.py and google_auth.py required in scripts/", file=sys.stderr)CODE
MEDIUMscripts/bing_webmaster.py519 print(f"Error: {result['error']}", file=sys.stderr)CODE
MEDIUMscripts/bing_webmaster.py523 print("Error: compare command requires a competitor URL", file=sys.stderr)CODE
MEDIUMscripts/bing_webmaster.py543 print(f"Error: {result['error']}", file=sys.stderr)CODE
MEDIUMscripts/bing_webmaster.py559 print(f"Error: {result['error']}", file=sys.stderr)CODE
MEDIUMscripts/bing_webmaster.py606 print(f"Error: {result['error']}", file=sys.stderr)CODE
MEDIUMscripts/sitemap_discovery.py281 print(f"Error: {result['error']}", file=sys.stderr)CODE
MEDIUMscripts/verify_release.py116 print(f"Error: manifest not found: {args.manifest}", file=sys.stderr)CODE
LOWscripts/backlinks_auth.py109 except Exception as exc: # best-effort hardening only; never fatalCODE
MEDIUM⚡scripts/google_auth.py539 print(f"Error exchanging authorization code: {e}", file=sys.stderr)CODE
MEDIUMscripts/google_auth.py175 print(f"Error loading service account: {e}", file=sys.stderr)CODE
MEDIUMscripts/google_auth.py237 print(f"Error reading OAuth client file: {e}", file=sys.stderr)CODE
MEDIUMscripts/google_auth.py359 print(f"Error refreshing OAuth token: {e}", file=sys.stderr)CODE
MEDIUMscripts/google_auth.py415 print("Error: google-auth required. Install with: pip install google-auth", file=sys.stderr)CODE
MEDIUMscripts/google_auth.py438 print("Error: Could not load OAuth client credentials.", file=sys.stderr)CODE
MEDIUMscripts/google_auth.py611 print(f"Error building {api_name} service: {e}", file=sys.stderr)CODE
LOW⚡scripts/google_auth.py529 except Exception as e:CODE
LOW⚡scripts/google_auth.py538 except Exception as e:CODE
LOWscripts/google_auth.py174 except Exception as e:CODE
LOWscripts/google_auth.py225 except Exception as e:CODE
LOWscripts/google_auth.py329 except Exception:CODE
LOWscripts/google_auth.py358 except Exception as e:CODE
LOWscripts/google_auth.py475 except Exception:CODE
LOWscripts/google_auth.py610 except Exception as e:CODE
MEDIUMscripts/google_auth.py901 print("Error: --creds is required with --auth", file=sys.stderr)STRING
MEDIUMscripts/google_auth.py908 print("Error: --creds and --code are required with --exchange", file=sys.stderr)STRING
MEDIUMscripts/matomo_auth.py30 print("Error: requests library required. Install with: pip install requests",CODE
LOWscripts/matomo_auth.py101 except Exception as exc: # best-effort hardening only; never fatalCODE
LOWscripts/agentic_check.py163 except Exception as exc: # network errors are findings, not crashesCODE
MEDIUM⚡scripts/drift_report.py346 print(f"Error: File not found: {args.file}", file=sys.stderr)CODE
MEDIUM⚡scripts/drift_report.py351 print("Error: Provide a JSON file path or use --stdin", file=sys.stderr)CODE
MEDIUM⚡scripts/drift_report.py357 print(f"Error: Invalid JSON: {e}", file=sys.stderr)CODE
MEDIUM⚡scripts/drift_report.py361 print(f"Error: Comparison has error: {comparison['error']}", file=sys.stderr)CODE
MEDIUMscripts/iptc_ai_label.py205 print(f"Error: {report['summary']['error']}", file=sys.stderr)CODE
MEDIUMscripts/iptc_ai_label.py219 print(f"Error: {out['error']}", file=sys.stderr)CODE
MEDIUM⚡scripts/google_report.py2683 print(f"Error reading data file: {e}", file=sys.stderr)CODE
MEDIUM⚡scripts/google_report.py2689 print(f"Error parsing stdin JSON: {e}", file=sys.stderr)CODE
MEDIUM⚡scripts/google_report.py2692 print("Error: Provide --data file or pipe JSON via stdin.", file=sys.stderr)CODE
MEDIUMscripts/google_report.py2704 print(f"Error: {result['error']}", file=sys.stderr)CODE
LOWscripts/google_report.py2408 except Exception as e:CODE
MEDIUMscripts/gbp_deprecation_lint.py115 print(f"Error: url_safety: {exc}", file=sys.stderr)CODE
LOWscripts/capture_screenshot.py152 except Exception as e:CODE
107 more matches not shown…
Empty Error Handlers33 hits · 165 pts
SeverityFileLineSnippetContext
HIGHextensions/banana/scripts/setup_mcp.py55except OSError:CODE
HIGHhooks/validate-schema.py281except (OSError, ValueError):CODE
HIGHscripts/backlinks_auth.py141except OSError:CODE
HIGHscripts/google_auth.py247except OSError:CODE
HIGHscripts/google_auth.py295except OSError:CODE
HIGHscripts/google_auth.py475except Exception:CODE
HIGHscripts/google_auth.py742except (json.JSONDecodeError, IOError):CODE
HIGHscripts/content_quality.py308except (ValueError, OSError):CODE
HIGHscripts/matomo_auth.py271except ValueError:CODE
HIGHscripts/matomo_auth.py136except OSError:CODE
HIGHscripts/matomo_auth.py147except OSError:CODE
HIGHscripts/google_report.py2430except OSError:CODE
HIGHscripts/url_safety.py999except Exception:CODE
HIGHscripts/commoncrawl_graph.py223except requests.exceptions.Timeout:CODE
HIGHscripts/commoncrawl_graph.py225except MemoryError:CODE
HIGHscripts/commoncrawl_graph.py151except (json.JSONDecodeError, IOError):CODE
HIGHscripts/commoncrawl_graph.py320except Exception:CODE
HIGHscripts/parse_html.py237except (json.JSONDecodeError, TypeError):CODE
HIGHscripts/analyze_visual.py133except Exception:CODE
HIGHscripts/analyze_visual.py151except Exception:CODE
HIGHscripts/drift_baseline.py205except OSError:CODE
HIGHscripts/sync_flow.py347except ValueError:CODE
HIGHscripts/sync_flow.py248except OSError:CODE
HIGHscripts/runtime.py85except OSError:CODE
HIGHscripts/runtime.py222except RuntimeError:CODE
HIGHscripts/runtime.py78except (OSError, ValueError):CODE
HIGHscripts/youtube_search.py225except Exception:CODE
HIGHscripts/moz_api.py93except (IOError, ValueError):CODE
HIGHscripts/moz_api.py78except (ImportError, OSError):CODE
HIGHscripts/render_page.py394except Exception:CODE
HIGHscripts/render_page.py400except Exception:CODE
HIGHscripts/render_page.py592except Exception:CODE
HIGHscripts/render_page.py598except Exception:CODE
Unused Imports86 hits · 80 pts
SeverityFileLineSnippetContext
LOWtests/test_metadata_template.py18CODE
LOWtests/test_keywordseverywhere_api.py12CODE
LOWtests/test_audit_instructions.py3CODE
LOWtests/test_phase_j_executable.py13CODE
LOWtests/test_portability.py7CODE
LOWtests/test_dataforseo_tool_names.py11CODE
LOWtests/test_canonical_facts.py8CODE
LOWtests/test_fetch_page_decoding.py3CODE
LOWtests/test_nlp_analyze.py3CODE
LOWtests/test_gsc_pagination.py3CODE
LOWtests/test_schema_hook_redos.py3CODE
LOWtests/test_banana_cost_tracker.py15CODE
LOWtests/test_banana_api_key_safety.py3CODE
LOWtests/test_pagespeed_null_category_score.py8CODE
LOWtests/test_google_gcloud_adc.py8CODE
LOWtests/test_extension_installer_injection.py11CODE
LOWtests/test_drift_portability.py3CODE
LOWtests/test_unlighthouse_run.py24CODE
LOWtests/test_banana_setup_mcp_atomic_write.py9CODE
LOWtests/test_gbp_lint_and_polish.py8CODE
LOWtests/test_powershell_ascii.py9CODE
LOWtests/test_gsc_totals_aggregate.py6CODE
LOWtests/test_file_size_limits.py7CODE
LOWtests/test_runtime.py3CODE
LOWtests/test_validate_backlink_report.py3CODE
LOWtests/test_domain_history.py14CODE
LOWtests/test_agentic.py13CODE
LOWtests/test_backlinks_auth_hardening.py11CODE
LOWtests/test_banana_key_masking.py8CODE
LOWtests/test_audit_agent_turn_budget.py15CODE
LOWtests/test_cross_platform_hooks.py3CODE
LOWtests/test_schema_hook_detection.py14CODE
LOWtests/test_dataforseo_costs.py14CODE
LOWtests/test_render_page.py19CODE
LOWtests/test_technical_depth.py15CODE
LOWtests/test_no_em_dash.py20CODE
LOWtests/test_sitemap_discovery.py3CODE
LOWtests/test_google_api_key_safety.py7CODE
LOWtests/test_google_report_full_audit.py3CODE
LOWtests/test_moz_api.py3CODE
LOWtests/test_schema_hook_policy.py8CODE
LOWtests/test_hostile_inputs.py7CODE
LOWtests/test_content_quality.py14CODE
LOWtests/test_pyproject_metadata.py3CODE
LOWtests/test_matomo_report.py16CODE
LOWtests/test_commoncrawl_graph.py14CODE
LOWtests/test_bing_webmaster.py3CODE
LOWtests/test_contributors.py3CODE
LOWtests/test_schema_v2.py12CODE
LOWtests/test_backlink_score_gate.py7CODE
LOWtests/test_url_safety.py12CODE
LOWtests/test_hosted_plugin_layout.py16CODE
LOWtests/test_ai_crawler_claims.py3CODE
LOWtests/test_gsc_query.py3CODE
LOWtests/test_parasite_risk_and_extensions.py8CODE
LOWscripts/sitemap_discovery.py9CODE
LOWscripts/verify_release.py30CODE
LOWscripts/backlinks_auth.py30CODE
LOWscripts/content_quality.py54CODE
LOWscripts/schema_generate.py47CODE
26 more matches not shown…
Deep Nesting70 hits · 65 pts
SeverityFileLineSnippetContext
LOWtests/test_dataforseo_tool_names.py37CODE
LOWtests/test_runtime.py246CODE
LOWtests/test_agentic.py512CODE
LOWextensions/banana/scripts/batch.py35CODE
LOWhooks/validate-schema.py159CODE
LOWhooks/validate-schema.py191CODE
LOWhooks/validate-schema.py264CODE
LOWscripts/bing_webmaster.py190CODE
LOWscripts/bing_webmaster.py383CODE
LOWscripts/bing_webmaster.py474CODE
LOWscripts/sitemap_discovery.py74CODE
LOWscripts/sitemap_discovery.py183CODE
LOWscripts/sitemap_discovery.py272CODE
LOWscripts/backlinks_auth.py153CODE
LOWscripts/backlinks_auth.py205CODE
LOWscripts/backlinks_auth.py515CODE
LOWscripts/google_auth.py363CODE
LOWscripts/google_auth.py615CODE
LOWscripts/google_auth.py710CODE
LOWscripts/google_auth.py852CODE
LOWscripts/matomo_auth.py166CODE
LOWscripts/schema_generate.py246CODE
LOWscripts/agentic_check.py206CODE
LOWscripts/agentic_check.py643CODE
LOWscripts/agentic_check.py753CODE
LOWscripts/google_report.py1091CODE
LOWscripts/google_report.py2066CODE
LOWscripts/google_report.py2472CODE
LOWscripts/dataforseo_normalize.py87CODE
LOWscripts/ga4_report.py396CODE
LOWscripts/url_safety.py649CODE
LOWscripts/url_safety.py690CODE
LOWscripts/schema_ecommerce_validate.py112CODE
LOWscripts/commoncrawl_graph.py164CODE
LOWscripts/commoncrawl_graph.py231CODE
LOWscripts/ucp_check.py79CODE
LOWscripts/parse_html.py91CODE
LOWscripts/gsc_query.py428CODE
LOWscripts/indexing_notify.py65CODE
LOWscripts/indexing_notify.py248CODE
LOWscripts/analyze_visual.py47CODE
LOWscripts/parasite_risk.py118CODE
LOWscripts/crux_history.py54CODE
LOWscripts/sync_flow.py273CODE
LOWscripts/pagespeed_check.py80CODE
LOWscripts/pagespeed_check.py318CODE
LOWscripts/pagespeed_check.py493CODE
LOWscripts/runtime.py273CODE
LOWscripts/agent_ux_check.py131CODE
LOWscripts/matomo_report.py564CODE
LOWscripts/matomo_report.py650CODE
LOWscripts/lighthouse_agentic.py202CODE
LOWscripts/seo_updates.py100CODE
LOWscripts/lcp_subparts.py88CODE
LOWscripts/agentic_fix.py325CODE
LOWscripts/keyword_planner.py48CODE
LOWscripts/keyword_planner.py246CODE
LOWscripts/youtube_search.py288CODE
LOWscripts/validate_backlink_report.py272CODE
LOWscripts/domain_history.py111CODE
10 more matches not shown…
Structural Annotation Overuse36 hits · 58 pts
SeverityFileLineSnippetContext
LOWagents/seo-backlinks.md89### Step 1: Automated validationCOMMENT
LOWagents/seo-backlinks.md97### Step 2: Manual checks (not automatable)COMMENT
LOW⚡scripts/drift_baseline.py153 # Step 1: Fetch the page via fetch_page.pySTRING
LOWscripts/drift_baseline.py188 # Step 2: Parse the HTML via parse_html.pySTRING
LOW⚡scripts/render_page.py582 # Step 2: content extraction (works on either raw or rendered HTML).COMMENT
LOWscripts/render_page.py459 # Step 1: raw fetch (always; needed for SPA detection and as a baseline).COMMENT
LOWscripts/verify_backlinks.py130 # Step 1: HEAD checkCOMMENT
LOWscripts/verify_backlinks.py153 # Step 2: Full GET + parseCOMMENT
LOWscripts/verify_backlinks.py170 # Step 3: Parse HTML and find target linkCOMMENT
LOWskills/seo-google/references/auth-setup.md13## Step 1: Create a Google Cloud ProjectCOMMENT
LOWskills/seo-google/references/auth-setup.md20## Step 2: Enable APIsCOMMENT
LOWskills/seo-google/references/auth-setup.md33## Step 3: Create an API KeyCOMMENT
LOWskills/seo-google/references/auth-setup.md40## Step 4: Create a Service AccountCOMMENT
LOW⚡skills/seo-google/references/auth-setup.md64## Step 5: Grant Search Console AccessCOMMENT
LOW⚡skills/seo-google/references/auth-setup.md74## Step 6: Grant GA4 AccessCOMMENT
LOW⚡skills/seo-google/references/auth-setup.md82## Step 7: Create Config FileCOMMENT
LOWskills/seo-google/references/auth-setup.md106## Step 8: Verify SetupCOMMENT
LOWskills/seo-cluster/SKILL.md41### Step 1: Seed Keyword ExpansionCOMMENT
LOWskills/seo-cluster/SKILL.md55### Step 2: SERP Overlap ClusteringCOMMENT
LOWskills/seo-cluster/SKILL.md83### Step 3: Intent ClassificationCOMMENT
LOWskills/seo-cluster/SKILL.md98### Step 4: Hub-and-Spoke ArchitectureCOMMENT
LOWskills/seo-cluster/SKILL.md127### Step 5: Internal Link MatrixCOMMENT
LOWskills/seo-cluster/SKILL.md154### Step 6: Interactive Cluster MapCOMMENT
LOW⚡…lls/seo-cluster/references/serp-overlap-methodology.md12### Step 1: Collect SERP DataCOMMENT
LOW⚡…lls/seo-cluster/references/serp-overlap-methodology.md20### Step 2: Pairwise ComparisonCOMMENT
LOW⚡…lls/seo-cluster/references/serp-overlap-methodology.md27### Step 3: Apply ThresholdsCOMMENT
LOW⚡…lls/seo-cluster/references/serp-overlap-methodology.md36### Step 4: Handle Ambiguous Scores (3-4 Range)COMMENT
LOWskills/seo-sxo/SKILL.md41### Step 1: Target AcquisitionCOMMENT
LOWskills/seo-sxo/SKILL.md49### Step 2: SERP Backwards AnalysisCOMMENT
LOWskills/seo-sxo/SKILL.md74### Step 3: Page-Type Mismatch DetectionCOMMENT
LOWskills/seo-sxo/SKILL.md95### Step 4: User Story DerivationCOMMENT
LOWskills/seo-sxo/SKILL.md117### Step 5: Gap AnalysisCOMMENT
LOWskills/seo-sxo/SKILL.md133### Step 6: Persona-Based ScoringCOMMENT
LOWskills/seo-sxo/SKILL.md149### Step 7: Wireframe Generation (Optional)COMMENT
LOW…rompts/optimize/step-1-the-chatgpt-discovery-prompt.md11# Step 1: The ChatGPT Discovery PromptCOMMENT
LOW…pts/optimize/step-2-the-follow-up-qualifying-prompt.md11# Step 2: The Follow-Up Qualifying PromptCOMMENT
Synthetic Comment Markers7 hits · 46 pts
SeverityFileLineSnippetContext
HIGHREADME.md20- **AI-search first.** Aligned with [Google's AI Optimization Guide](https://developers.google.com/search/docs/fundamentCODE
HIGHREADME.md448Most SEO tools treat AI search as a separate optimization discipline. Claude SEO follows [Google's own position](https:/CODE
HIGH⚡tests/test_phase_j_executable.py131 # Google Merchant Center requires this exact label on AI-generated images.COMMENT
HIGH⚡scripts/drift_report.py308 Generated by Claude SEO Drift Monitor | {report_time}CODE
HIGHscripts/google_report.py2055 f' Report generated by Claude SEO (Google SEO Intelligence Skill), 'CODE
HIGHscripts/agentic_fix.py286// Draft generated by claude-seo. WebMCP is a W3C Community Group draft.COMMENT
HIGHskills/seo-cluster/templates/cluster-map.html315 <footer>Generated by Claude SEO</footer>CODE
Cross-Language Confusion6 hits · 25 pts
SeverityFileLineSnippetContext
HIGHscripts/capture_screenshot.py33 "pip install playwright && playwright install chromium"CODE
HIGHscripts/analyze_visual.py19 print("Error: playwright required. Install with: pip install playwright && playwright install chromium")CODE
HIGHscripts/agentic_fix.py289if (mc?.registerTool && form) {{CODE
HIGHscripts/domain_history.py44 "years_registered": float or null,STRING
HIGHscripts/domain_history.py45 "topical_shift": true|false|null,STRING
HIGHscripts/render_page.py300 "(document.body && document.body.innerText || '').trim().length,"CODE
Fake / Example Data18 hits · 21 pts
SeverityFileLineSnippetContext
LOWtests/test_render_page.py73 + ("Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 5)CODE
LOWtests/test_render_page.py73 + ("Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 5)CODE
LOW⚡tests/test_bing_webmaster.py47 result = bing.get_link_counts("https://site.test/", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py57 result = bing.get_link_counts("https://site.test/", "placeholder", max_pages=1)CODE
LOW⚡tests/test_bing_webmaster.py68 result = bing.get_link_counts("https://site.test/", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py76 result = bing.get_link_counts("https://site.test/", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py91 result = bing.get_link_details("https://site.test/", "placeholder", max_detail_pages=2)CODE
LOW⚡tests/test_bing_webmaster.py113 result = bing.get_link_details("https://site.test/", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py126 result = bing.get_link_details("https://site.test/", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py133 result = bing.get_link_details("https://site.test/", "placeholder", page=-1)CODE
LOW⚡tests/test_bing_webmaster.py147 result = bing.get_link_details("https://site.test/", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py155 result = bing.compare_links("https://a.test", "https://b.test", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py167 result = bing.compare_links("https://a.test", "https://b.test", "placeholder")CODE
LOW⚡tests/test_bing_webmaster.py181 result = bing._bing_request("GetLinkCounts", "placeholder", params)CODE
LOW⚡tests/test_bing_webmaster.py187 assert sent_params == {"siteUrl": "https://site.test/", "page": 0, "apikey": "placeholder"}CODE
LOWhooks/validate-schema.py319 critical_keywords = ["placeholder", "deprecated", "retired"]CODE
LOWscripts/agentic_fix.py206 label = label or el.get("aria-label") or el.get("placeholder") or nameCODE
LOWskills/seo-plan/assets/local-service.md76 "streetAddress": "123 Main St",CODE
Modern AI Meta-Vocabulary6 hits · 17 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md20- **AI-search first.** Aligned with [Google's AI Optimization Guide](https://developers.google.com/search/docs/fundamentCODE
MEDIUMdocs/COMMANDS.md180### `/seo agentic [audit|fix|lighthouse|refresh] <url>`COMMENT
MEDIUMextensions/ahrefs/skills/seo-ahrefs/SKILL.md45## Cost guardrailsCOMMENT
MEDIUMextensions/seranking/skills/seo-seranking/SKILL.md42## Cost guardrailsCOMMENT
MEDIUM…/seo-agentic/references/lighthouse-agentic-category.md56### ARD catalog discovery order (gatherer `agentic/ard.js`)COMMENT
MEDIUMskills/seo/references/thinking-framework.md121### 6. CONNECT: system orchestrationCOMMENT
Magic Placeholder Names3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHdocs/MCP-INTEGRATION.md57 "PAGESPEED_API_KEY": "your-api-key"CODE
HIGHextensions/firecrawl/docs/FIRECRAWL-SETUP.md31 "FIRECRAWL_API_KEY": "fc-your-api-key-here"CODE
HIGHextensions/banana/docs/BANANA-SETUP.md25 "GOOGLE_AI_API_KEY": "your-api-key-here"CODE
Redundant / Tautological Comments8 hits · 12 pts
SeverityFileLineSnippetContext
LOWextensions/dataforseo/install.sh85 # Check if running from repo or standaloneCOMMENT
LOWextensions/firecrawl/install.sh67 # Check if running from repo or standaloneCOMMENT
LOWextensions/banana/uninstall.sh16 # Check if standalone banana skill still existsCOMMENT
LOWextensions/banana/install.sh53 # Check if running from repo or standaloneCOMMENT
LOWextensions/banana/install.sh64 # Check if nanobanana-mcp is already configuredCOMMENT
LOWscripts/google_auth.py386 # Check if token needs refreshCOMMENT
LOWscripts/validate_backlink_report.py42 # Check if it's a @graph wrapper that wasn't flattenedCOMMENT
LOWscripts/validate_backlink_report.py130 # Check if ALL H1s are suspicious (likely no real heading)COMMENT
Verbosity Indicators7 hits · 10 pts
SeverityFileLineSnippetContext
LOW⚡scripts/drift_baseline.py153 # Step 1: Fetch the page via fetch_page.pySTRING
LOWscripts/drift_baseline.py188 # Step 2: Parse the HTML via parse_html.pySTRING
LOW⚡scripts/render_page.py582 # Step 2: content extraction (works on either raw or rendered HTML).COMMENT
LOWscripts/render_page.py459 # Step 1: raw fetch (always; needed for SPA detection and as a baseline).COMMENT
LOWscripts/verify_backlinks.py130 # Step 1: HEAD checkCOMMENT
LOWscripts/verify_backlinks.py153 # Step 2: Full GET + parseCOMMENT
LOWscripts/verify_backlinks.py170 # Step 3: Parse HTML and find target linkCOMMENT
Over-Commented Block7 hits · 7 pts
SeverityFileLineSnippetContext
LOWuninstall.sh1#!/usr/bin/env bashCOMMENT
LOWhooks/validate-schema.py61# blocks carrying a CSP ``nonce``, an ``id`` or ``data-*`` attributes, or anCOMMENT
LOWscripts/url_safety.py121# allowlist of "looks like a numeric address" forms we want to canonicalizeCOMMENT
LOWscripts/url_safety.py221 or (ip.version == 4 and ip in _SHARED_ADDRESS_SPACE)COMMENT
LOWscripts/url_safety.py241#COMMENT
LOWscripts/url_safety.py761)COMMENT
LOWscripts/fetch_page.py41from url_safety import DEFAULT_USER_AGENT as DEFAULT_USER_AGENT # noqa: E402,F401COMMENT
Self-Referential Comments1 hit · 4 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_phase_j_executable.py144 # Create a real file so we get past the target-exists check.COMMENT
AI Slop Vocabulary1 hit · 4 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_content_humanize.py60 # A zero-width space inside "delve" must not defeat the \b pattern.COMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMscripts/content_quality.py126 "it's worth noting that",CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWscripts/matomo_auth.py453CODE
LOWscripts/drift_baseline.py401CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/url_safety.py105__all__ = [CODE