=== Social Publisher ===
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.12.2
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).
- **OpenAI API** (api.openai.com), Pro only and only when you click "Rewrite": your LinkedIn text and Brand Voice are sent to OpenAI using your own API key. [Terms](https://openai.com/policies/terms-of-use), [Privacy Policy](https://openai.com/policies/privacy-policy).

== 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, OpenAI 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 OpenAI API (the technology behind ChatGPT, model 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. You add your own OpenAI API key in the plugin settings. The text is sent to OpenAI 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, OpenAI.

= 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.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
