[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83977":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":10,"trendingCount":15,"starSnapshotCount":15,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},83977,"AI-Website-Audit-CLI","Tools2U\u002FAI-Website-Audit-CLI","Tools2U","Open-source AI-powered website audit CLI using the OpenAI API for SEO, UX, accessibility, performance, trust, and content analysis.","",null,"Python",58,50,36,0,3,9,52.92,"MIT License",false,"main",true,[24,25,26,27,28,29,30,31,32,33,34,35,36],"accessibility","ai","audit","automation","cli","developer","openai","python","security","securityaudit","seo","ux","website-audit","2026-06-12 04:01:42","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fbanner.svg\" alt=\"AI Website Audit CLI\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">AI Website Audit CLI\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  Open-source CLI for deterministic website audits and OpenAI-powered strategy reports using the modern Responses API.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#quick-start\">Quick start\u003C\u002Fa> ·\n  \u003Ca href=\"#openai-integration\">OpenAI integration\u003C\u002Fa> ·\n  \u003Ca href=\"#features\">Features\u003C\u002Fa> ·\n  \u003Ca href=\"docs\u002Fcli-reference.md\">CLI reference\u003C\u002Fa> ·\n  \u003Ca href=\"docs\u002Fopenai-integration.md\">OpenAI docs\u003C\u002Fa> ·\n  \u003Ca href=\"CONTRIBUTING.md\">Contributing\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## What is this?\n\n`ai-website-audit-cli` turns a public website URL into a structured audit package:\n\n1. **Extraction JSON** with the facts the tool found on the page.\n2. **Deterministic audit JSON** with transparent rule-based checks and scores.\n3. **Markdown report** generated locally or with OpenAI.\n4. **Optional standalone HTML report** for sharing with clients or teams.\n5. **OpenAI response metadata JSON** when the AI report is used.\n\nThe project is intentionally practical: developers, freelancers, agencies, indie hackers, and small businesses can run a quick website audit from the terminal, inspect the raw evidence, and produce a prioritized improvement plan.\n\nThe tool is MIT-licensed and designed to be easy to extend with new extractors, checks, prompts, and report formats.\n\n## Why this exists\n\nMany AI audit tools jump directly from a URL to vague LLM advice. This project separates the process into layers:\n\n- **Facts first:** extract visible, inspectable data from public HTML.\n- **Rules second:** run deterministic checks that can be tested and improved.\n- **AI last:** use OpenAI to write a deeper report grounded in the saved evidence.\n\nThis makes the output easier to trust and easier for contributors to maintain.\n\n## OpenAI integration\n\nThe AI layer uses the **OpenAI Python SDK** and the **Responses API** through `client.responses.create(...)`.\n\nDefault configuration:\n\n```env\nOPENAI_MODEL=gpt-5.5\nOPENAI_MAX_OUTPUT_TOKENS=6000\nOPENAI_REASONING_EFFORT=medium\nOPENAI_STORE_RESPONSES=false\nOPENAI_SERVICE_TIER=auto\n```\n\nThe default model is `gpt-5.5` because this repository is meant to demonstrate a current production-style OpenAI integration. For cheaper or faster local testing, use:\n\n```bash\nai-website-audit audit https:\u002F\u002Fexample.com --model gpt-5.4-mini\n```\n\nThe OpenAI call lives in one clear file:\n\n```text\nsrc\u002Fai_website_audit\u002Fopenai_client.py\n```\n\nIt sends:\n\n- the extracted public website facts\n- deterministic scores and checks\n- the selected report language\n- strict system instructions to avoid hallucinated claims\n\nIt saves:\n\n- generated Markdown report\n- response ID when available\n- model used\n- API endpoint name\n- usage metadata when returned by the SDK\n- latency\n- reasoning effort\n- response storage setting\n\nPrivacy-first default: `OPENAI_STORE_RESPONSES=false`.\n\n## Features\n\n### Website extraction\n\n- public HTML fetch with configurable user agent\n- redirect-aware final URL capture\n- title and title length\n- meta description and length\n- canonical URL\n- meta robots\n- viewport tag\n- HTML language\n- H1\u002FH2\u002FH3 extraction\n- internal and external links\n- broken\u002Fempty\u002Fjavascript link counting\n- image count\n- missing alt text count\n- lazy-loaded image count\n- images without dimensions count\n- forms, inputs and buttons\n- likely CTA detection\n- Open Graph tags\n- Twitter\u002FX card tags\n- JSON-LD schema type detection\n- email and phone mentions\n- word count and paragraph count\n- readable text extraction\n- text-to-HTML ratio\n- HTML response size\n- initial fetch time\n- cookie\u002Fprivacy\u002Fterms\u002Fpricing\u002Ftestimonial\u002FFAQ signals\n- simple technology hints like WordPress, Shopify, Webflow, Next.js, React and GTM\n- optional conservative same-domain crawl\n\n### Deterministic audit\n\n- SEO score\n- content score\n- UX and conversion score\n- accessibility score\n- trust score\n- performance score\n- overall score\n- rule-based findings with severity\n- quick wins\n- risk flags\n- opportunities\n- multi-page duplicate title\u002Fmeta checks\n\n### AI-assisted report\n\n- OpenAI Responses API\n- current model support, including `gpt-5.5` and smaller model overrides\n- reasoning effort option for supported models\n- explicit max output token control\n- storage control with `--store-response\u002F--no-store-response`\n- English and German prompt templates\n- evidence-grounded report structure\n- developer implementation checklist\n\n### Output formats\n\n- Markdown report\n- HTML report\n- extraction JSON\n- deterministic audit JSON\n- OpenAI response metadata JSON\n\n## Quick start\n\n### 1. Clone and install\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyour-username\u002Fai-website-audit-cli.git\ncd ai-website-audit-cli\npython -m venv .venv\nsource .venv\u002Fbin\u002Factivate  # Windows: .venv\\\\Scripts\\\\activate\npip install -e .\n```\n\n### 2. Run without OpenAI\n\n```bash\nai-website-audit inspect https:\u002F\u002Fexample.com --html\n```\n\nThis produces a deterministic local audit and does not require an API key.\n\n### 3. Run with OpenAI\n\n```bash\ncp .env.example .env\n# Add OPENAI_API_KEY to .env\nai-website-audit audit https:\u002F\u002Fexample.com --language en --html\n```\n\n### 4. Use a smaller model for cheaper testing\n\n```bash\nai-website-audit audit https:\u002F\u002Fexample.com \\\n  --language en \\\n  --model gpt-5.4-mini \\\n  --max-output-tokens 4000 \\\n  --html\n```\n\n### 5. Generate a German report\n\n```bash\nai-website-audit audit https:\u002F\u002Fexample.com --language de --crawl --max-pages 3 --html\n```\n\n### 6. Show current config\n\n```bash\nai-website-audit show-config\n```\n\n## Example output files\n\n```text\nreports\u002F\n├── example-com-audit.md\n├── example-com-audit.html\n├── example-com-extraction.json\n├── example-com-deterministic-audit.json\n└── example-com-openai-response.json\n```\n\n## Example CLI output\n\n```text\nDeterministic Audit Score\n┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓\n┃ Area            ┃   Score ┃\n┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩\n│ Overall         │  84\u002F100 │\n│ SEO             │  86\u002F100 │\n│ Content         │  91\u002F100 │\n│ UX & Conversion │  82\u002F100 │\n│ Accessibility   │  88\u002F100 │\n│ Trust           │  76\u002F100 │\n│ Performance     │  85\u002F100 │\n└─────────────────┴─────────┘\n```\n\n## Configuration\n\nCreate `.env` from `.env.example`:\n\n```env\nOPENAI_API_KEY=sk-your-key\nOPENAI_MODEL=gpt-5.5\nOPENAI_MAX_OUTPUT_TOKENS=6000\nOPENAI_REASONING_EFFORT=medium\nOPENAI_STORE_RESPONSES=false\nOPENAI_SERVICE_TIER=auto\nOPENAI_TEMPERATURE=\nREQUEST_TIMEOUT_SECONDS=20\nUSER_AGENT=AIWebsiteAuditCLI\u002F1.0.0 (+https:\u002F\u002Fgithub.com\u002Fyour-username\u002Fai-website-audit-cli)\n```\n\n| Variable | Required | Default | Description |\n|---|---:|---|---|\n| `OPENAI_API_KEY` | only for AI reports | none | OpenAI API key |\n| `OPENAI_MODEL` | no | `gpt-5.5` | Model for AI reports |\n| `OPENAI_MAX_OUTPUT_TOKENS` | no | `6000` | Maximum output tokens |\n| `OPENAI_REASONING_EFFORT` | no | `medium` | Reasoning effort for supported models |\n| `OPENAI_STORE_RESPONSES` | no | `false` | Whether OpenAI may store response objects |\n| `OPENAI_SERVICE_TIER` | no | `auto` | OpenAI service tier |\n| `OPENAI_TEMPERATURE` | no | empty | Optional temperature override |\n| `REQUEST_TIMEOUT_SECONDS` | no | `20` | HTTP timeout for website fetches |\n| `USER_AGENT` | no | project UA | User agent used for public requests |\n\n## CLI commands\n\n### `inspect`\n\nLocal deterministic audit only:\n\n```bash\nai-website-audit inspect https:\u002F\u002Fexample.com --html\n```\n\n### `audit`\n\nFull audit. Uses OpenAI unless `--no-ai` is passed:\n\n```bash\nai-website-audit audit https:\u002F\u002Fexample.com --language en --html\n```\n\nImportant options:\n\n```bash\n--language en|de\n--model gpt-5.5\n--reasoning-effort low|medium|high|xhigh\n--max-output-tokens 6000\n--store-response \u002F --no-store-response\n--crawl\n--max-pages 5\n--no-ai\n--html\n--verbose\n```\n\n### `show-config`\n\n```bash\nai-website-audit show-config\n```\n\nPrints runtime config without exposing secrets.\n\n## Project structure\n\n```text\nai-website-audit-cli\u002F\n├── src\u002Fai_website_audit\u002F\n│   ├── analyzer.py       # deterministic checks and scoring\n│   ├── cli.py            # Typer CLI commands\n│   ├── config.py         # environment settings\n│   ├── extractor.py      # HTML extraction and crawler\n│   ├── models.py         # dataclasses for extraction\u002Faudit data\n│   ├── openai_client.py  # OpenAI Responses API integration\n│   ├── prompts.py        # prompt assembly\n│   ├── report.py         # Markdown\u002FHTML\u002FJSON outputs\n│   └── utils.py          # URL, slug and text helpers\n├── prompts\u002F              # English and German prompt templates\n├── docs\u002F                 # architecture, CLI, OpenAI integration, roadmap\n├── examples\u002F             # sample reports and JSON artifacts\n├── tests\u002F                # pytest test suite\n├── .github\u002F              # issue templates and CI workflow\n├── AGENTS.md             # instructions for Codex\u002FAI coding agents\n├── Dockerfile\n├── Makefile\n└── README.md\n```\n\n## Development\n\n```bash\nmake install\nmake test\nmake inspect\n```\n\nOr manually:\n\n```bash\npip install -e . pytest\npytest\n```\n\n## Docker\n\n```bash\ndocker build -t ai-website-audit-cli .\ndocker run --rm ai-website-audit-cli inspect https:\u002F\u002Fexample.com --html\n```\n\nFor OpenAI-powered audits:\n\n```bash\ndocker run --rm -e OPENAI_API_KEY=$OPENAI_API_KEY ai-website-audit-cli audit https:\u002F\u002Fexample.com --language en\n```\n\n## Roadmap\n\nSee [`docs\u002Froadmap.md`](docs\u002Froadmap.md). Good first issues include:\n\n- add Lighthouse JSON import\n- add sitemap.xml discovery\n- add robots.txt inspection\n- add broken-link verification mode\n- add CSV export\n- add JUnit\u002FSARIF output for CI pipelines\n- add more language prompt templates\n- add plugin-style custom checks\n\n## Contributing\n\nContributions are welcome. See [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\nGood contributions include:\n\n- new deterministic checks\n- better extraction logic\n- improved prompts\n- more tests\n- bug reports with reproducible URLs\n- documentation improvements\n- examples from real public websites\n\n## Security and privacy\n\nSee [`SECURITY.md`](SECURITY.md).\n\nImportant defaults:\n\n- the tool only fetches public URLs provided by the user\n- API keys are read from environment variables\n- `.env` is ignored by git\n- OpenAI response storage is disabled by default\n- raw extraction JSON is saved locally so users can inspect what was sent to the AI layer\n\n## License\n\nMIT. See [`LICENSE`](LICENSE).\n",2,"2026-06-11 04:11:57","CREATED_QUERY"]