{"id":394861,"date":"2026-10-31T13:25:02","date_gmt":"2026-10-31T13:25:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/xt4b-ai-blog-posts\/"},"modified":"2026-10-31T14:28:49","modified_gmt":"2026-10-31T14:28:49","slug":"xt4b-ai-blog-posts","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/xt4b-ai-blog-posts\/","author":23595086,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Xt4b - AI Blog Posts","header_author":"Xt4b","header_description":"Imports AI-written blog posts published by Xt4b into WordPress as native posts.","assets_banners_color":"9b9a99","last_updated":"2026-10-31 14:28:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/xt4b.com\/for-wordpress-sites","header_author_uri":"https:\/\/xt4b.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":165,"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":"lbcw","date":"2026-10-31 13:24:30","revision":3776889},"1.0.1":{"tag":"1.0.1","author":"lbcw","date":"2026-10-31 13:39:13","revision":3776905},"1.0.2":{"tag":"1.0.2","author":"lbcw","date":"2026-10-31 13:43:58","revision":3776919},"1.0.3":{"tag":"1.0.3","author":"lbcw","date":"2026-10-31 14:28:49","revision":3776975}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3776889,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3776889,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3776905,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3776905,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,529,87,186,289919],"plugin_category":[55,59],"plugin_contributors":[289920],"plugin_business_model":[],"class_list":["post-394861","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-content","plugin_tags-import","plugin_tags-seo","plugin_tags-xt4b","plugin_category-seo-and-marketing","plugin_category-utilities-and-tools","plugin_contributors-lbcw","plugin_committers-lbcw"],"banners":{"banner":"https:\/\/ps.w.org\/xt4b-ai-blog-posts\/assets\/banner-772x250.png?rev=3776905","banner_2x":"https:\/\/ps.w.org\/xt4b-ai-blog-posts\/assets\/banner-1544x500.png?rev=3776905","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/xt4b-ai-blog-posts\/assets\/icon-128x128.png?rev=3776889","icon_2x":"https:\/\/ps.w.org\/xt4b-ai-blog-posts\/assets\/icon-256x256.png?rev=3776889","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>The articles <a href=\"https:\/\/xt4b.com\">Xt4b<\/a> writes for your site, delivered into\nwp-admin as ordinary WordPress posts, with their images, meta title and\ndescription: on a schedule or on demand. They go through the same editorial\nprocess as everything else you publish.<\/p>\n\n<p>You need an Xt4b account to use it; without one there is nothing to import.\nConnect a domain there, let it find the searches your site does not answer and\nplan the posts for them, then paste your API key into the plugin's settings: it\nreads them over the <a href=\"https:\/\/xt4b.com\/docs\/api\">API<\/a>.<\/p>\n\n<p>The trial runs seven days without a card. The service is paid after that, at the\nrate on the <a href=\"https:\/\/xt4b.com\/pricing\">pricing page<\/a>. The plugin itself has no\npaid tier and no locked features: everything it does is in the code you installed.<\/p>\n\n<ul>\n<li><strong>Pull, never push.<\/strong> WordPress does not need to be reachable from the internet;\nthe API key is a read-only credential scoped to your Xt4b account.<\/li>\n<li><strong>Rerun without duplicates.<\/strong> Running a sync twice does not create a second copy\nof anything, and an article that has not changed is not rewritten.<\/li>\n<li><strong>Safe by default.<\/strong> New posts arrive as drafts, in the default category, with\nno publishing until you release them.<\/li>\n<li><strong>Reconciles unpublishes.<\/strong> If a post is no longer published in Xt4b, you choose\nwhether the local copy goes back to draft, goes to the trash, or is left alone.<\/li>\n<li><strong>No inbound endpoint, no file writes.<\/strong> Nothing outside WordPress is contacted\nexcept the Xt4b API, over HTTPS.<\/li>\n<\/ul>\n\n<h3>Legal<\/h3>\n\n<p>Use of Xt4b is governed by its published terms, and how it handles data is\ndescribed in its privacy policy:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/xt4b.com\/terms-of-service\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/xt4b.com\/privacy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In wp-admin open <strong>Plugins &gt; Add New<\/strong>, search for <strong>Xt4b - AI Blog Posts<\/strong>,\nthen press <strong>Install Now<\/strong> and <strong>Activate<\/strong>. Uploading the zip from the\nlisting under <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong> does the same thing.<\/li>\n<li>Open <strong>Xt4b<\/strong> in the admin menu.<\/li>\n<li>In your Xt4b dashboard, open <strong>Settings &gt; API<\/strong>, copy the key, paste it into\nthe plugin, and save.<\/li>\n<li>Press <strong>Test connection<\/strong>, then <strong>Sync now<\/strong>.<\/li>\n<\/ol>\n\n<p>The first sync imports every published post for the account (or for the site you\nfiltered to). Leave <em>Publish as<\/em> on <strong>Draft<\/strong> until you have looked at a few.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20xt4b%20account%3F\"><h3>Do I need an Xt4b account?<\/h3><\/dt>\n<dd><p>Yes. The plugin imports posts; Xt4b is what writes them. Without an account there\nis nothing to import and the plugin does nothing at all: it fetches nothing until\nyou paste an API key. You can read about the product and create an account at\nxt4b.com; the key then lives in your dashboard under <strong>Settings &gt; API<\/strong>.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>Xt4b dashboard &gt; Settings &gt; API. The key is read-only and can be regenerated\nat any time; regenerating revokes the previous one immediately.<\/p><\/dd>\n<dt id=\"does%20it%20publish%20automatically%3F\"><h3>Does it publish automatically?<\/h3><\/dt>\n<dd><p>Only if you choose <strong>Publish<\/strong> as the import status. The schedule decides when the\nplugin reads from Xt4b, not whether a post goes live.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20unpublish%20a%20post%20in%20xt4b%3F\"><h3>What happens when I unpublish a post in Xt4b?<\/h3><\/dt>\n<dd><p>A full sync notices that the post is no longer in the published list and applies\nyour choice: move the local post to draft, move it to the trash, or leave it alone.\nThe pass is skipped when Xt4b returns zero published posts, because an empty list\nis far more likely to be a misconfigured filter than a genuinely emptied account.<\/p><\/dd>\n<dt id=\"will%20it%20overwrite%20edits%20i%20made%20in%20wordpress%3F\"><h3>Will it overwrite edits I made in WordPress?<\/h3><\/dt>\n<dd><p>It overwrites the title, body, excerpt, slug and the Xt4b metadata when the\narticle's content changes in Xt4b. A post you have not edited locally is safe; a\npost you <em>have<\/em> edited will be replaced on the next content change. Set <em>Unpublished\nin Xt4b<\/em> to <strong>Leave the local post alone<\/strong> and unpublish in Xt4b if you want to take\nownership of a post permanently.<\/p><\/dd>\n<dt id=\"why%20is%20my%20cover%20image%20not%20the%20featured%20image%3F\"><h3>Why is my cover image not the featured image?<\/h3><\/dt>\n<dd><p>Check that <em>Featured image<\/em> is enabled in the <em>Import<\/em> section of the settings.\nXt4b sends the cover as a PNG URL, so it downloads into your media library like\nany other image. The one exception is a cover Xt4b could not host at publish\ntime: it arrives as an inline <code>data:<\/code> URI, WordPress cannot download that, and\nthe cover stays in post meta (<code>_xt4b_cover_image<\/code>) with the article body carrying\nits own copy of the image.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does it work with Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Yes. When <em>Meta tags<\/em> is enabled, <code>meta.title<\/code> and <code>meta.description<\/code> are written\nto the fields both plugins read.<\/p><\/dd>\n<dt id=\"what%20if%20i%20delete%20a%20post%20in%20wordpress%3F\"><h3>What if I delete a post in WordPress?<\/h3><\/dt>\n<dd><p>It stays deleted. The importer only restores copies it trashed itself when a post\nis unpublished in Xt4b (<em>Unpublished in Xt4b &gt; Move to trash<\/em>). A post you trashed\nin wp-admin is left alone, even if its content changes upstream.<\/p><\/dd>\n<dt id=\"why%20did%20a%20sync%20not%20run%20on%20time%3F\"><h3>Why did a sync not run on time?<\/h3><\/dt>\n<dd><p>WordPress runs scheduled events on page views. On a quiet site, use WP-CLI\n(<code>wp xt4b sync<\/code>) from a real system cron job, or press <strong>Sync now<\/strong>.<\/p><\/dd>\n<dt id=\"what%20does%20the%20plugin%20send%20to%20xt4b%3F\"><h3>What does the plugin send to Xt4b?<\/h3><\/dt>\n<dd><p>Two things, both to xt4b.com: the API key you paste in, as a bearer\ntoken, and, because the API answers differently per site, the site filter if you\nset one. The request also carries a\nUser-Agent identifying the plugin version and your site's home URL. Nothing else\nleaves WordPress: no post content, no user data, no telemetry. The response is\nyour own published posts.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Documentation only, no code changes.<\/li>\n<li>Description rewritten: it opens on what the plugin does, not on the hosted\nblog it is an alternative to.<\/li>\n<li>The idempotency bullet is reworded without internal field names.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Documentation only, no code changes.<\/li>\n<li>The description now says an Xt4b account is a paid service, and links to the\npricing page rather than quoting a price.<\/li>\n<li>Addresses in the readme are written as plain domains.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Documentation only, no code changes.<\/li>\n<li>Installation now points at the plugin directory: Plugins &gt; Add New, search\nfor the plugin, install and activate.<\/li>\n<li>The external-services block is replaced by a Legal section linking the terms\nand the privacy policy.<\/li>\n<li>Description shortened.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release. Imports the Xt4b v2 post shape, scheduled or on demand, with\nidempotent updates, unpublish reconciliation and WP-CLI commands.<\/li>\n<\/ul>","raw_excerpt":"Imports AI-written blog posts published by Xt4b into WordPress as native posts, on a schedule or on demand. Requires an Xt4b account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/394861","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=394861"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lbcw"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=394861"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=394861"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=394861"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=394861"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=394861"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=394861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}