SEO Master Agent
An open-source, multi-workflow SEO optimization tool that enforces structured data returns from LLMs by designing prompts as type signatures, that is, JSON output contracts with fixed keys. It supports multiple LLM gateways and a variety of SEO tasks.
Timeline (last 90 days)
The core design of the GitHub project SEO Master Agent is to write prompts as type signatures, forcing the model to return pure JSON objects with fixed keys.
SEO Master Agent supports five SEO workflows: on-page optimization (onpage), off-page link building (offpage), Google Business Profile copy (gmb), content repurposing (content), and local GEO optimization (geo).
SEO Master Agent supports OpenAI, Anthropic, Gemini, GLM, and Ollama simultaneously through a multi-LLM gateway, with FastAPI on the backend, Next.js on the frontend, and asynchronous task execution.
SEO Master Agent defines TASK_TYPES in code as ("onpage", "offpage", "gmb", "content", "geo"), and each task type has corresponding required input fields.
When required inputs are missing, SEO Master Agent directly returns a 422 status code rather than letting the model guess the inputs.
SEO Master Agent's geo task prompt requires returning fixed keys such as geo_title, geo_meta_description, local_landmarks_to_mention, and localized_body_copy.
SEO Master Agent parses the model name prefix for routing, dispatching via LiteLLM to providers such as gpt, claude, gemini, zhipu/glm, or ollama.
SEO Master Agent's resolve_llm_config() function handles the model selection logic: the key in the single-request header takes priority, with environment variables as a fallback; the single-request key is used only in memory and is never persisted.
SEO Master Agent's README explicitly states that POST /api/settings/keys stores keys to local SQLite, and recommends using environment variables in production.
SEO Master Agent's task execution chain is: POST /api/execute validates the input parameters, then enqueues and returns 202 with a task_id; a background worker fetches the site (required for onpage and content tasks), builds the prompt, and calls the LLM; the ExecutionLog status goes from pending to running to success or error; GET /api/tasks/{task_id} returns the structured result.
3 more timeline events
All Facts (13)
The core design of the GitHub project SEO Master Agent is to write prompts as type signatures, forcing the model to return pure JSON objects with fixed keys.
50%UnverifiedSEO Master Agent supports five SEO workflows: on-page optimization (onpage), off-page link building (offpage), Google Business Profile copy (gmb), content repurposing (content), and local GEO optimization (geo).
50%UnverifiedSEO Master Agent supports OpenAI, Anthropic, Gemini, GLM, and Ollama simultaneously through a multi-LLM gateway, with FastAPI on the backend, Next.js on the frontend, and asynchronous task execution.
50%UnverifiedSEO Master Agent defines TASK_TYPES in code as ("onpage", "offpage", "gmb", "content", "geo"), and each task type has corresponding required input fields.
50%UnverifiedWhen required inputs are missing, SEO Master Agent directly returns a 422 status code rather than letting the model guess the inputs.
50%UnverifiedSEO Master Agent's geo task prompt requires returning fixed keys such as geo_title, geo_meta_description, local_landmarks_to_mention, and localized_body_copy.
50%UnverifiedSEO Master Agent parses the model name prefix for routing, dispatching via LiteLLM to providers such as gpt, claude, gemini, zhipu/glm, or ollama.
50%UnverifiedSEO Master Agent's resolve_llm_config() function handles the model selection logic: the key in the single-request header takes priority, with environment variables as a fallback; the single-request key is used only in memory and is never persisted.
50%UnverifiedSEO Master Agent's README explicitly states that POST /api/settings/keys stores keys to local SQLite, and recommends using environment variables in production.
50%UnverifiedSEO Master Agent's task execution chain is: POST /api/execute validates the input parameters, then enqueues and returns 202 with a task_id; a background worker fetches the site (required for onpage and content tasks), builds the prompt, and calls the LLM; the ExecutionLog status goes from pending to running to success or error; GET /api/tasks/{task_id} returns the structured result.
50%UnverifiedSEO Master Agent's fetcher has SSRF protection, and X-API-Key authentication is fail-closed—without SEO_API_KEY the server refuses to start directly, and errors return structured JSON without exposing stack information.
50%UnverifiedSEO Master Agent's tests/smoke_test.py starts uvicorn itself on port 18099, runs in a closed environment stripped of inherited LLM keys, and asserts contracts such as no key returning 401, bad input returning 422, and a valid request obtaining a task_id.
50%UnverifiedThe SEO Master Agent author lists two known omissions: the repo description's "rank tracking" currently has no corresponding workflow; the GMB task only generates copy and does not actually publish to Google.
50%