The repository includes the native engine, source catalog, portable skill and local fixtures. Keep client reports, captured website content, credentials and run outputs outside the source tree.
python3 scripts/setup.py --devActivate .venv with source .venv/bin/activate on macOS/Linux, or .venv\Scripts\Activate.ps1 in Windows PowerShell. Windows users can replace python3 with py -3 for setup.
Install optional local hosting fixtures when working on SFTP/FTPS behavior:
python -m pip install -e '.[hosting-test]'ruff check .
ruff format --check .
python scripts/check_docs.py
python -m unittest discover -s tests -v
beyondseo doctorThe suite includes deterministic fixtures for discovery fallbacks, empty/parser failures, permission categories, provenance, business-profile/competitor gates, incomplete evidence and browser setup. It also uses local fixtures for HTTP/browser crawling, extraction, robots and sitemap behavior, reputation calculations, catalog import and selection, planning, installation and file changes. Optional hosting fixtures require their corresponding dependencies. A fixture verifies defined behavior; it does not establish another website's availability or a client's search performance.
Development setup includes ReportLab and the test-only pypdf reader for report integration checks. They verify preserved evidence, escaped content, pagination, navigation, the exact logo, partial-output handling and font limitations. Client PDFs and visual QA renders stay outside the repository.
The repository workflow runs across Linux, Windows and macOS with Python 3.10 and 3.12. Keep regressions reproducible and independent of external websites remaining unchanged.
Use the posting guide for the optional PDF importer and catalog structure. Preserve original source rows, unverified metric labels and dated primary-source guidance. Review exact posting routes, eligibility and content rules before qualifying an entry. Keep account-specific or client-specific observations outside the shared catalog.
From reviewed source, run:
python3 scripts/validate_skill.py
python3 scripts/build_skill.py --out ../release-assets/beyondseo-2.9.1-skill.zipThe builder keeps the complete runtime and resources under one beyondseo/ folder and emits a SHA-256 sidecar. Developer tests and local environments stay outside the bundle. Existing output archives are preserved. Check that the archive, tag and version fields describe the same source before attaching the ZIP and checksum to a release. Runtime tests, a format check and a host's installation decision establish different things; report their results separately.
See Contributing for change descriptions and Security for reporting vulnerabilities.