=== Linkbraid - Internal Linking, Link Map & Broken Link Checker ===
Contributors: linkbraid
Tags: internal links, seo, broken links, anchor text, link checker
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.6
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Don't add links. Weave your site. Internal link map, broken-link checker, anchor reports, redirect finder and rule-based auto-linking.

== Description ==

Linkbraid maps your site as a graph, shows you the missing connections, and helps you build content clusters that search engines can actually follow.

Everything runs on your own server. Linkbraid Lite sends no content anywhere and needs no account or API key.

= Braid Map =

An interactive map of your internal links. Node size reflects internal PageRank, clusters render as islands, and one click highlights any page's neighborhood. Filters for orphans, priority pages and individual strands.

= Reports that lead to action =

* **Loose Ends** - orphaned content with no incoming links, plus orphaned category archives.
* **Anchor report** - generic anchors ("click here"), URLs used as anchor text and overlong anchors.
* **Broken links** - checks external and internal links on a schedule you control, with ignore and recheck actions.
* **Redirects** - links that answer 301/302, with a one-click "replace with the redirect target" fix.
* **URL changer** - swap every occurrence of a URL across the whole site, with history and undo.
* **Domain report** - which external domains you link to, with per-domain drill-down.

= Strands (content clusters) =

Group content into topic clusters, generate strands from your categories with one click, and track each cluster's internal coverage and its loose ends.

= Autobraid =

Rule-based auto-linking: phrase → target URL. Rules can match inflected word forms (built for Polish, German and other inflected languages), respect your link limit per post, never link a page to itself, and every applied link lands in the history with undo.

= Safe by design =

* Suggestions and rules never overwrite content blindly: every write goes through a snapshot with full undo.
* Works with the block editor, Classic editor, Elementor and Divi (byte-precise writes, no re-serialization).
* Reads ACF text fields (including repeaters and flexible content) for reports and the broken-link checker.
* External-link attributes (nofollow, sponsored, new tab) are applied at render time per domain - your stored content stays clean.
* Optional click counting with no cookies, no IP addresses and no user identifiers.

= Linkbraid Pro =

The Pro version adds AI-powered suggestion workflows on top of the same engine: whole-site AI analysis with editorial review, inbound "find sources" for orphans, anchor governance with reserved phrases, semantic Site Focus / Site Radius metrics, content pruning hints, and Google Search Console integration including cannibalization detection. Learn more at [linkbraid.com](https://linkbraid.com/).

= Languages =

English, German and Polish included.

== Installation ==

1. Upload the plugin to `/wp-content/plugins/linkbraid` or install it from the Plugins screen.
2. Activate it.
3. Open **Linkbraid → Overview** and run "Scan links without AI" - the map and the reports fill in from your existing content.

== Frequently Asked Questions ==

= Does Linkbraid send my content to external services? =

No. Linkbraid Lite runs entirely on your server. The optional Pro version can use an AI provider you configure with your own key.

= Does it change my content automatically? =

Only Autobraid rules you create apply links automatically, and every change is recorded with one-click undo. Nothing else writes to your content without your explicit action.

= Which editors are supported? =

The block editor, the Classic editor, Elementor and Divi. Beaver Builder and WPBakery content is read for reports.

= Does it slow down my site? =

No. All analysis runs in the admin or via WP-Cron. The only front-end code is the optional click counter (a few lines, sendBeacon, loaded only when enabled).

= What happens when I uninstall? =

Deleting the plugin removes its tables and options. Define `LINKBRAID_KEEP_DATA` in wp-config.php to keep the data instead.

== External services ==

This plugin works locally by default. It communicates with external services only in the cases listed below.

**Freemius (licensing and optional diagnostics)**
The plugin uses the Freemius SDK to offer an optional upgrade to the paid version and, only after you explicitly opt in on the activation screen, to send basic diagnostic data (site URL, WordPress version, PHP version, plugin version) to Freemius. If you skip the opt-in, no diagnostic data is sent. Freemius also processes checkout and license management if you purchase the paid version.
Service provider: Freemius, Inc. - [Terms of Service](https://freemius.com/terms/), [Privacy Policy](https://freemius.com/privacy/).

**Broken-link checker (requests to URLs found in your own content)**
When you start the broken-link scan, the plugin sends HTTP requests from your server to the external URLs found in your own posts and pages, in order to check their status codes. Only those URLs are requested, only when you run the scan, and no personal data is attached. The requests go to whatever sites your content links to, so no single provider, terms or privacy policy applies.

The free version makes no other external requests. The paid version (distributed separately from linkbraid.com) can additionally connect to the AI provider you configure with your own API key (OpenAI, Anthropic or OpenRouter) and to Google Search Console; those connections are documented with the paid version.

== Screenshots ==

1. Braid Map - your internal links as an interactive graph with cluster islands.
2. Overview dashboard with the linking health score.
3. Reports - loose ends, anchors, broken links, redirects and domains.
4. Strands - topic clusters with coverage tracking.
5. Autobraid - rule-based auto-linking with inflection support.

== Changelog ==

= 1.0.6 =
* Database tables no longer rely on DATETIME DEFAULT CURRENT_TIMESTAMP (unsupported before MySQL 5.6.5): timestamps are written explicitly by the plugin, so activation completes on older MySQL/MariaDB servers too.

= 1.0.5 =
* Activation never calls wp_die(): missing requirements are reported via a persistent admin notice instead, and the required PHP extensions (mbstring, dom) are declared in the plugin header.
* Admin query parameters that trigger actions are now verified with a WordPress nonce.

= 1.0.4 =
* Review-feedback round: stricter input sanitization across the admin and AJAX surfaces.
* The package no longer bundles translation files - translate.wordpress.org delivers languages.
* The paid version's AI and Search Console code paths are no longer present in the free package.
* Activation no longer deactivates any other plugin.
* Added the External services section to this readme.

= 1.0.3 =
* Neutral example phrases in placeholders (Autobraid rule and Strands name fields).

= 1.0.2 =
* Fixed the Braid Map tooltip appearing far from the cursor on scrolled pages - it now follows the pointer and stays inside the viewport.

= 1.0.1 =
* The Braid Map now fills from the plain link scan - every scanned post appears on the map immediately.
* Fixed the setup flow staying reachable during license/opt-in activation.
* Added the affiliate program application form to the plugin menu.

= 1.0.0 =
* First public release: Braid Map, link reports (orphans, anchors, broken links, redirects, domains), URL changer with undo, Strands content clusters, Autobraid rule-based linking with inflection support, external-link attributes, privacy-friendly click counting.
