agent-seo-engine 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - uses: actions/setup-python@v5
13
+ with:
14
+ python-version: "3.11"
15
+ cache: pip
16
+ - run: python -m pip install --upgrade pip
17
+ - run: pip install -e ".[dev]"
18
+ - run: python -m compileall -q src
19
+ - run: pytest
@@ -0,0 +1,57 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ release:
6
+ types: [published]
7
+
8
+ concurrency:
9
+ group: pypi-${{ github.ref }}
10
+ cancel-in-progress: false
11
+
12
+ jobs:
13
+ build:
14
+ name: Build distributions
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read
18
+ steps:
19
+ - name: Check out repository
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.12"
26
+
27
+ - name: Install build tooling
28
+ run: python -m pip install --upgrade pip build twine
29
+
30
+ - name: Build package
31
+ run: python -m build
32
+
33
+ - name: Check distributions
34
+ run: python -m twine check dist/*
35
+
36
+ - name: Upload distributions
37
+ uses: actions/upload-artifact@v4
38
+ with:
39
+ name: python-package-distributions
40
+ path: dist/
41
+
42
+ publish:
43
+ name: Publish package
44
+ needs: build
45
+ runs-on: ubuntu-latest
46
+ environment: pypi
47
+ permissions:
48
+ id-token: write
49
+ steps:
50
+ - name: Download distributions
51
+ uses: actions/download-artifact@v4
52
+ with:
53
+ name: python-package-distributions
54
+ path: dist/
55
+
56
+ - name: Publish to PyPI
57
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,12 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ .pytest_cache/
5
+ .mypy_cache/
6
+ .env
7
+ credentials/
8
+ .agent-data/
9
+ dist/
10
+ build/
11
+ *.egg-info/
12
+ .DS_Store
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 David Mosiah
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,127 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-seo-engine
3
+ Version: 0.1.0
4
+ Summary: Agent-first SEO quality, intent and opportunity engine with CLI and optional MCP server.
5
+ Project-URL: Homepage, https://github.com/davidmosiah/agent-seo-engine
6
+ Project-URL: Repository, https://github.com/davidmosiah/agent-seo-engine
7
+ Project-URL: Issues, https://github.com/davidmosiah/agent-seo-engine/issues
8
+ Author: David Mosiah
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: agent-tools,agentic-workflows,ai-agents,cli,content-ops,local-first,mcp,mcp-server,search-intent,seo
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
18
+ Classifier: Topic :: Text Processing :: Markup :: Markdown
19
+ Requires-Python: >=3.10
20
+ Provides-Extra: dev
21
+ Requires-Dist: pytest>=8.0; extra == 'dev'
22
+ Provides-Extra: mcp
23
+ Requires-Dist: mcp>=1.13.0; extra == 'mcp'
24
+ Description-Content-Type: text/markdown
25
+
26
+ # Agent SEO Engine
27
+
28
+ [![GitHub stars](https://img.shields.io/github/stars/davidmosiah/agent-seo-engine?style=flat-square&logo=github)](https://github.com/davidmosiah/agent-seo-engine/stargazers)
29
+ [![CI](https://github.com/davidmosiah/agent-seo-engine/actions/workflows/ci.yml/badge.svg)](https://github.com/davidmosiah/agent-seo-engine/actions/workflows/ci.yml)
30
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
31
+ [![Agent-first](https://img.shields.io/badge/agent--first-MCP-0ea5a3?style=flat-square)](https://github.com/davidmosiah/agent-seo-engine)
32
+
33
+ > If this agent-first tool helps your workflow, please star the repo. Stars make this agent-first tooling easier for other builders to discover and help Delx keep shipping open infrastructure.
34
+
35
+ Agent-first SEO scoring, search-intent detection and opportunity prioritization. It packages the useful parts of a production content pipeline into a clean local CLI plus an optional MCP server for Codex, Claude, Cursor, Hermes, OpenClaw and other agent runtimes.
36
+
37
+ Use it when an agent needs deterministic SEO checks before rewriting, refreshing or publishing content.
38
+
39
+ ## What It Does
40
+
41
+ - Classifies search intent: informational, navigational, transactional and commercial investigation
42
+ - Scores markdown articles for agent-readable SEO gaps
43
+ - Prioritizes GSC-style opportunities by impressions, position, CTR gap, conversions and commercial value
44
+ - Exposes `manifest`, `connection_status` and `privacy_audit` surfaces before content tools
45
+ - Runs locally by default with no required API keys
46
+
47
+ ## Install
48
+
49
+ ```bash
50
+ pipx install "git+https://github.com/davidmosiah/agent-seo-engine.git"
51
+ ```
52
+
53
+ With MCP support:
54
+
55
+ ```bash
56
+ pipx install "git+https://github.com/davidmosiah/agent-seo-engine.git#egg=agent-seo-engine[mcp]"
57
+ ```
58
+
59
+ PyPI release automation is configured with Trusted Publishing. See [docs/pypi-publishing.md](docs/pypi-publishing.md) for the one-time PyPI pending-publisher setup.
60
+
61
+ ## CLI
62
+
63
+ ```bash
64
+ agent-seo-engine manifest --client codex
65
+ agent-seo-engine doctor
66
+ agent-seo-engine privacy-audit
67
+ agent-seo-engine intent "best ai agent framework"
68
+ agent-seo-engine score --file examples/article.md --primary-keyword "ai agent testing"
69
+ agent-seo-engine opportunity --impressions 4200 --clicks 80 --position 12.4 --commercial-intent 0.8
70
+ ```
71
+
72
+ All commands return structured JSON by default. Use `--format markdown` for human review.
73
+
74
+ ## MCP
75
+
76
+ ```bash
77
+ agent-seo-mcp
78
+ ```
79
+
80
+ Hermes-style config:
81
+
82
+ ```yaml
83
+ mcp_servers:
84
+ agent_seo:
85
+ command: agent-seo-mcp
86
+ args: []
87
+ sampling:
88
+ enabled: false
89
+ ```
90
+
91
+ Recommended first calls:
92
+
93
+ 1. `agent_seo_connection_status`
94
+ 2. `agent_seo_privacy_audit`
95
+ 3. `agent_seo_score_content`
96
+
97
+ ## Agent Surfaces
98
+
99
+ | Tool | Purpose |
100
+ |---|---|
101
+ | `agent_seo_manifest` | Install/runtime guidance for agent clients |
102
+ | `agent_seo_connection_status` | Local/offline readiness and optional integration status |
103
+ | `agent_seo_privacy_audit` | Draft, analytics and credential boundaries |
104
+ | `agent_seo_detect_intent` | Search intent classification |
105
+ | `agent_seo_score_content` | Markdown quality checks with exact recommendations |
106
+ | `agent_seo_prioritize_opportunity` | GSC-style opportunity scoring |
107
+
108
+ ## Copy-Paste Agent Prompt
109
+
110
+ ```text
111
+ Use agent-seo-engine. First call agent_seo_connection_status and agent_seo_privacy_audit.
112
+ Score the draft, then propose only edits tied to failed checks or high-impact opportunities.
113
+ ```
114
+
115
+ ## Agent Contract
116
+
117
+ Agents should not guess whether a draft is ready. They should call the scoring tool, read exact failed checks, then propose focused edits. The engine is intentionally deterministic and local so repeated agent runs can compare output over time.
118
+
119
+ ## Development
120
+
121
+ ```bash
122
+ python3 -m venv .venv
123
+ . .venv/bin/activate
124
+ pip install -e ".[dev]"
125
+ pytest
126
+ python -m compileall -q src
127
+ ```
@@ -0,0 +1,102 @@
1
+ # Agent SEO Engine
2
+
3
+ [![GitHub stars](https://img.shields.io/github/stars/davidmosiah/agent-seo-engine?style=flat-square&logo=github)](https://github.com/davidmosiah/agent-seo-engine/stargazers)
4
+ [![CI](https://github.com/davidmosiah/agent-seo-engine/actions/workflows/ci.yml/badge.svg)](https://github.com/davidmosiah/agent-seo-engine/actions/workflows/ci.yml)
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
6
+ [![Agent-first](https://img.shields.io/badge/agent--first-MCP-0ea5a3?style=flat-square)](https://github.com/davidmosiah/agent-seo-engine)
7
+
8
+ > If this agent-first tool helps your workflow, please star the repo. Stars make this agent-first tooling easier for other builders to discover and help Delx keep shipping open infrastructure.
9
+
10
+ Agent-first SEO scoring, search-intent detection and opportunity prioritization. It packages the useful parts of a production content pipeline into a clean local CLI plus an optional MCP server for Codex, Claude, Cursor, Hermes, OpenClaw and other agent runtimes.
11
+
12
+ Use it when an agent needs deterministic SEO checks before rewriting, refreshing or publishing content.
13
+
14
+ ## What It Does
15
+
16
+ - Classifies search intent: informational, navigational, transactional and commercial investigation
17
+ - Scores markdown articles for agent-readable SEO gaps
18
+ - Prioritizes GSC-style opportunities by impressions, position, CTR gap, conversions and commercial value
19
+ - Exposes `manifest`, `connection_status` and `privacy_audit` surfaces before content tools
20
+ - Runs locally by default with no required API keys
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ pipx install "git+https://github.com/davidmosiah/agent-seo-engine.git"
26
+ ```
27
+
28
+ With MCP support:
29
+
30
+ ```bash
31
+ pipx install "git+https://github.com/davidmosiah/agent-seo-engine.git#egg=agent-seo-engine[mcp]"
32
+ ```
33
+
34
+ PyPI release automation is configured with Trusted Publishing. See [docs/pypi-publishing.md](docs/pypi-publishing.md) for the one-time PyPI pending-publisher setup.
35
+
36
+ ## CLI
37
+
38
+ ```bash
39
+ agent-seo-engine manifest --client codex
40
+ agent-seo-engine doctor
41
+ agent-seo-engine privacy-audit
42
+ agent-seo-engine intent "best ai agent framework"
43
+ agent-seo-engine score --file examples/article.md --primary-keyword "ai agent testing"
44
+ agent-seo-engine opportunity --impressions 4200 --clicks 80 --position 12.4 --commercial-intent 0.8
45
+ ```
46
+
47
+ All commands return structured JSON by default. Use `--format markdown` for human review.
48
+
49
+ ## MCP
50
+
51
+ ```bash
52
+ agent-seo-mcp
53
+ ```
54
+
55
+ Hermes-style config:
56
+
57
+ ```yaml
58
+ mcp_servers:
59
+ agent_seo:
60
+ command: agent-seo-mcp
61
+ args: []
62
+ sampling:
63
+ enabled: false
64
+ ```
65
+
66
+ Recommended first calls:
67
+
68
+ 1. `agent_seo_connection_status`
69
+ 2. `agent_seo_privacy_audit`
70
+ 3. `agent_seo_score_content`
71
+
72
+ ## Agent Surfaces
73
+
74
+ | Tool | Purpose |
75
+ |---|---|
76
+ | `agent_seo_manifest` | Install/runtime guidance for agent clients |
77
+ | `agent_seo_connection_status` | Local/offline readiness and optional integration status |
78
+ | `agent_seo_privacy_audit` | Draft, analytics and credential boundaries |
79
+ | `agent_seo_detect_intent` | Search intent classification |
80
+ | `agent_seo_score_content` | Markdown quality checks with exact recommendations |
81
+ | `agent_seo_prioritize_opportunity` | GSC-style opportunity scoring |
82
+
83
+ ## Copy-Paste Agent Prompt
84
+
85
+ ```text
86
+ Use agent-seo-engine. First call agent_seo_connection_status and agent_seo_privacy_audit.
87
+ Score the draft, then propose only edits tied to failed checks or high-impact opportunities.
88
+ ```
89
+
90
+ ## Agent Contract
91
+
92
+ Agents should not guess whether a draft is ready. They should call the scoring tool, read exact failed checks, then propose focused edits. The engine is intentionally deterministic and local so repeated agent runs can compare output over time.
93
+
94
+ ## Development
95
+
96
+ ```bash
97
+ python3 -m venv .venv
98
+ . .venv/bin/activate
99
+ pip install -e ".[dev]"
100
+ pytest
101
+ python -m compileall -q src
102
+ ```
@@ -0,0 +1,3 @@
1
+ # Security Policy
2
+
3
+ Do not include unpublished drafts, analytics exports, credentials or customer data in issues. The engine runs locally by default; optional integrations should be treated as explicit user-approved data sharing.
@@ -0,0 +1,22 @@
1
+ # PyPI publishing
2
+
3
+ This package is configured for PyPI Trusted Publishing through GitHub Actions.
4
+ No long-lived PyPI token is required in GitHub secrets or local config.
5
+
6
+ ## One-time PyPI setup
7
+
8
+ Create a pending GitHub publisher in PyPI account settings:
9
+
10
+ - PyPI project name: `agent-seo-engine`
11
+ - Owner: `davidmosiah`
12
+ - Repository name: `agent-seo-engine`
13
+ - Workflow name: `pypi.yml`
14
+ - Environment name: `pypi`
15
+
16
+ PyPI docs:
17
+
18
+ - Pending publishers: https://docs.pypi.org/trusted-publishers/creating-a-project-through-oidc/
19
+ - Publishing workflow: https://docs.pypi.org/trusted-publishers/using-a-publisher/
20
+
21
+ After the pending publisher exists, run the `Publish to PyPI` GitHub Actions
22
+ workflow manually or publish a GitHub release.
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: AI Agent Testing
3
+ description: A practical checklist for testing AI agents before release.
4
+ keywords:
5
+ - ai agent testing
6
+ ---
7
+
8
+ # AI Agent Testing
9
+
10
+ AI agent testing catches tool failures, missing context and unsafe writes before users depend on the workflow.
11
+
12
+ ## Readiness
13
+
14
+ Start with deterministic checks for configuration, permissions and expected tool availability.
15
+
16
+ ## Behavior
17
+
18
+ Run the same prompt against known fixtures and compare structured output.
19
+
20
+ ## Release
21
+
22
+ Keep a short manual review step for destructive actions and account-level changes.
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "agent_seo": {
4
+ "command": "agent-seo-mcp",
5
+ "args": []
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,6 @@
1
+ mcp_servers:
2
+ agent_seo:
3
+ command: agent-seo-mcp
4
+ args: []
5
+ sampling:
6
+ enabled: false
@@ -0,0 +1,19 @@
1
+ # Agent SEO Engine
2
+
3
+ Agent-first SEO scoring, search-intent detection and opportunity prioritization with CLI and optional MCP server.
4
+
5
+ Repository: https://github.com/davidmosiah/agent-seo-engine
6
+ Install: pipx install "git+https://github.com/davidmosiah/agent-seo-engine.git"
7
+ MCP command: agent-seo-mcp
8
+
9
+ Core tools:
10
+ - agent_seo_manifest
11
+ - agent_seo_connection_status
12
+ - agent_seo_privacy_audit
13
+ - agent_seo_detect_intent
14
+ - agent_seo_score_content
15
+ - agent_seo_prioritize_opportunity
16
+
17
+ Safety:
18
+ - Runs locally by default.
19
+ - Drafts and analytics exports should stay local unless explicitly shared.
@@ -0,0 +1,40 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.26"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "agent-seo-engine"
7
+ version = "0.1.0"
8
+ description = "Agent-first SEO quality, intent and opportunity engine with CLI and optional MCP server."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ authors = [{ name = "David Mosiah" }]
13
+ keywords = ["ai-agents", "agent-tools", "agentic-workflows", "seo", "mcp", "mcp-server", "content-ops", "search-intent", "local-first", "cli"]
14
+ dependencies = []
15
+ classifiers = [
16
+ "Development Status :: 3 - Alpha",
17
+ "Intended Audience :: Developers",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3 :: Only",
21
+ "Topic :: Internet :: WWW/HTTP :: Indexing/Search",
22
+ "Topic :: Text Processing :: Markup :: Markdown",
23
+ ]
24
+
25
+ [project.optional-dependencies]
26
+ mcp = ["mcp>=1.13.0"]
27
+ dev = ["pytest>=8.0"]
28
+
29
+ [project.scripts]
30
+ agent-seo-engine = "agent_seo_engine.cli:main"
31
+ agent-seo-mcp = "agent_seo_engine.mcp_server:main"
32
+
33
+ [project.urls]
34
+ Homepage = "https://github.com/davidmosiah/agent-seo-engine"
35
+ Repository = "https://github.com/davidmosiah/agent-seo-engine"
36
+ Issues = "https://github.com/davidmosiah/agent-seo-engine/issues"
37
+
38
+ [tool.pytest.ini_options]
39
+ pythonpath = ["src"]
40
+ testpaths = ["tests"]
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.davidmosiah/agent-seo-engine",
4
+ "description": "Agent-first local SEO quality, intent and opportunity engine with CLI and optional MCP server.",
5
+ "status": "active",
6
+ "repository": {
7
+ "url": "https://github.com/davidmosiah/agent-seo-engine",
8
+ "source": "github"
9
+ },
10
+ "version": "0.1.0",
11
+ "packages": [
12
+ {
13
+ "registryType": "pypi",
14
+ "identifier": "agent-seo-engine",
15
+ "version": "0.1.0",
16
+ "transport": {
17
+ "type": "stdio"
18
+ },
19
+ "environmentVariables": []
20
+ }
21
+ ],
22
+ "remotes": [],
23
+ "websiteUrl": "https://github.com/davidmosiah/agent-seo-engine"
24
+ }
@@ -0,0 +1,13 @@
1
+ """Agent-first SEO analysis toolkit."""
2
+
3
+ from .agent import build_agent_manifest, build_connection_status, build_privacy_audit
4
+ from .intent import SearchIntentAnalyzer
5
+ from .quality import score_markdown
6
+
7
+ __all__ = [
8
+ "SearchIntentAnalyzer",
9
+ "build_agent_manifest",
10
+ "build_connection_status",
11
+ "build_privacy_audit",
12
+ "score_markdown",
13
+ ]
@@ -0,0 +1,3 @@
1
+ from .cli import main
2
+
3
+ raise SystemExit(main())
@@ -0,0 +1,94 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+
5
+ SUPPORTED_CLIENTS = ["generic", "claude", "codex", "cursor", "windsurf", "hermes", "openclaw"]
6
+
7
+
8
+ def _safe_client(client: str = "generic") -> str:
9
+ return client if client in SUPPORTED_CLIENTS else "generic"
10
+
11
+
12
+ def _present(env: Mapping[str, str], key: str) -> bool:
13
+ return bool(str(env.get(key, "")).strip())
14
+
15
+
16
+ def build_agent_manifest(client: str = "generic") -> dict:
17
+ return {
18
+ "project": "agent-seo-engine",
19
+ "mcp_name": "io.github.davidmosiah/agent-seo-engine",
20
+ "client": _safe_client(client),
21
+ "package": {
22
+ "pip": "pipx install agent-seo-engine[mcp]",
23
+ "cli": "agent-seo-engine",
24
+ "mcp": "agent-seo-mcp",
25
+ },
26
+ "supported_clients": SUPPORTED_CLIENTS,
27
+ "standard_tools": [
28
+ "agent_seo_manifest",
29
+ "agent_seo_connection_status",
30
+ "agent_seo_privacy_audit",
31
+ "agent_seo_detect_intent",
32
+ "agent_seo_score_content",
33
+ "agent_seo_prioritize_opportunity",
34
+ ],
35
+ "recommended_first_calls": ["agent_seo_connection_status", "agent_seo_privacy_audit"],
36
+ "default_mode": "local_offline",
37
+ "hermes": {
38
+ "config_path": "~/.hermes/config.yaml",
39
+ "tool_name_prefix": "mcp_agent_seo_",
40
+ "recommended_config": (
41
+ "mcp_servers:\n"
42
+ " agent_seo:\n"
43
+ " command: agent-seo-mcp\n"
44
+ " args: []\n"
45
+ " sampling:\n"
46
+ " enabled: false"
47
+ ),
48
+ },
49
+ "agent_rules": [
50
+ "Start with connection status before content operations.",
51
+ "Use local content paths or explicit text from the user.",
52
+ "Do not send drafts to analytics providers unless the user asks.",
53
+ "Return exact checks and next actions, not generic SEO advice.",
54
+ ],
55
+ }
56
+
57
+
58
+ def build_connection_status(env: Mapping[str, str] | None = None) -> dict:
59
+ env = env or {}
60
+ services = []
61
+ if _present(env, "GEMINI_API_KEY") or _present(env, "GOOGLE_API_KEY"):
62
+ services.append("gemini")
63
+ if _present(env, "GA4_PROPERTY_ID"):
64
+ services.append("ga4")
65
+ if _present(env, "GSC_SITE_URL"):
66
+ services.append("google_search_console")
67
+
68
+ return {
69
+ "ok": True,
70
+ "mode": "offline" if not services else "offline_plus_optional_integrations",
71
+ "external_services_configured": services,
72
+ "ready_for_content_scoring": True,
73
+ "ready_for_mcp": True,
74
+ "next_steps": [
75
+ "Run agent-seo-engine score --file <markdown> --primary-keyword <keyword>.",
76
+ "Use optional analytics environment only for reports that require it.",
77
+ ],
78
+ }
79
+
80
+
81
+ def build_privacy_audit() -> dict:
82
+ return {
83
+ "project": "agent-seo-engine",
84
+ "secrets_returned_to_agent": False,
85
+ "local_files_ignored": [".env", "credentials/", "node_modules/", ".agent-data/", "coverage/"],
86
+ "external_services": ["optional: Gemini", "optional: GA4", "optional: Google Search Console"],
87
+ "data_boundary": "Content scoring, intent detection and opportunity scoring run locally by default.",
88
+ "safety_rules": [
89
+ "Keep drafts local unless an optional integration is explicitly requested.",
90
+ "Do not commit credentials, analytics exports or unpublished content plans.",
91
+ "Prefer structured JSON output for agents and markdown only for human review.",
92
+ "Treat generated recommendations as editorial suggestions, not automatic publishing approval.",
93
+ ],
94
+ }