{"id":269769,"date":"2026-01-07T13:01:27","date_gmt":"2026-01-07T13:01:27","guid":{"rendered":"https:\/\/nb.wordpress.org\/plugins\/devenia-linkedin-autoposter\/"},"modified":"2026-02-17T19:44:37","modified_gmt":"2026-02-17T19:44:37","slug":"devenia-autoposter-for-linkedin","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/devenia-autoposter-for-linkedin\/","author":9103039,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.5.13","stable_tag":"1.5.13","tested":"6.9.4","requires":"5.4","requires_php":"7.4","requires_plugins":null,"header_name":"Devenia Autoposter for LinkedIn","header_author":"Devenia","header_description":"Automatically share posts to LinkedIn when published. Uses official LinkedIn API - no scraping, no bloat.","assets_banners_color":"4c4f54","last_updated":"2026-02-17 19:44:37","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/devenia.com\/","header_plugin_uri":"https:\/\/devenia.com\/plugins\/autoposter-for-linkedin\/","header_author_uri":"https:\/\/devenia.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":231,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.11":{"tag":"1.5.11","author":"basicus","date":"2026-01-07 13:00:28"},"1.5.12":{"tag":"1.5.12","author":"basicus","date":"2026-02-17 16:43:43"},"1.5.13":{"tag":"1.5.13","author":"basicus","date":"2026-02-17 19:44:37"}},"upgrade_notice":{"1.5.5":"<p>Recommended update: Better cleanup on deactivation, timezone fixes, cleaner logs.<\/p>","1.5.0":"<p>Major feature: Image gallery rotation keeps your LinkedIn feed fresh!<\/p>","1.4.0":"<p>Algorithm optimization: Image-only posts for better visibility.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3434361,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3434361,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3434361,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3434361,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.11","1.5.12","1.5.13"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page with connection status and image gallery","2":"Image rotation preview showing next image in queue","3":"Per-post control to skip LinkedIn sharing","4":"Token expiration warning with reconnect button"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[569,6855,313,138,174],"plugin_category":[56],"plugin_contributors":[220191],"plugin_business_model":[],"class_list":["post-269769","plugin","type-plugin","status-publish","hentry","plugin_tags-automation","plugin_tags-autoposter","plugin_tags-linkedin","plugin_tags-share","plugin_tags-social","plugin_category-social-and-sharing","plugin_contributors-basicus","plugin_committers-basicus"],"banners":{"banner":"https:\/\/ps.w.org\/devenia-autoposter-for-linkedin\/assets\/banner-772x250.png?rev=3434361","banner_2x":"https:\/\/ps.w.org\/devenia-autoposter-for-linkedin\/assets\/banner-1544x500.png?rev=3434361","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/devenia-autoposter-for-linkedin\/assets\/icon-128x128.png?rev=3434361","icon_2x":"https:\/\/ps.w.org\/devenia-autoposter-for-linkedin\/assets\/icon-256x256.png?rev=3434361","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Stop boring your LinkedIn followers with the same image over and over.<\/strong><\/p>\n\n<p>Most auto-posters grab your featured image and call it a day. After a few posts, your followers scroll right past - banner blindness kicks in.<\/p>\n\n<p>This plugin fixes that with <strong>automatic image rotation<\/strong>. Upload a gallery of images, and each post uses the next one in sequence. Your LinkedIn feed stays visually fresh, and your posts get noticed.<\/p>\n\n<h4>Why This Plugin Exists<\/h4>\n\n<p>We tried every LinkedIn plugin out there. They all had problems:<\/p>\n\n<ul>\n<li><strong>Bloated<\/strong> - Packed with upsells, \"pro\" features, and settings you'll never use<\/li>\n<li><strong>Broken<\/strong> - Using scraping or fake logins that LinkedIn blocks<\/li>\n<li><strong>Dumb<\/strong> - Posting with external links (which LinkedIn's algorithm buries)<\/li>\n<\/ul>\n\n<p>So we built something better.<\/p>\n\n<h4>Key Features<\/h4>\n\n<p><strong>Image Gallery Rotation<\/strong>\nUpload multiple images and they rotate automatically with each post. No more banner blindness. Your feed stays fresh, engagement stays high.<\/p>\n\n<p><strong>Algorithm-Optimized Posts<\/strong>\nLinkedIn tends to deprioritize posts with external links. This plugin posts image-only content. Add your link in the first comment instead (a common strategy among LinkedIn creators).<\/p>\n\n<p><strong>Full Excerpt Support<\/strong>\nMost plugins cut your text at 30-150 words. We use LinkedIn's full 3000 character limit (~450 words). Your message actually gets delivered.<\/p>\n\n<p><strong>Post Everywhere at Once<\/strong>\nPersonal profile, company page, or both simultaneously. One publish, multiple destinations.<\/p>\n\n<p><strong>Actually Works<\/strong>\nUses LinkedIn's official API. No scraping, no fake logins, no getting blocked. Just reliable posting, every time.<\/p>\n\n<p><strong>Zero Bloat<\/strong>\nNo upsells. No \"pro\" version. No tracking. No bloat. Just a plugin that does what it says.<\/p>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Connect to LinkedIn (one-time setup with your own API credentials)<\/li>\n<li>Configure your image gallery and post template<\/li>\n<li>Publish posts as normal - they automatically appear on LinkedIn<\/li>\n<\/ol>\n\n<p>That's it. No daily tokens to refresh, no manual sharing, no forgetting to post.<\/p>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li><strong>Bloggers<\/strong> who want their posts on LinkedIn without manual work<\/li>\n<li><strong>Businesses<\/strong> posting to company pages automatically<\/li>\n<li><strong>Marketers<\/strong> who understand LinkedIn's algorithm (image-only &gt; links)<\/li>\n<li><strong>Anyone<\/strong> tired of bloated social plugins<\/li>\n<\/ul>\n\n<h4>What You Need<\/h4>\n\n<ul>\n<li>A LinkedIn account<\/li>\n<li>A LinkedIn Developer App (free, takes 5 minutes to create)<\/li>\n<li>60 seconds to connect<\/li>\n<\/ul>\n\n<p><strong>External Services:<\/strong><\/p>\n\n<p>This plugin connects to LinkedIn's API to share your posts. When you publish:<\/p>\n\n<ul>\n<li>Your post title, excerpt, and image are sent to LinkedIn's servers<\/li>\n<li>Data is transmitted via LinkedIn's official REST API (api.linkedin.com)<\/li>\n<li>Authentication uses OAuth 2.0 tokens stored in your WordPress database<\/li>\n<\/ul>\n\n<p>By using this plugin, you agree to LinkedIn's:\n* <a href=\"https:\/\/www.linkedin.com\/legal\/user-agreement\">Terms of Service<\/a>\n* <a href=\"https:\/\/www.linkedin.com\/legal\/privacy-policy\">Privacy Policy<\/a>\n* <a href=\"https:\/\/www.linkedin.com\/legal\/l\/api-terms-of-use\">API Terms of Use<\/a><\/p>\n\n<p>No data is sent anywhere else. We don't collect or store any of your data.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>devenia-autoposter-for-linkedin<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu<\/li>\n<li>Go to Settings &gt; Autoposter for LinkedIn<\/li>\n<li>Follow the setup instructions to create a LinkedIn App and connect<\/li>\n<\/ol>\n\n<p><strong>Creating a LinkedIn App - Personal Profile (5 minutes):<\/strong><\/p>\n\n<ol>\n<li>Go to <a href=\"https:\/\/www.linkedin.com\/developers\/apps\">LinkedIn Developer Portal<\/a><\/li>\n<li>Click \"Create App\"<\/li>\n<li>Fill in the required information<\/li>\n<li>In the Products tab, add \"Share on LinkedIn\"<\/li>\n<li>In the Auth tab, copy your Client ID and Client Secret<\/li>\n<li>Add the redirect URL shown in the plugin settings<\/li>\n<li>Enter credentials in the plugin and click \"Connect to LinkedIn\"<\/li>\n<\/ol>\n\n<p>Done! Your posts will now automatically share to your personal LinkedIn profile.<\/p>\n\n<p><strong>Adding Company Page Posting (requires extra step):<\/strong><\/p>\n\n<p>To also post to a LinkedIn Company Page:<\/p>\n\n<ol>\n<li>Complete the personal profile setup above first<\/li>\n<li>In the LinkedIn Developer Portal, go to your app's Products tab<\/li>\n<li>Request access to \"Advertising API\" (it's free)<\/li>\n<li>Wait for LinkedIn approval (usually 1-3 days)<\/li>\n<li>Once approved, reconnect in the plugin settings<\/li>\n<li>Your admin company pages will now appear in the settings<\/li>\n<\/ol>\n\n<p>Note: You must be an admin of the company page you want to post to.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20do%20i%20need%20my%20own%20linkedin%20app%3F\"><h3>Why do I need my own LinkedIn App?<\/h3><\/dt>\n<dd><p>LinkedIn requires it. But it's free, takes 5 minutes, and means your data stays yours - not routed through someone else's server.<\/p><\/dd>\n<dt id=\"why%20do%20i%20need%20to%20reconnect%20every%2060%20days%3F\"><h3>Why do I need to reconnect every 60 days?<\/h3><\/dt>\n<dd><p>LinkedIn's security policy. All apps must re-authenticate every 60 days. The plugin warns you before expiration (on-screen + email) so you never miss a post.<\/p><\/dd>\n<dt id=\"can%20i%20share%20to%20a%20company%20page%3F\"><h3>Can I share to a Company Page?<\/h3><\/dt>\n<dd><p>Yes! Personal profile, company page, or both at once. For company pages, you need to be an admin and request the Advertising API from LinkedIn (free, takes a few days).<\/p><\/dd>\n<dt id=\"why%20image-only%20posts%3F%20where%27s%20my%20link%3F\"><h3>Why image-only posts? Where's my link?<\/h3><\/dt>\n<dd><p>LinkedIn's algorithm tends to deprioritize posts with external links. Image-only posts often perform better. Add your link as the first comment instead - a common strategy among LinkedIn creators.<\/p><\/dd>\n<dt id=\"how%20does%20image%20rotation%20work%3F\"><h3>How does image rotation work?<\/h3><\/dt>\n<dd><p>Upload multiple images to the gallery. Each post uses the next image in sequence. Post 1 gets image 1, post 2 gets image 2, etc. When it reaches the end, it loops back. Your feed never looks repetitive.<\/p><\/dd>\n<dt id=\"will%20this%20share%20old%20posts%3F\"><h3>Will this share old posts?<\/h3><\/dt>\n<dd><p>No. Only new posts when they're first published. Updating an existing post won't re-share it.<\/p><\/dd>\n<dt id=\"what%20if%20my%20post%20has%20no%20image%3F\"><h3>What if my post has no image?<\/h3><\/dt>\n<dd><p>The plugin looks for: Featured image \u2192 First image in content \u2192 Gallery image \u2192 Default image \u2192 Site logo. Something always gets posted.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.13<\/h4>\n\n<ul>\n<li>Improved: Post sharing now runs in a background queue to avoid slowing down publish requests<\/li>\n<li>Improved: Added retry\/backoff handling for transient LinkedIn API failures (429\/5xx)<\/li>\n<li>Improved: Added locking to reduce duplicate posts and gallery rotation race conditions<\/li>\n<li>Improved: Local media files are now read directly when available instead of always fetching over HTTP<\/li>\n<li>Fixed: Removed legacy packaged subdirectory from plugin distribution<\/li>\n<\/ul>\n\n<h4>1.5.12<\/h4>\n\n<ul>\n<li>Fixed: Added automatic LinkedIn API version fallback when a requested version is retired<\/li>\n<li>Fixed: Persists first working LinkedIn API version to avoid repeated failures on future posts<\/li>\n<li>Fixed: Updated organization admin lookup call to avoid unsupported projection parameter<\/li>\n<\/ul>\n\n<h4>1.5.11<\/h4>\n\n<ul>\n<li>Fixed: Removed remaining percentage claim from upgrade notice section<\/li>\n<\/ul>\n\n<h4>1.5.10<\/h4>\n\n<ul>\n<li>Fixed: JavaScript now properly enqueued using wp_add_inline_script() instead of inline script tags<\/li>\n<li>Fixed: Removed marketing claims from readme per WordPress.org guidelines<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li>Changed: Renamed plugin to \"Devenia Autoposter for LinkedIn\" for trademark compliance<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>Fixed: WordPress plugin check compliance - all PHPCS warnings resolved<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Fixed: WordPress coding standards compliance (wp_safe_redirect, wp_parse_url, input sanitization)<\/li>\n<li>Fixed: Proper unslashing and sanitization of all user inputs<\/li>\n<li>Changed: Class renamed to Dlap_LinkedIn_Autoposter for proper prefixing<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Fixed: Debug logging now respects WP_DEBUG setting<\/li>\n<li>Fixed: Date handling uses wp_date() for proper timezone support<\/li>\n<li>Added: Proper cleanup on plugin deactivation and uninstall<\/li>\n<\/ul>\n\n<h4>1.5.4<\/h4>\n\n<ul>\n<li>Fixed: HTML entities decode properly (emojis work now!)<\/li>\n<li>Fixed: Paragraph breaks preserved in LinkedIn posts<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>New: Gallery images automatically set as featured image on the post<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Added: Image size recommendations (1200x1200 square for best results)<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: Image Gallery with automatic rotation<\/li>\n<li>New: Image Source Priority (Featured first \/ Gallery first \/ Gallery only)<\/li>\n<li>New: Rotation indicator shows which image is next<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Fixed: Excerpt now uses full 2700 characters (LinkedIn allows 3000)<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Changed: Image-only posts for maximum LinkedIn algorithm reach<\/li>\n<li>Simplified: Cleaner codebase, fewer API calls<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Fixed: Updated to LinkedIn API version 202501<\/li>\n<li>Fixed: Image uploads via LinkedIn Images API<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: Default fallback image setting<\/li>\n<li>New: Smart image priority chain<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added: Featured image support<\/li>\n<li>Added: Site logo fallback<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Post to company pages<\/li>\n<li>New: Post to personal + company simultaneously<\/li>\n<li>New: Email notifications before token expires<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Auto-post to LinkedIn with rotating images, algorithm-optimized formatting, and zero bloat.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/269769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=269769"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/basicus"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=269769"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=269769"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=269769"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=269769"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=269769"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=269769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}