{"id":357781,"date":"2026-08-25T18:59:18","date_gmt":"2026-08-25T18:59:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pixelbyline\/"},"modified":"2026-08-25T18:58:59","modified_gmt":"2026-08-25T18:58:59","slug":"pixelbyline","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/pixelbyline\/","author":21145921,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"7.1","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"PixelByline","header_author":"PixelByline","header_description":"Automatically creates on-brand, optimized featured images from WordPress post content.","assets_banners_color":"","last_updated":"2026-08-25 18:58:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pixelbyline.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.0":{"tag":"0.2.0","author":"tomislo","date":"2026-08-25 18:58:59"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5739,569,194661,1795,194533],"plugin_category":[],"plugin_contributors":[277472],"plugin_business_model":[],"class_list":["post-357781","plugin","type-plugin","status-publish","hentry","plugin_tags-artificial-intelligence","plugin_tags-automation","plugin_tags-avif","plugin_tags-featured-image","plugin_tags-openai","plugin_contributors-tomislo","plugin_committers-tomislo"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/pixelbyline.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PixelByline builds an image prompt from the site's editorial profile, visual style, post title, categories, and content summary. The free edition lets editors generate an image manually from the post editor.<\/p>\n\n<p>The plugin preserves editor-added featured images, supports an optional replaceable fallback image, and records recent job statuses. PixelByline Professional adds automatic generation, scheduled-post handling, reference images, retries, queue recovery, and extended activity history.<\/p>\n\n<p>Generated images are center-cropped to 1200 x 628 pixels and saved as AVIF by default, with WebP and PNG fallbacks. AVIF output uses the optimized source directly to avoid slow or incompatible server-side derivative generation. The post title is used for the image filename, attachment title, and alt text.<\/p>\n\n<p>A customer-provided OpenAI API key is required. OpenAI usage is billed directly to the customer's OpenAI account. Manual generation does not require a paid PixelByline license.<\/p>\n\n<h3>External services<\/h3>\n\n<p>PixelByline connects to the OpenAI API to create featured images. This service is optional, but it is required when generating an image. The site owner supplies and controls the OpenAI API key, and OpenAI bills API usage directly to that account.<\/p>\n\n<p>When an editor manually queues image generation, PixelByline sends OpenAI the selected model, image dimensions and quality, and an image prompt. The prompt can include the site profile and visual-style settings, the post title, categories, and a summary of the post content. The API key is sent in the request authorization header.<\/p>\n\n<p>When an administrator selects Test API connection, PixelByline sends the API key and selected model identifier to OpenAI to verify API access. No image is generated by that test.<\/p>\n\n<p>OpenAI provides this service. Use of the OpenAI API is governed by the <a href=\"https:\/\/openai.com\/policies\/business-terms\/\">OpenAI Business Terms<\/a> and <a href=\"https:\/\/openai.com\/policies\/privacy-policy\/\">OpenAI Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload and activate PixelByline.<\/li>\n<li>Open PixelByline &gt; Settings.<\/li>\n<li>Add an OpenAI API key and configure the site profile and visual style.<\/li>\n<li>Test one published post with the manual Queue generation button.<\/li>\n<li>Upgrade and activate a Professional license to enable automatic generation and the other Professional features.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20pixelbyline%20overwrite%20an%20editor%27s%20featured%20image%3F\"><h3>Will PixelByline overwrite an editor's featured image?<\/h3><\/dt>\n<dd><p>No. It only generates when a post has no featured image or uses the explicitly configured fallback image.<\/p><\/dd>\n<dt id=\"where%20should%20i%20store%20the%20openai%20api%20key%3F\"><h3>Where should I store the OpenAI API key?<\/h3><\/dt>\n<dd><p>Store the key in PixelByline settings. Advanced deployments can instead define <code>PIXELBYLINE_OPENAI_API_KEY<\/code> in <code>wp-config.php<\/code>.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20license%20expires%3F\"><h3>What happens when a license expires?<\/h3><\/dt>\n<dd><p>Professional automation pauses and the plugin returns to Free functionality. Manual generation, existing images, posts, and settings remain available.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Add a useful Free edition with manual image generation and core prompt, output, protection, SEO, and activity features.<\/li>\n<li>Keep automatic generation, scheduled-post handling, recovery, retries, reference images, and extended activity history in Professional.<\/li>\n<li>Prepare one source tree for Freemius Free and Professional package generation.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Add PixelByline branding to the WordPress admin menu and settings header.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Fix API key removal being undone by settings sanitization.<\/li>\n<li>Move API key actions directly below the API key field.<\/li>\n<li>Show external-key guidance only when an external key is active.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Add a no-generation OpenAI connection test for the selected image model.<\/li>\n<li>Add a confirmed action for removing the API key stored in WordPress.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Prevent AVIF sub-size generation from leaving image jobs stuck in processing.<\/li>\n<li>Resume an unfinished generated attachment without repeating the OpenAI request.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Keep WordPress responsive image sizes in the selected output format.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fix manual generation remaining queued when automatic generation is disabled.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial private beta release.<\/li>\n<li>Add Freemius licensing, account management, and updates.<\/li>\n<li>Add automatic and manual AI featured image generation.<\/li>\n<li>Add queue recovery, retries, and activity history.<\/li>\n<li>Add visual profiles and optional reference images.<\/li>\n<li>Add 1200 x 628 AVIF output with WebP and PNG fallbacks.<\/li>\n<li>Add SEO-friendly filenames, attachment titles, and alt text.<\/li>\n<\/ul>","raw_excerpt":"Automatically creates on-brand, optimized featured images from WordPress post content.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/357781","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=357781"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tomislo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=357781"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=357781"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=357781"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=357781"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=357781"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=357781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}