Weekly scheduled agent that grows a product's organic traffic with programmatic SEO: it checks the product's GitHub repository out into its sandbox, discovers and validates keyword opportunities with DataForSEO, researches each target with the Parallel web search API, generates batches of SEO-optimized pages matching the repo's content conventions, and pushes them as a pull request for human review.
Programmatic SEO Agent is a scheduled eve agent that grows organic traffic by shipping weekly batches of SEO-optimized pages to your product's GitHub repository. Each run clones the repo defined by PSEO_GITHUB_REPO into a Vercel sandbox, studies your product and existing content conventions, and writes new pages that match the format already in the repo, from frontmatter fields to internal-link style.
You interact with it through a cron schedule (PSEO_WEEKLY_CRON, Mondays at 07:00 UTC by default) rather than a chat channel, and everything it produces arrives as a pull request on an idempotent pseo/<year>-w<week> branch. It never merges anything, never touches files outside the configured target directory, and re-running the same week updates the existing PR instead of opening a duplicate.
What makes it useful is that every page is backed by data: keyword opportunities come from the DataForSEO Labs and Google Ads endpoints, factual claims are grounded in Parallel web search excerpts with provenance, and a bundled programmatic-seo skill enforces a quality bar that drops thin doorway pages. A week with no keywords above the volume threshold is deliberately skipped, not padded.
Point the agent at your docs or marketing repo and let it build a validated set of product-vs-competitor and alternatives pages, each grounded in Parallel research and linked hub-and-spoke so authority consolidates instead of fragmenting.
For products with many integrations or personas, the agent enumerates permutations like product for persona or product with tool, validates each against real Google Ads volumes, and only writes pages for queries people actually search.
A small team gets up to 20 reviewed, data-backed pages per week as pull requests. The human review gate stays in place: you read the PR, edit or reject pages, and merge on your own terms.
Using the skill's playbook catalog, the agent can build glossary or how-to page sets around your domain's terminology, skipping weeks when nothing clears the volume bar rather than shipping index bloat.
Install with npx shadcn@latest add @evex/programmatic-seo-agent, copy .env.example into your eve app environment, and fill in the GitHub, DataForSEO, and Parallel credentials. In development you can trigger a run immediately by POSTing to /eve/v1/dev/schedules/weekly-programmatic-seo instead of waiting for the cron.
No. The agent only writes new pages under PSEO_TARGET_DIR, commits to pseo/<year>-w<week> branches, and opens a pull request. It never pushes to the default branch and never merges; a human reviews every PR. Branch protection on the default branch remains your responsibility.
The agent is defined with zai/glm-5.2 in agent/agent.ts. Since the eve agent definition is a one-line defineAgent call installed into your codebase, you can swap the model by editing that file.
The run is skipped and reported as such. If nothing clears PSEO_MIN_SEARCH_VOLUME after deduplication and coverage checks against existing repo content, the agent stops without committing or opening a PR. Three bundled evals verify this behavior, including that volumes are never fabricated.
PSEO_MAX_PAGES_PER_RUN caps each batch at 20 pages by default, PSEO_MIN_SEARCH_VOLUME sets the demand floor at 30 monthly searches, PSEO_LOCATION_CODE and PSEO_LANGUAGE_CODE localize keyword data (defaults 2840 and en for the US), and PSEO_SEARCH_MODE plus PSEO_SEARCH_MAX_RESULTS tune Parallel research per keyword.
npx shadcn@latest add @evex/programmatic-seo-agent