=== Social Publisher – Auto Post to LinkedIn === Contributors: steffenmueller Tags: linkedin, social media, autopost, automation, ai Requires at least: 6.8 Tested up to: 7.1 Requires PHP: 7.4 Stable tag: 1.14.3 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Text Domain: social-publisher Auto-publish WordPress posts to LinkedIn via a tracking-free OAuth proxy (GDPR). Pro: AI rewriting, Brand Voice, scheduling, reposts. == Description == Social Publisher is a WordPress plugin that publishes your posts to LinkedIn automatically, to personal profiles and company pages, directly from the WordPress editor. You write a dedicated LinkedIn text, choose an image and see a live preview before the post goes out. The Pro version adds AI rewriting with your own Brand Voice, scheduling, reposting of published posts and PDF carousels. It does one thing: WordPress to LinkedIn. No other networks, no separate dashboard, no account with us. Built by an agency that got tired of the copy-paste routine. We use it ourselves, every week. **For social media managers and agencies:** Install Social Publisher on each client's WordPress site, set a dedicated Brand Voice per client, and publish LinkedIn content where it is written. At 9 EUR/month per site. [Plugin walkthrough (German)](https://social-publisher.enfants.de/) ### Features (Free) - Auto-publish to LinkedIn when you hit "Publish" - Write a dedicated LinkedIn text, separate from your blog post - Choose a separate LinkedIn image (JPG/PNG) - Live preview of your LinkedIn post inside the editor - Supports personal profiles and company pages - LinkedIn login through a tracking-free OAuth proxy ### Pro (9 EUR/month) - AI rewriting with tone presets (Informational, Emotional, Salesy) and your own Brand Voice - Schedule your LinkedIn post for a specific date and time - Reposting: schedule an already published post to go out on LinkedIn again - PDF carousel: attach a PDF instead of an image - Optional backlink to your post - Early adopters keep their price permanently: sign up at 9 EUR, pay 9 EUR for as long as the subscription runs ### Privacy and GDPR The LinkedIn login (OAuth) runs through a tracking-free proxy at **https://social-publisher.enfants.de**. No LinkedIn script, cookie or tracking pixel is loaded on your site. See "External services" below for every connection the plugin makes. ### External services Social Publisher connects to the following services: - **LinkedIn API** (api.linkedin.com, www.linkedin.com): used to connect your account and to publish your posts. Your LinkedIn text, the selected image or PDF and your access token are sent when you publish. [Terms](https://www.linkedin.com/legal/user-agreement), [Privacy Policy](https://www.linkedin.com/legal/privacy-policy). - **OAuth proxy and license server** (social-publisher.enfants.de, operated by Enfants Terribles digital GmbH): used for the LinkedIn login. With a Pro license key, the plugin also sends the license key and your site URL once a day to validate the license. [Privacy Policy](https://social-publisher.enfants.de/privacy). - **Update server** (tools.enfants.de, operated by Enfants Terribles digital GmbH), Pro only: with a valid license, the plugin checks for Pro updates and sends the license key and the installed version. [Privacy Policy](https://social-publisher.enfants.de/privacy). - **AI provider of your choice**, Pro only and only when you click "Rewrite": your LinkedIn text and Brand Voice are sent to the one provider you select in the settings, using your own API key. Available providers: - **OpenAI API** (api.openai.com). [Terms](https://openai.com/policies/terms-of-use), [Privacy Policy](https://openai.com/policies/privacy-policy). - **Anthropic API / Claude** (api.anthropic.com). [Terms](https://www.anthropic.com/legal/commercial-terms), [Privacy Policy](https://www.anthropic.com/legal/privacy). - **Mistral AI API** (api.mistral.ai). [Terms](https://mistral.ai/terms), [Privacy Policy](https://mistral.ai/terms#privacy-policy). - **A custom OpenAI-compatible endpoint** that you enter yourself, e.g. a self-hosted model. The data goes to the address you configured. - **WordPress AI connectors** (Settings > Connectors, WordPress 7.0+): the request goes through the connector you set up in WordPress. The plugin also contacts the selected provider when you save its API key, to check that the key is valid (no text is sent). LinkedIn is a trademark of LinkedIn Corporation. Social Publisher is not affiliated with, endorsed or sponsored by LinkedIn. == Installation == 1. Search for "Social Publisher" in the WordPress plugin directory and install it directly. 2. Activate the plugin via the **Plugins** menu in WordPress. 3. Open the settings under **Settings > Social Publisher** and connect your LinkedIn account. 4. When creating a new post, you can enable the **LinkedIn sharing** and set an individual text and image. == Screenshots == 1. Plugin settings: LinkedIn profile selection, license key, AI provider with API key and Brand Voice for AI-assisted rewriting. 2. Post editor with LinkedIn text field, media upload, AI rewrite options, scheduling and live preview. 3. LinkedIn preview with custom image and AI rewrite — original and rewritten text side by side. 4. Full editor view showing LinkedIn text input, media options, AI improvement and direct publishing or scheduling. 5. Post titled "Tennis is the game" with live LinkedIn preview showing how the post will appear on LinkedIn. 6. Post list overview with LinkedIn column showing connection status for each post. 7. Post list with filter options and LinkedIn metadata including profile and publication status. == Frequently Asked Questions == = How do I automatically share my WordPress blog posts on LinkedIn? = Install Social Publisher, connect your LinkedIn account under Settings > Social Publisher and enable LinkedIn sharing in the post editor. When you publish the post, it is published on LinkedIn at the same time, with the LinkedIn text and image you set. This works in the free version. = Who is Social Publisher for? = Anyone publishing on WordPress who wants their content on LinkedIn without the copy-paste routine: freelancers, B2B marketers, editorial teams, and social media managers handling LinkedIn for multiple clients. = Is Social Publisher a good fit for B2B LinkedIn posting? = It is built for it. Company news, articles and announcements are published on your website and on your LinkedIn company page in one step. Social Publisher supports LinkedIn only, the network most B2B communication runs on, and both personal profiles and company pages. = How can I manage LinkedIn for multiple clients from WordPress? = Install Social Publisher on each client's WordPress site and connect that client's LinkedIn profile or company page. In Pro, each site has its own Brand Voice, so each client's posts sound like them. There is no central dashboard: content stays where it is created, in each client's WordPress. Each site uses one LinkedIn login, from which you pick the profile or company page to post to. = How does publishing work? = You write your post in WordPress and publish to LinkedIn directly from the editor. You can define a dedicated LinkedIn text, choose an image, and preview the result before publishing. Social Publisher works with WordPress posts. = Can I schedule LinkedIn posts? = Yes, in **Social Publisher Pro**. You set a date and time in the editor and the post goes out on LinkedIn at that time. A background queue delivers scheduled posts reliably, also on sites with little traffic. = How do I repost or recycle evergreen content on LinkedIn? = In **Social Publisher Pro** you can set a repost date and time for a post that has already been published. At that time the post is published on LinkedIn again. You set the repost date per post; there is no automatic recurring rotation. = Is there a LinkedIn plugin for WordPress with ChatGPT rewriting? = Yes. **Social Publisher Pro** rewrites your LinkedIn text with the AI provider of your choice: OpenAI (ChatGPT), Claude, Mistral, your own OpenAI-compatible endpoint or the AI connector configured in WordPress. You can pick the model per provider (default for OpenAI: gpt-4o-mini). You choose a tone (Informational, Emotional or Salesy) and can store a Brand Voice that is applied to every rewrite. You see the original and the rewritten text side by side before publishing. = Which plugin combines LinkedIn scheduling with AI text optimization? = **Social Publisher Pro** has both in the WordPress editor: you rewrite the LinkedIn text with AI, check the live preview and schedule the post for a date and time, without leaving WordPress. = Do I need my own API key for AI rewriting? = Yes, unless you use a WordPress AI connector, which needs no key here. You choose a provider and add your own API key in the plugin settings. The text is sent to that provider only when you click "Rewrite". = Is my Featured Image used automatically? = No. Social Publisher gives you full control over the LinkedIn media. If you don’t select a dedicated LinkedIn image, the post will be published without an image. = How do I label AI-generated images in LinkedIn posts? = Social networks remove image metadata on upload, so a machine-readable AI label does not survive. If you also run [IMG Performer](https://wordpress.org/plugins/enfants-img-performer/) with an active IMG Performer PRO license, Social Publisher uploads AI-labeled images to LinkedIn with the visible AI label burned into the image. Without IMG Performer PRO, images are uploaded unchanged. = Is Social Publisher GDPR compliant? = Social Publisher is built to keep data flows small: the LinkedIn login runs through a tracking-free OAuth proxy, no LinkedIn scripts or cookies are loaded on your site, and the free version sends nothing to us in the background. The "External services" section lists every connection. Whether your overall setup is GDPR compliant also depends on your own use of LinkedIn and, in Pro, the AI provider you choose. = Does Social Publisher send any data to your servers? = The LinkedIn login runs through our OAuth proxy. With a Pro license, the plugin validates the license key and site URL once a day and checks for Pro updates. Beyond that, data is only sent if you actively choose to: when you deactivate the plugin or dismiss the occasional "why not Pro?" notice, you can optionally share your reason with us. This feedback contains only your selected answer(s) and optional free text; no name, email, license key, site URL, or IP address is transmitted or stored. = How is Social Publisher different from multi-network auto-posters like FS Poster? = FS Poster posts to many social networks (26 according to its website, as of October 2026). Social Publisher does LinkedIn only: one metabox in the editor, a dedicated LinkedIn text, live preview, and in Pro AI rewriting with Brand Voice, scheduling and reposting. If you need many networks, a multi-network tool is the better choice. If you only need LinkedIn and want it inside WordPress, Social Publisher is the simpler setup. = How much does Pro cost? = Pro costs 9 EUR/month per site and can be cancelled at any time. Early adopters keep their entry price for as long as their subscription runs, even when the price rises for new customers. == Changelog == = 1.14.3 = - New: After activation you land on the Social Publisher settings page. Until LinkedIn is connected, a "Connect with LinkedIn" notice shows on the dashboard and the plugin list. - New: After connecting you get a confirmation with the next step, and the profile selection says when to click "Save Changes". - Change: "Disconnect from LinkedIn" is now a small link and asks for confirmation. The heading "LinkedIn API Settings" is now "LinkedIn connection", and users who already bought Pro are told to connect LinkedIn first. - Change: The upgrade box on the settings page now matches the Pro feature list and shows the price (9 EUR per month, cancel monthly). - Change: The personal LinkedIn profile is shown with your name instead of your e-mail address (after you reconnect LinkedIn), and the post list shows the profile name. - Change: The submenu under Posts is now called "Social Publisher", like the settings page. Texts that were still German in the code are now translatable. - Change: The note on the connection screen no longer states GDPR compliance as an absolute claim. = 1.14.2 = - Fix: Lifetime licenses were treated as expired and showed the "Upgrade to Pro" box although the license was valid. A license without an expiry date now keeps Pro active. - Fix: When a license has run out by date, the settings page now says so ("This license expired on ...") instead of "License successfully activated." = 1.14.1 = - Fix: The license field no longer claims that a key is "already activated on another domain" when it simply is not valid. You now see whether the key was not found, is active on another domain, or the license server could not be reached. - Fix: Slow hosts no longer fail the license check as invalid: the license server request now waits up to 15 seconds. - Change: Browsers no longer auto-fill saved passwords into the license key field. - New: "Send feedback" card on the settings page and a contact link next to license errors. = 1.14.0 = - New: Choose your AI provider for "Improve with AI": OpenAI, Claude, Mistral, your own OpenAI-compatible endpoint or the AI connector set up in WordPress (Settings > Connectors). You can pick the model per provider. Existing OpenAI keys keep working without any change. - New: The plugin now stores when your LinkedIn connection expires, checks it daily and warns you in the admin and by e-mail 7 days before it runs out, or as soon as LinkedIn rejects it. - Fix: When LinkedIn rejected the login, the connection disappeared without any notice and posts were silently not shared. You are now told, with a link to reconnect. - Fix: A post that never reached LinkedIn could still be marked as successfully shared internally. = 1.13.0 = - New: LinkedIn panel in the block editor sidebar and in the pre-publish check ("Also share on LinkedIn?"), so you no longer have to find the box in the collapsed meta box area. If LinkedIn is not connected yet, the panel links straight to the connection. - New: Sharing status per post (queued, shared, error) in the editor, the post list and an admin notice. Errors now show the reason from LinkedIn (e.g. expired connection, missing permission, rate limit) and how to fix it instead of failing silently. - Fix: Posts were not shared on sites where WP-Cron does not run reliably. Due shares are now also sent while the editor is open or when an admin page is loaded, and a lock prevents duplicate posts. = 1.12.3 = - Change: New plugin name "Social Publisher – Auto Post to LinkedIn" so it is easier to find. Slug, settings and data stay the same. - Fix: After moving a license to a new domain, the plugin kept showing it as invalid even when the license server reported it as valid. Saving the key again now always re-checks it, and a fresh server response always updates the stored status. = 1.12.2 = - Fix: The feedback survey and a few admin labels were shown in German on English sites. All interface strings now use English as the source language and are translated via translate.wordpress.org. = 1.12.1 = - New: Dismissible notice about IMG Performer (our image optimization and AI labeling plugin) on the Dashboard and the Social Publisher settings page. Shown only to users who can install plugins, only if IMG Performer is not active and not earlier than 7 days after installation. "Remind me later" hides it for 30 days, the close button hides it permanently. No data is sent. = 1.12.0 = - New: Only with IMG Performer PRO installed and licensed: posts with an AI-labeled image are uploaded to LinkedIn with the AI label burned into the image instead of the original, because social networks remove metadata on upload. Without IMG Performer: no change. - Fix: Image posts without any text (neither a LinkedIn text nor post content) were aborted before the image upload - Fix: Debug logging (socipu_log) had no listener and was invisible = 1.11.0 = - New: Anonymous feedback survey on deactivation and for Free users without a Pro upgrade after 14 days. Fully anonymous: no license key, site URL or IP address = 1.10.0 = - New: Background queue for LinkedIn posts. Scheduled posts are delivered reliably via cron, also on low-traffic sites - Fix: enqueue() discarded schedule updates for posts that were already queued = 1.9.7 = - Fix: AI rewriting now uses the site's configured language (get_locale()) instead of guessing from the post text — short or ambiguous texts no longer fall back to English on German sites = 1.9.6 = - Confirmed compatibility up to WordPress 7.0.2 = 1.9.5 = - Fix: Editing a published post no longer triggers a duplicate LinkedIn post - Fix: Scheduling duplicate prevention when saving rapidly = 1.9.4 = - Fix: LinkedIn metabox no longer appears on media attachment pages = 1.9.3 = - Fix: Brand Voice is now reliably applied to every AI rewrite — the default "clean and professional, no emojis" instruction no longer overrides the Brand Voice setting = 1.9.2 = - Fix: AI rewrite now reads LinkedIn text live — no save required before rewriting - Fix: Brand Voice now reliably applied to every AI rewrite - New: Backlink URL shown in LinkedIn preview when toggle is active = 1.9.1 = - Fix: All upgrade links now point consistently to checkout - Fix: Plugin URI updated to social-publisher.enfants.de - Improvement: UTM tracking added to all upgrade links = 1.9.0 = - New: LinkedIn preview card redesigned — live preview directly in the editor - New: ACF dependency removed — metabox is now fully native WordPress - New: Automatic Pro updates via license server (no more manual ZIP uploads) - New: Upsell moments for Pro features visible to Free users = 1.8.4 = - New: Schedule LinkedIn post on first publish — set a specific date and time directly in the editor (Pro) - Fix: Double posting prevented — Gutenberg race condition no longer causes duplicate LinkedIn posts - Fix: Brand Voice field added to AI rewrite — custom writing style injected as system prompt = 1.8.3 = - Fix: Pro settings (OpenAI API key field) now correctly visible when license is active - Fix: Upgrade box no longer shown for active Pro users = 1.8.2 = - New: Complete German translation (de_DE) – informal and formal variants - Improvement: Disconnect button moved next to LinkedIn profile dropdown - Fix: Added direct file access protection to all PHP includes - Fix: Timezone-safe date functions (gmdate) - Fix: wp_unslash() added per WordPress coding standards - Updated: Tested up to WordPress 6.9 = 1.8.1 = Internal Stability & Performance Improvements - Fix: License validation decoupled from admin initialization - Improvement: Optimized execution timing for license checks - Improvement: Reduced synchronous processing in admin context = 1.8.0 = 🎉 Major Pro Release — Faster, clearer & more reliable - New: Improved license activation with clearer onboarding - New: Automatic daily license validation (Pro) - Improvement: Clearer admin messages & better error handling - Improvement: Faster & more stable server connection - Improvement: Better compatibility with many hosting environments = 1.7.1 = License Reliability Update - New: Extended license validation with domain lock - Improvement: More robust Pro activation logic - Prep: Basis for recurring license checks = 1.7.0 = Editor & UX Refresh - Improved: Redesigned LinkedIn metabox - Improved: More consistent UI feedback - Fix: GPT rewrite respects selected language - Changed: Repost & rewrite only after first LinkedIn publish = 1.6.1 = Pro Feature: Reposting - New: Scheduled reposting of older posts - New: Repost date & time selector = 1.6.0 = AI Rewrite Release - New: GPT rewriting with selectable styles - New: OpenAI API key field - New: Display of selected LinkedIn profile = 1.5.0 = Core Stability Release - Improved: Code structure & consistency - Improved: Unified socipu_ prefix - Improved: Safer redirects - Added: Updated assets & plugin headers = 1.4.2 = Performance & Cleanup - Improved: JavaScript extracted from PHP - Improved: Dropdown behavior after auth - Cleanup: Removed old inline scripts = 1.4.1 = Pro Tools - New: ACF fields only shown with active LinkedIn connection - New: Optional backlink feature - New: Loading indicator during publish = 1.3.1 = Stability Fix - Fix: Preview not working on some hosts = 1.3.0 = OAuth & ACF Improvements - New: OAuth with automatic profile detection - Improved: ACF integration = 1.1.0 = Publishing Behavior Update - New: One‑time publication logic - New: Additional security checks - New: Admin notice for already published posts = 1.0.0 = Initial release