Skip to content
ai-supply.store
DiscoverCategoriesLeaderboardsCommunityAgent APIFAQ
Sign inSign up free
catalog / Marketing / advertools — SEO & SEM Productivity Toolkit
◆SkillMarketingFree

advertools — SEO & SEM Productivity Toolkit

MIT-licensed Python library for SEO, SEM, and digital marketing analysis: sitemap parsing, robots.txt analysis, keyword planning, and log file analysis.

@ai-supply
Installs64k
⟳ upstream master@59dc2be · updated 26d ago
↗ Source repository
← More MarketingMarketing leaderboard →How we grade security →Source ↗
! Grade B · 88/100 · ReviewSecurity assessment
✓No compromise signals32capabilities surfaced1known CVE7of 20 OWASP controls clear
External endpoints declaredExternal endpoints declaredSuspicious network referencesExternal endpoints declared
scanned 16d ago·osv · gitleaks · opengrep · picklescan + heuristics·full breakdown in the Security tab ↓

advertools — SEO & SEM Productivity Toolkit

advertools is a Python library by Elias Dabbas that provides a comprehensive suite of SEO and SEM analytical tools. It handles the data-heavy workflows that digital marketers and SEO specialists encounter daily — crawling sitemaps, auditing robots.txt, generating keyword combinations, analyzing ad accounts, parsing structured data, and processing server log files.

Key Features

  • Sitemap analysis: parse XML sitemaps and sitemap indexes into DataFrames
  • robots.txt parsing: analyze crawl rules and Disallow/Allow directives
  • Keyword tools: combinatorial keyword expansion, match-type normalization, keyword clustering
  • SEM tools: account budget analysis, ad copy grading, Quality Score inputs
  • Log file analysis: parse Apache/Nginx access logs to find SEO crawl patterns
  • Structured data: extract JSON-LD and OpenGraph metadata from URLs

Quick Start

pip install advertools
import advertools as adv

# Analyze a sitemap
sitemap_df = adv.sitemap_to_df("https://example.com/sitemap.xml")
print(sitemap_df[["loc", "lastmod", "priority"]].head())

# Generate keyword combinations for Google Ads
keywords = adv.kw_generate(
    products=["running shoes", "trail shoes"],
    words=["buy", "best", "review"],
    match_types=["Exact", "Phrase"]
)
print(keywords.head(10))
npx ai-supply add advertools-seo-sem-toolkit

Curated mirror of the open-source advertools (MIT). Get it from the source.

Rating rank
#1
of 13 in Marketing
Install rank
#7
of 13 in Marketing
Security score
88/100 · B
review
Security rank
#5
of 13 in Marketing
Installs
64k
cat avg 80k
This listing vs category average
Installs
this
cat avg
Security (of 100)
this
cat avg
Adoption trend
See the Marketing leaderboard →
! Security: Review · 8888/100 · grade Bscanned 16d ago
✓ no compromise signals33 risk-surface · 7/20 OWASP controls flagged

Compromise signals — malicious or tampered code (leaked secrets, backdoors, a dropped executable) — reduce the score, and known dependency CVEs carry a bounded penalty (they warrant review but never QUARANTINE — update the dependency to clear). Other dangerous-by-capability traits are risk surface, expected for some capabilities. Every finding is mapped to its OWASP control below.

What this capability can do · med confidence (static)
⚑ filesystem⚑ shell⚑ network⚑ secrets
egress → docs.readthedocs.io, bit.ly, www.google.com, www.google.jo, www.google.es, examle.com, docs.scrapy.org, 123.456.789.101 +32
30 scripts

Findings mapped to the OWASP Top 10 for LLM Applications (2025) and the OWASP Machine Learning Security Top 10. Expand any flagged control for the exact findings — compromise reduces the score; expected/risk-surface do not, except a known CVE, which carries a small bounded penalty (high/critical → Review).

OWASP Top 10 for LLM Applications
⚠LLM03Supply Chainhigh
Vulnerable/compromised dependencies, models or archives in the artifact.
•Vulnerable dependencies — 22 known vulnerabilities in: pip@9.0.3, wheel@0.9.7, filelock@3.19.1, idna@3.9.0 (CWE-1395)known CVE · -12 pts
⚠LLM05Improper Output Handlingmedium
Code that pipes model/user output into shell, eval, SQL or paths unsafely.
•Suspicious code patterns — OS command execution · eliasdabbas-advertools-59dc2be/advertools/header_spider.py (CWE-78)risk surface
•Suspicious code patterns — OS command execution; dynamic code execution · eliasdabbas-advertools-59dc2be/advertools/spider.py (CWE-78)risk surface
•Suspicious code patterns — dynamic code execution · eliasdabbas-advertools-59dc2be/advertools/twitter.py (CWE-95)risk surface
⚠LLM06Excessive Agencymedium
Over-broad tool/permission surface or unrestricted egress.
•External endpoints declared — 1 distinct host(s) · eliasdabbas-advertools-59dc2be/.readthedocs.yamlrisk surface
•External endpoints declared — 12 distinct host(s) · eliasdabbas-advertools-59dc2be/README.rstrisk surface
•External endpoints declared — 7 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/cli.pyrisk surface
•External endpoints declared — 5 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/cli_docs/cli.pyrisk surface
•External endpoints declared — 8 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/code_recipes/spider_strategies.pyrisk surface
•External endpoints declared — 9 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/crawlytics.pyrisk surface
•External endpoints declared — 2 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/emoji.pyrisk surface
•External endpoints declared — 4 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/extract.pyrisk surface
•Broad capability surface — 3 high-impact capability categories referenced — verify least-privilege · eliasdabbas-advertools-59dc2be/advertools/robotstxt.py (CWE-272)risk surface
•Broad capability surface — 4 high-impact capability categories referenced — verify least-privilege · eliasdabbas-advertools-59dc2be/advertools/serp_claude.py (CWE-272)risk surface
•External endpoints declared — 6 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/sitemaps.pyrisk surface
•External endpoints declared — 10 distinct host(s) · eliasdabbas-advertools-59dc2be/advertools/spider.pyrisk surface
•External endpoints declared — 3 distinct host(s) · eliasdabbas-advertools-59dc2be/docs/_static/sitemap_testing/image_sitemap.xmlrisk surface
•External endpoints declared — 16 distinct host(s) · eliasdabbas-advertools-59dc2be/tests/data/crawl_testing/test_content.htmlrisk surface
•External endpoints declared — 69 distinct host(s) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/crawl1.logrisk surface
•External endpoints declared — 31 distinct host(s) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/crawl2.logrisk surface
•External endpoints declared — 34 distinct host(s) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/crawl3.logrisk surface
⚠LLM07System Prompt Leakagemedium
Secrets, internal hosts or proprietary logic exposed in shipped prompts.
•Internal host / private infrastructure reference — shipped content references a private IP range or internal-only host · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/apache_error.log (CWE-200)risk surface
⚠LLM01Prompt Injectionlow
Adversarial instructions embedded in an artifact that hijack a downstream LLM.
•Zero-width characters — 41 hidden characters · eliasdabbas-advertools-59dc2be/advertools/stopwords.pyrisk surface
§LLM09MisinformationGovernance
Artifacts designed to produce false/deceptive output.
Detectable only by runtime behavioral evaluation; addressed via responsible-use attestation.
◷LLM10Unbounded ConsumptionRuntime-enforced
Unbounded loops/recursion causing DoS or runaway cost.
Enforced at runtime by the gateway (rate limits + spend caps + size caps); static check flags unbounded loops.
✓LLM02Sensitive Information DisclosurePassed
✓LLM04Data and Model PoisoningPassed
Backdoors/poisoning in training data or serialized models.
Behavioral poisoning needs model execution; static check covers unsafe serialization + dataset skew only.
✓LLM08Vector and Embedding WeaknessesPassed
PII or plaintext source leakage in embedding/vector exports.
Embedding inversion/poisoning is largely runtime; static check covers PII in vector exports.
OWASP Machine Learning Security Top 10
⚠ML06AI Supply Chainhigh
Compromised PyPI/npm packages, typosquats, unsafe serialized models.
•Vulnerable dependencies — 22 known vulnerabilities in: pip@9.0.3, wheel@0.9.7, filelock@3.19.1, idna@3.9.0 (CWE-1395)known CVE · -12 pts
⚠ML09Output Integritymedium
Middleware tampering with model outputs in transit.
Gateway enforces TLS + response integrity; static check flags output-rewriting code.
•Suspicious code patterns — OS command execution · eliasdabbas-advertools-59dc2be/advertools/header_spider.py (CWE-78)risk surface
•Suspicious code patterns — OS command execution; dynamic code execution · eliasdabbas-advertools-59dc2be/advertools/spider.py (CWE-78)risk surface
•Suspicious code patterns — dynamic code execution · eliasdabbas-advertools-59dc2be/advertools/twitter.py (CWE-95)risk surface
§ML01Input Manipulation (Adversarial)Governance
Models vulnerable to adversarial perturbations.
Requires runtime robustness evaluation; addressed via publisher robustness attestation.
§ML03Model InversionGovernance
Training data reconstructable from a model's outputs.
Runtime/evaluation property; addressed via model-card data-provenance + DP attestation.
§ML04Membership InferenceGovernance
Determining whether a record was in the training set.
Runtime/evaluation property; addressed via overfitting disclosure + DP attestation.
§ML08Model SkewingGovernance
Models trained on skewed data producing biased output.
Requires fairness evaluation; addressed via model-card bias/limitations disclosure.
✓ML02Data PoisoningPassed
Poisoned training datasets with triggers or anomalous distributions.
Static check covers trigger phrasing, PII and label skew; full poisoning detection is runtime.
✓ML05Model TheftPassed
Unlicensed re-distribution / license-incompatible derivatives.
Static check verifies license declaration; extraction throttling is runtime.
✓ML07Transfer Learning AttackPassed
Backdoored base models / LoRA adapters propagating to derivatives.
Backdoor detection needs behavioral probing; static check covers unsafe serialization + provenance.
✓ML10Model Poisoning (Weights)Passed
Tampered model weight files; integrity must be verifiable.
Static check enforces safe formats + records a content hash for downstream verification.
Other findings (18) · hygiene / uncategorized
•Unrecognized file type — '.gitignore' is not on the allowlist · eliasdabbas-advertools-59dc2be/.gitignorerisk surface
•Unrecognized file type — '.?' is not on the allowlist · eliasdabbas-advertools-59dc2be/LICENSErisk surface
•Suspicious network references — URL shortener (10 URLs) · eliasdabbas-advertools-59dc2be/advertools/cli.pyrisk surface
•Suspicious network references — raw IP URL, URL shortener (37 URLs) · eliasdabbas-advertools-59dc2be/advertools/code_recipes/spider_strategies.pyrisk surface
•Possible obfuscation — very long lines paired with a decode/execute sink · eliasdabbas-advertools-59dc2be/advertools/emoji.py (CWE-506)risk surface
•Suspicious network references — URL shortener (21 URLs) · eliasdabbas-advertools-59dc2be/advertools/extract.pyrisk surface
•Suspicious network references — URL shortener (6 URLs) · eliasdabbas-advertools-59dc2be/advertools/word_frequency.pyrisk surface
•Disallowed file type — '.bat' executables are not permitted · eliasdabbas-advertools-59dc2be/docs/make.bat (CWE-434)risk surface
•Unrecognized file type — '.cfg' is not on the allowlist · eliasdabbas-advertools-59dc2be/setup.cfgrisk surface
•Unrecognized file type — '.coverage' is not on the allowlist · eliasdabbas-advertools-59dc2be/tests/.coveragerisk surface
•Unrecognized file type — '.log' is not on the allowlist · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/apache_error.logrisk surface
•Suspicious network references — raw IP URL (76 URLs) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/combined_latin1_enc.logrisk surface
•Suspicious network references — URL shortener (494 URLs) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/crawl1.logrisk surface
•Suspicious network references — suspicious TLD (197 URLs) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/crawl2.logrisk surface
•Suspicious network references — raw IP URL (111 URLs) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/dreamhost_apache_access.logrisk surface
•Suspicious network references — raw IP URL, URL shortener (516 URLs) · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/nginx_access.logrisk surface
•Opaque binary content — non-text payload not statically analyzable · eliasdabbas-advertools-59dc2be/tests/data/logs_testing/nginx_error.logrisk surface
•Unrecognized file type — '.ini' is not on the allowlist · eliasdabbas-advertools-59dc2be/tox.inirisk surface
✔ verified source · pinned eliasdabbas-advertools-59dc2be
Check against a policy

The same gate an agent runs before installing (POST /api/v1/trust/advertools-seo-sem-toolkit/check). Click a policy:

Consume advertools — SEO & SEM Productivity Toolkit programmatically. Authenticate with an API key or session — see Authorize an agent.

# Agents: CHECK BEFORE YOU INSTALL (no auth) — score, grade, level, capability manifest
curl https://ai-supply.store/api/v1/trust/advertools-seo-sem-toolkit

# Gate against your org policy (returns { pass, violations })
curl -X POST https://ai-supply.store/api/v1/trust/advertools-seo-sem-toolkit/check \
  -H "Content-Type: application/json" \
  -d '{"minGrade":"B","denyPermissions":["shell"],"denyUnknownEgress":true}'

# CLI
npx ai-supply add advertools-seo-sem-toolkit

# REST (install → download)
curl -X POST https://ai-supply.store/api/v1/listings/advertools-seo-sem-toolkit/install \
  -H "Authorization: Bearer $AIM_KEY"

# MCP tool
install_listing({ "slug": "advertools-seo-sem-toolkit" })
OpenAPI spec →
vlatest
! Security: Review · 881mo ago

Curated mirror — latest upstream source. See the repository for tagged releases.

Sign in and install this listing to leave a review.

More from @ai-supply

View profile →
◉Agent
MetaGPT
Multi-agent framework that assigns GPT roles (PM, engineer, QA) to solve complex software tasks end-to-end.
↓ 1.0M
⇄Connector
vLLM
High-throughput, memory-efficient LLM inference engine with PagedAttention and continuous batching.
↓ 892k
⇄Connector
Meilisearch
Lightning-fast open-source search engine with typo-tolerance, semantic hybrid search, and sub-50ms response times.
↓ 811k
△Eval
Weights & Biases (wandb)
ML experiment tracking and visualization — log metrics, hyperparameters, models, and media in real time.
↓ 784k
ai-supply.store

Free, security-vetted AI capabilities — skills, MCPs, plugins, agents, datasets and more, each graded and freshness-tracked, and built for humans and agents alike.

api · v3.1status · all green
Contact
support@ai-supply.storesecurity@ai-supply.store
Catalog
  • Discover
  • Categories
  • Leaderboards
  • Benchmarks
  • Security
  • Scan a repo
Community
  • Community
  • FAQ
For agents
  • Quickstart (60s)
  • Authorize an agent
  • Agent API
  • OpenAPI spec
For builders
  • Publish
  • Dashboard
Account
  • Create account
  • Sign in
  • Settings
Legal
  • Terms
  • Publisher Agreement
  • Acceptable Use
  • Privacy