Codesala SEO Content Engine
Codesala SEO Content Engine is a free AI SEO plugin and AI content generator for WordPress. It combines keyword research, AI article writing, on-page SEO optimisation, schema markup and an auto-blog scheduler in one lightweight plugin — and it works on activation without any API key thanks to a built-in zero-config engine that composes articles from real Wikipedia summaries and Google News headlines, with linked citations.
Use it as your AI writer, auto blog plugin, keyword research tool, JSON-LD schema generator, and automated content scheduler — all from one admin screen. Compatible with Yoast SEO, Rank Math and All in One SEO.
Why use this AI SEO plugin?
- Free forever, no API key required. The built-in engine uses only public data sources — no signup, no credit card.
- Real source-backed content, not template fluff. Every generated article is built from real Wikipedia and Google News data with citation links — useful out of the box.
- Optional best-in-class AI providers. Plug in your own free or paid key from OpenRouter, Groq, Cloudflare Workers AI, Google Gemini, Mistral, OpenAI, or Anthropic Claude — auto-fallback handles rate-limits.
- 6 keyword research sources. Google Trends, Google Suggest, YouTube Suggest, Bing Suggest, Reddit and Wikipedia — all free.
- Schema markup that ranks. JSON-LD Article + FAQPage with safe
<script>-context escaping. - Auto blog scheduler with safety brakes. Daily budget, per-hour throttle, default draft status — protects you from spammy bursts.
- Compatible with leading SEO plugins. Auto-detects Yoast, Rank Math and All in One SEO. Native fallback if none is installed.
Full feature list
- AI content generator with multi-provider fallback chain.
- Keyword research from 6 free sources (Google Trends, Google Suggest, YouTube Suggest, Bing Suggest, Reddit, Wikipedia Pageviews).
- Smart keyword scoring — long-tail boost, source-weighted, used-keyword tracking.
- Source-backed article composer — pulls real Wikipedia summaries + Google News headlines with citation links, even when no LLM is configured.
- Optional AI providers — OpenRouter, Groq, Cloudflare Workers AI, Google Gemini, Mistral, OpenAI, Anthropic Claude. All keys user-supplied.
- Royalty-free images — optional Pexels / Unsplash with SEO-optimised ALT text.
- JSON-LD schema — Article + FAQPage, escaped safely with
JSON_HEX_TAG. - Yoast / Rank Math / AIOSEO compatibility — focus keyword, meta title and description auto-filled.
- Auto blog scheduler — WP-Cron driven, daily budget, per-hour throttle, default draft status.
- Internal linking — picks 3 related posts from your archive on every generation.
- Sitemap pings — Google + Bing notification on publish (optional).
- Google Indexing API support (optional, requires service-account JSON).
- Built-in analytics — views, top posts, top keywords. Cached, no GA needed.
AI providers supported
Provider Tier Why use it
Codesala built-in engine Free, no key Always-on Wikipedia + News engine
OpenRouter Free tier DeepSeek-V3, Llama 3.3 free models
Groq Free tier Fastest Llama 3.3 70B inference
Cloudflare Workers AI Free, 10k/day Llama, Mistral, Gemma
Google Gemini Free tier Gemini 1.5 Flash
Mistral AI Free tier Mistral Small / Medium
OpenAI Paid GPT-4o-mini, top-quality long form
Anthropic Paid Claude 3.5 Haiku / Sonnet
Realistic strategy
AI content is risky if you over-do it. Recommended:
- 5–10 high-quality posts/day, not 100.
- Long-tail, low-competition keywords.
- Default status is draft so you review before publishing.
External services
This plugin connects to the third-party services listed below. Connections to optional services (LLM providers, image providers, indexing) only happen when the site administrator explicitly configures their own API keys for those services.
Wikipedia & MediaWiki APIs (always-on, used by the built-in engine)
This plugin sends the focus keyword to Wikipedia’s REST and MediaWiki APIs to fetch the article summary and full plain-text extract used as factual source material in generated articles.
- What is sent: the focus keyword string and the resolved article title.
- When: each time a post is generated using the built-in engine.
- Service: Wikipedia / MediaWiki, operated by the Wikimedia Foundation.
- Terms of use: https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use
- Privacy policy: https://foundation.wikimedia.org/wiki/Policy:Privacy_policy
Wikimedia Pageviews API (when „Wikipedia Top“ keyword source is enabled)
Used to fetch the previous day’s most-viewed Wikipedia articles as a keyword source.
- What is sent: language code and the previous day’s date.
- When: when the keyword pool is refreshed.
- Service: Wikimedia Pageviews REST API.
- Terms of use: https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use
- Privacy policy: https://foundation.wikimedia.org/wiki/Policy:Privacy_policy
Google Trends RSS (when „Google Trends“ keyword source is enabled)
Used to fetch daily trending searches.
- What is sent: country code.
- When: when the keyword pool is refreshed.
- Service: Google Trends.
- Terms of use: https://policies.google.com/terms
- Privacy policy: https://policies.google.com/privacy
Google Search Suggest, YouTube Suggest, Google News RSS
Used to fetch keyword autocomplete suggestions, related questions for FAQs, and news article links used as factual source material.
- What is sent: keyword strings, language and country codes.
- When: when the keyword pool is refreshed and each time a post is generated.
- Service: Google.
- Terms of use: https://policies.google.com/terms
- Privacy policy: https://policies.google.com/privacy
Bing Suggest (when „Bing Suggest“ keyword source is enabled)
Used to fetch keyword autocomplete suggestions.
- What is sent: keyword strings.
- When: when the keyword pool is refreshed.
- Service: Microsoft Bing.
- Terms of use: https://www.microsoft.com/en-us/servicesagreement
- Privacy policy: https://privacy.microsoft.com/privacystatement
Reddit Public Listings (when „Reddit Trending“ keyword source is enabled)
Used to fetch top posts from r/popular as a keyword source.
- What is sent: nothing (public listing endpoint).
- When: when the keyword pool is refreshed.
- Service: Reddit.
- Terms of use: https://www.redditinc.com/policies/user-agreement
- Privacy policy: https://www.reddit.com/policies/privacy-policy
Pexels API (only when the user has entered a Pexels API key)
Used to fetch royalty-free images for generated posts.
- What is sent: the focus keyword and the user’s Pexels API key.
- When: each time a post is generated and image fetching is enabled with Pexels selected.
- Service: Pexels.
- Terms of use: https://www.pexels.com/terms-of-service/
- Privacy policy: https://www.pexels.com/privacy-policy/
Unsplash API (only when the user has entered an Unsplash access key)
Used to fetch royalty-free images for generated posts.
- What is sent: the focus keyword and the user’s Unsplash access key.
- When: each time a post is generated and image fetching is enabled with Unsplash selected.
- Service: Unsplash.
- Terms of use: https://unsplash.com/terms
- Privacy policy: https://unsplash.com/privacy
OpenRouter (only when the user has entered an OpenRouter API key)
Optional LLM provider used for generating article content.
- What is sent: the system prompt, the user prompt (containing the focus keyword), the user’s OpenRouter API key, the configured model name, and the site’s home URL as the HTTP-Referer header.
- When: each time a post is generated and OpenRouter is the active provider.
- Service: OpenRouter.
- Terms of use: https://openrouter.ai/terms
- Privacy policy: https://openrouter.ai/privacy
Cloudflare Workers AI (only when the user has entered Cloudflare credentials)
Optional LLM provider used for generating article content.
- What is sent: the system prompt, the user prompt (containing the focus keyword), the user’s Cloudflare account ID, API token, and the configured model name.
- When: each time a post is generated and Cloudflare is the active provider.
- Service: Cloudflare Workers AI.
- Terms of use: https://www.cloudflare.com/website-terms/
- Privacy policy: https://www.cloudflare.com/privacypolicy/
Groq (only when the user has entered a Groq API key)
Optional LLM provider used for generating article content.
- What is sent: the system prompt, the user prompt (containing the focus keyword), the user’s Groq API key, and the configured model name.
- When: each time a post is generated and Groq is the active provider.
- Service: Groq.
- Terms of use: https://groq.com/terms-of-use/
- Privacy policy: https://groq.com/privacy-policy/
Google Gemini (only when the user has entered a Gemini API key)
Optional LLM provider used for generating article content.
- What is sent: the system prompt, the user prompt (containing the focus keyword), the user’s Gemini API key, and the configured model name.
- When: each time a post is generated and Gemini is the active provider.
- Service: Google Generative Language API.
- Terms of use: https://ai.google.dev/gemini-api/terms
- Privacy policy: https://policies.google.com/privacy
Mistral AI (only when the user has entered a Mistral API key)
Optional LLM provider used for generating article content.
- What is sent: the system prompt, the user prompt (containing the focus keyword), the user’s Mistral API key, and the configured model name.
- When: each time a post is generated and Mistral is the active provider.
- Service: Mistral AI.
- Terms of use: https://mistral.ai/terms/
- Privacy policy: https://mistral.ai/privacy-policy/
OpenAI (only when the user has entered an OpenAI API key)
Optional LLM provider used for generating article content.
- What is sent: the system prompt, the user prompt (containing the focus keyword), the user’s OpenAI API key, and the configured model name.
- When: each time a post is generated and OpenAI is the active provider.
- Service: OpenAI.
- Terms of use: https://openai.com/policies/row-terms-of-use/
- Privacy policy: https://openai.com/policies/row-privacy-policy/
Anthropic Claude (only when the user has entered an Anthropic API key)
Optional LLM provider used for generating article content.
- What is sent: the system prompt, the user prompt (containing the focus keyword), the user’s Anthropic API key, and the configured model name.
- When: each time a post is generated and Anthropic is the active provider.
- Service: Anthropic.
- Terms of use: https://www.anthropic.com/legal/consumer-terms
- Privacy policy: https://www.anthropic.com/legal/privacy
Google Sitemap Ping (when „Auto ping Google“ is enabled)
Used to notify Google about updated sitemaps after publishing posts.
- What is sent: the public URL of the site’s sitemap.
- When: each time a post is published if „Auto ping Google“ is enabled.
- Service: Google.
- Terms of use: https://policies.google.com/terms
- Privacy policy: https://policies.google.com/privacy
Bing Sitemap Ping (when „Auto ping Bing“ is enabled)
Used to notify Bing about updated sitemaps after publishing posts.
- What is sent: the public URL of the site’s sitemap.
- When: each time a post is published if „Auto ping Bing“ is enabled.
- Service: Microsoft Bing.
- Terms of use: https://www.microsoft.com/en-us/servicesagreement
- Privacy policy: https://privacy.microsoft.com/privacystatement
Google Indexing API (only when enabled and a service-account JSON key is configured)
Used to submit individual URLs to Google’s indexing service for faster discovery.
- What is sent: the public URL of the published post, signed with the user’s Google service-account JWT (via Google’s OAuth 2.0 token endpoint).
- When: each time a post is published if „Submit to Google Indexing API“ is enabled.
- Service: Google Indexing API + Google OAuth 2.0.
- Terms of use: https://policies.google.com/terms
- Privacy policy: https://policies.google.com/privacy
Privacy
This plugin does not collect or transmit visitor personal data. Data sent to the third-party services listed above consists of: keyword strings entered or selected by the site administrator, language/country codes from settings, and (when applicable) the user’s own API keys passed to the corresponding provider. The plugin stores its own data locally in the WordPress options table and a custom wp_csrm_stats table (post id, event type, keyword, provider name, sanitized referer, timestamp). No IP addresses, no cookies, and no visitor identifiers are stored.
