{"id":375973,"date":"2026-09-30T09:32:49","date_gmt":"2026-09-30T09:32:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sourcedraft-ai-blog-writer-with-sources\/"},"modified":"2026-09-30T12:50:29","modified_gmt":"2026-09-30T12:50:29","slug":"luis-rita-ai-blog-writer","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/luis-rita-ai-blog-writer\/","author":18365445,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Luis Rita AI Blog Writer with Sources","header_author":"Luis Rita","header_description":"Creates editable, source-backed WordPress drafts with OpenAI, Claude, Gemini, or Grok.","assets_banners_color":"151f38","last_updated":"2026-09-30 12:50:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/sourcedwriter.com\/?utm_source=wordpress&utm_medium=plugin&utm_campaign=plugin-homepage","header_author_uri":"https:\/\/profiles.wordpress.org\/luismrita\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":51,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"luismrita","date":"2026-09-30 09:32:26","revision":3720817},"1.0.1":{"tag":"1.0.1","author":"luismrita","date":"2026-09-30 12:50:29","revision":3721261}},"upgrade_notice":{"1.0.1":"<p>Lets editors save writer profiles by linking them to existing Author accounts.<\/p>","1.0.0":"<p>Initial public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3720817,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3720817,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3720817,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3720817,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3720817,"resolution":"1","location":"assets","locale":"","width":1280,"height":760},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3720817,"resolution":"2","location":"assets","locale":"","width":1280,"height":1571},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3720817,"resolution":"3","location":"assets","locale":"","width":1280,"height":984},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3720817,"resolution":"4","location":"assets","locale":"","width":1280,"height":890},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3720817,"resolution":"5","location":"assets","locale":"","width":1280,"height":1275},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3721270,"resolution":"6","location":"assets","locale":"","width":1280,"height":1744},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3720817,"resolution":"7","location":"assets","locale":"","width":1280,"height":1580},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3720817,"resolution":"8","location":"assets","locale":"","width":1280,"height":760},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3720817,"resolution":"9","location":"assets","locale":"","width":1280,"height":844}},"screenshots":{"1":"Dashboard onboarding with the human-review warning and setup steps.","2":"New article brief: topic, workflow, audience and SEO fields, source URLs, and writer profile.","3":"Guided source review with extracted notes and retrieval dates.","4":"Outline review before drafting, editable section by section.","5":"Completed job: draft link, sources used, SEO suggestions, and provider usage.","6":"Writer profiles with linked WordPress authors and AI-assisted proposals.","7":"Settings: provider, model, API key and connection test, defaults, cost ceilings, and retention.","8":"Usage and cost: funding source, provider connection state, and estimated site cost for the month.","9":"The finished draft in the block editor, with the AI Blog Writer panel showing provenance, warnings, sources, and single-section rewrite."}},"plugin_section":[],"plugin_tags":[217063,210511,27498,17569,186],"plugin_category":[55],"plugin_contributors":[283637],"plugin_business_model":[],"class_list":["post-375973","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-content-generator","plugin_tags-ai-writer","plugin_tags-blog-writer","plugin_tags-citations","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-luismrita","plugin_committers-luismrita"],"banners":{"banner":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/banner-772x250.png?rev=3720817","banner_2x":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/banner-1544x500.png?rev=3720817","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/icon-128x128.png?rev=3720817","icon_2x":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/icon-256x256.png?rev=3720817","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-1.png?rev=3720817","caption":"Dashboard onboarding with the human-review warning and setup steps."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-2.png?rev=3720817","caption":"New article brief: topic, workflow, audience and SEO fields, source URLs, and writer profile."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-3.png?rev=3720817","caption":"Guided source review with extracted notes and retrieval dates."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-4.png?rev=3720817","caption":"Outline review before drafting, editable section by section."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-5.png?rev=3720817","caption":"Completed job: draft link, sources used, SEO suggestions, and provider usage."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-6.png?rev=3721270","caption":"Writer profiles with linked WordPress authors and AI-assisted proposals."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-7.png?rev=3720817","caption":"Settings: provider, model, API key and connection test, defaults, cost ceilings, and retention."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-8.png?rev=3720817","caption":"Usage and cost: funding source, provider connection state, and estimated site cost for the month."},{"src":"https:\/\/ps.w.org\/luis-rita-ai-blog-writer\/assets\/screenshot-9.png?rev=3720817","caption":"The finished draft in the block editor, with the AI Blog Writer panel showing provenance, warnings, sources, and single-section rewrite."}],"raw_content":"<!--section=description-->\n<p>Luis Rita AI Blog Writer with Sources is a draft-first AI blog writer. It creates normal WordPress block content from your brief and selected sources, and never publishes automatically.<\/p>\n\n<p>This plugin is bring-your-own-key only. There is no bundled account, subscription, or upsell.<\/p>\n\n<ul>\n<li>Use your own OpenAI, Anthropic, Google, or xAI API key and choose a GPT, Claude, Gemini, or Grok model.<\/li>\n<li>Choose a Delegated or Guided workflow, supply up to eight source URLs, and review the outline in Guided mode.<\/li>\n<li>Get a normal WordPress draft with sources, warnings, metadata suggestions, and provenance.<\/li>\n<li>Save writer profiles linked to WordPress author accounts.<\/li>\n<li>Track provider usage with an optional estimated cost ceiling.<\/li>\n<\/ul>\n\n<p>Generated content can contain errors, unsupported claims, or bias. Human review is required before publication. No ranking, traffic, accuracy, or legal-safety guarantee is made.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin sends data to two kinds of external destinations. Both happen only after an administrator configures an API key or a user supplies URLs. Nothing is sent during installation, activation, or idle time.<\/p>\n\n<p><strong>1. Your selected AI provider<\/strong><\/p>\n\n<p>Requests go to the provider matching the configured API key:<\/p>\n\n<ul>\n<li>OpenAI \u2014 <code>https:\/\/api.openai.com\/v1\/models<\/code>, <code>https:\/\/api.openai.com\/v1\/responses<\/code><\/li>\n<li>Anthropic \u2014 <code>https:\/\/api.anthropic.com\/v1\/models<\/code>, <code>https:\/\/api.anthropic.com\/v1\/messages<\/code><\/li>\n<li>Google \u2014 <code>https:\/\/generativelanguage.googleapis.com\/v1beta\/models<\/code>, <code>...\/v1beta\/models\/{model}:generateContent<\/code><\/li>\n<li>xAI \u2014 <code>https:\/\/api.x.ai\/v1\/models<\/code>, <code>https:\/\/api.x.ai\/v1\/chat\/completions<\/code><\/li>\n<\/ul>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li><strong>Test connection<\/strong> (Settings \u2192 Test connection, and automatically once when an administrator submits a new article brief): the API key and a request for the provider's model list. No content is sent.<\/li>\n<li><strong>Outline stage<\/strong> (after a job reaches the outline stage): the API key, selected model, your brief fields (topic, talking points, audience, search intent, keyword phrases, tone, length, language, market, call to action, include\/avoid notes), the selected writer profile, and extracted notes plus titles and URLs of the selected sources.<\/li>\n<li><strong>Draft stage<\/strong> (after the outline is generated in Delegated mode, or approved in Guided mode): the same brief, writer profile, and source notes, plus the approved outline.<\/li>\n<li><strong>Propose writer profile<\/strong> (Writer profiles \u2192 Propose editable profile): the API key, your prompt text, and any writing sample you paste.<\/li>\n<li><strong>Rewrite section<\/strong> (block editor sidebar): the API key, the section content, your instruction, and the source notes attached to that section.<\/li>\n<\/ul>\n\n<p>Never sent: WordPress credentials, other database contents, visitor data, or payment data. API keys stay server-side and are never exposed to the browser or the REST API.<\/p>\n\n<p>Provider terms and data policies apply to everything sent:<\/p>\n\n<ul>\n<li>https:\/\/openai.com\/policies\/terms-of-use\/<\/li>\n<li>https:\/\/openai.com\/policies\/privacy-policy\/<\/li>\n<li>https:\/\/developers.openai.com\/api\/docs\/guides\/your-data<\/li>\n<li>https:\/\/www.anthropic.com\/legal\/commercial-terms<\/li>\n<li>https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<li>https:\/\/ai.google.dev\/gemini-api\/terms<\/li>\n<li>https:\/\/policies.google.com\/privacy<\/li>\n<li>https:\/\/x.ai\/legal\/terms-of-service<\/li>\n<li>https:\/\/x.ai\/legal\/privacy-policy<\/li>\n<\/ul>\n\n<p><strong>2. Source URLs you supply<\/strong><\/p>\n\n<p>During research, your server fetches each URL in the brief with a plain HTTP request identified as <code>Luis-Rita-AI-Blog-Writer\/&lt;version&gt;; &lt;your site URL&gt;<\/code>. No brief content, key, or user data is sent. Private addresses are rejected, redirects are limited to three, and responses are capped at 1 MB.<\/p>\n\n<h3>Privacy and data retention<\/h3>\n\n<h4>What the plugin stores<\/h4>\n\n<p>In your own database only: jobs (brief, status, settings snapshot, owner, linked post), sources and extracted notes, generated outline and draft versions, usage and estimated cost per request, writer profiles, post meta on generated drafts (job ID, provenance, SEO suggestions, warnings), the risk acknowledgement in user meta, and settings plus encrypted API keys in options.<\/p>\n\n<p>Nothing is sent to the plugin author. The plugin contains no analytics, tracking, or phone-home code.<\/p>\n\n<h4>Retention<\/h4>\n\n<p>A daily WP-Cron event enforces the <strong>Prompt\/source\/log retention days<\/strong> setting (default 90). For completed jobs older than the cutoff it deletes sources and artifacts and clears the stored brief. Older usage rows are deleted. Generated posts are always kept.<\/p>\n\n<h4>Personal data export and erasure<\/h4>\n\n<p><strong>Tools \u2192 Export Personal Data<\/strong> returns a user's jobs and writer profiles. <strong>Tools \u2192 Erase Personal Data<\/strong> removes their profiles, sources, artifacts, generated-content post meta, and acknowledgement, and unlinks their jobs and usage. Posts are kept.<\/p>\n\n<h4>Uninstall<\/h4>\n\n<p>Uninstall always removes the plugin capabilities. Define <code>AIBCG_REMOVE_DATA_ON_UNINSTALL<\/code> as <code>true<\/code> first to also delete plugin tables, options, encrypted keys, transients, and metadata on every site. Generated posts and linked author accounts are always kept.<\/p>\n\n<h3>Troubleshooting<\/h3>\n\n<h4>Missing or invalid API key<\/h4>\n\n<p>Keys are stored per provider: after changing the provider, click <strong>Save Changes<\/strong>, then save its key. Keys defined in <code>wp-config.php<\/code> cannot be edited here. Saving keys requires Sodium.<\/p>\n\n<h4>Provider errors<\/h4>\n\n<pre><code>provider_http_401: key rejected. `provider_http_429`: rate limit or quota. `provider_unreachable`: the server cannot reach the provider over HTTPS. \"Selected model is unavailable\": choose another model and test the connection again.\n<\/code><\/pre>\n\n<h4>Jobs stay queued<\/h4>\n\n<p>WP-Cron is not running. Check <strong>AI Blog Writer \u2192 Diagnostics<\/strong>, schedule <code>wp-cron.php<\/code> from a server scheduler, then click <strong>Retry stage<\/strong>.<\/p>\n\n<h4>Source URLs fail<\/h4>\n\n<p>Sources must be public HTML or plain-text pages. Replace the URL and start a new job.<\/p>\n\n<h4>Reporting a problem<\/h4>\n\n<p>Download the JSON report from <strong>AI Blog Writer \u2192 Diagnostics<\/strong>. It excludes API keys, prompts, article text, and source notes.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Copy the plugin directory into <code>\/wp-content\/plugins\/<\/code> and activate it.<\/li>\n<li>Open <strong>AI Blog Writer \u2192 Settings<\/strong>.<\/li>\n<li>Choose a provider and model, enter its API key, save, and test the connection.<\/li>\n<li>Open <strong>New article<\/strong>, review the acknowledgement, and create a draft.<\/li>\n<\/ol>\n\n<p>For strongest secret isolation, define this in <code>wp-config.php<\/code> instead of saving a key:<\/p>\n\n<pre><code>define( 'AIBCG_OPENAI_API_KEY', 'your-key' );\n<\/code><\/pre>\n\n<p>For other providers, use <code>AIBCG_ANTHROPIC_API_KEY<\/code>, <code>AIBCG_GOOGLE_API_KEY<\/code>, or <code>AIBCG_XAI_API_KEY<\/code>.<\/p>\n\n<p>Saved keys are encrypted with Sodium using <code>AIBCG_ENCRYPTION_KEY<\/code>, or <code>AUTH_KEY<\/code> if undefined. Define a stable <code>AIBCG_ENCRYPTION_KEY<\/code> so rotating <code>AUTH_KEY<\/code> does not invalidate saved keys.<\/p>\n\n<p>Generation runs as resumable WP-Cron stages. See the FAQ for sites with low traffic or <code>DISABLE_WP_CRON<\/code>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20publish%20automatically%3F\"><h3>Does it publish automatically?<\/h3><\/dt>\n<dd><p>No. Every successful generation creates a draft.<\/p><\/dd>\n<dt id=\"does%20it%20search%20the%20web%20automatically%3F\"><h3>Does it search the web automatically?<\/h3><\/dt>\n<dd><p>No. The plugin extracts only the URLs supplied by the user.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20paid%20account%20with%20the%20plugin%20author%3F\"><h3>Do I need a paid account with the plugin author?<\/h3><\/dt>\n<dd><p>No. The plugin is bring-your-own-key only. You pay your chosen AI provider directly, and the plugin stores no billing data.<\/p><\/dd>\n<dt id=\"what%20remains%20if%20i%20deactivate%20it%3F\"><h3>What remains if I deactivate it?<\/h3><\/dt>\n<dd><p>Generated posts remain normal editable WordPress blocks. Deactivation does not delete posts or plugin data.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20low-traffic%20sites%20or%20with%20wp-cron%20disabled%3F\"><h3>Does it work on low-traffic sites or with WP-Cron disabled?<\/h3><\/dt>\n<dd><p>Yes. WP-Cron runs on site requests, and the job screen checks status every few seconds, so stages advance while it is open. If you leave, the job continues on the next site request. With <code>DISABLE_WP_CRON<\/code>, stages advance only when a server scheduler calls <code>wp-cron.php<\/code>; run it every minute. Administrators can also run one stage with <code>wp aibcg job run &lt;job-id&gt;<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20rank%20math%3F\"><h3>Does it work with Rank Math?<\/h3><\/dt>\n<dd><p>Yes. When Rank Math is active, the editor sidebar can apply the suggested meta title, meta description, and focus keyword to it. Values you already set in Rank Math are kept unless you choose to replace them.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support multisite?<\/h3><\/dt>\n<dd><p>Yes. Activate it per site or network-wide. Network activation sets up every site, including sites created later. Each site keeps its own API keys, settings, jobs, and writer profiles.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: editors can now save writer profiles. They link a profile to an existing Author account; administrators can also create a new author account or link an existing one.<\/li>\n<li>New author accounts get hyphenated logins instead of logins with spaces.<\/li>\n<li>Add Documentation and Support links to the plugin's row on the Plugins screen.<\/li>\n<li>Link the plugin's homepage to sourcedwriter.com.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Bring-your-own-key drafting with OpenAI, Anthropic, Google, and xAI models.<\/li>\n<li>Delegated and Guided workflows with user-supplied sources, outline review, and provenance.<\/li>\n<li>Writer profiles linked to WordPress author accounts.<\/li>\n<li>Optional Rank Math metadata integration.<\/li>\n<li>Usage tracking with optional estimated cost ceilings.<\/li>\n<li>Retention cleanup, privacy export and erasure, and opt-in data removal on uninstall.<\/li>\n<li>Single-site and network activation support.<\/li>\n<\/ul>","raw_excerpt":"Source-backed AI content generator for editable WordPress drafts using OpenAI, Claude, Gemini, or Grok.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=375973"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/luismrita"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375973"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375973"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375973"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375973"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375973"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}