Blog Internal Linking

Automatic, keyword-based internal linking for Statamic blog content. It maps words and phrases to target entries in any collection. The links are injected at render time, resolve to the correct language automatically and appear at most once per page.

0.4.0

July 10th, 2026

Added

  • Keyword rows now support several comma-separated word or phrase variants in a single Word / phrase field.
  • ApplyInternalLinks::splitKeywordVariants() helper for testing and documenting comma-splitting behavior.
  • Bulgarian (bg) option in the keyword locale selector to match the current multisite setup.

Changed

  • A keyword row with multiple variants keeps the existing deduplication behavior: the target URL is linked at most once per page request, and variants are tried in the order entered.
  • Blueprint instructions now explain comma-separated variants and the literal-comma limitation.
  • VERSION.md synchronized with the package version.

0.3.0

June 21st, 2026

Added

  • `config/internal-links.php` — global configuration file with `blog_collection` and `admin_site` keys
  • `InstallCommand` auto-detects blog collection by scanning collection handles for keywords (`blog`, `post`, `article`, `news`, `journal`, `entry`)
  • On multisite installs, `InstallCommand` asks which site is used to manage content in the CP
  • Detected values are written automatically into the published config file
  • `vendor:publish --tag=internal-links-config` for config-only publish

Changed

  • `blog_collection` moved from a per-entry CP field to a global config key — set once, applies everywhere
  • `admin_site` replaces the hardcoded value in the modifier query — now read from config
  • Blueprint simplified: `blog_collection` field removed from CP
  • Composer package renamed to `5k18a/blog-internal-links`
  • CP blueprint and collection labels translated to English for Statamic Marketplace compatibility

Removed

  • `blog_collection` entries picker field from blueprint (replaced by config)

0.2.1

June 21st, 2026

CP blueprint and documentation translated to English.

0.2.0

June 21st, 2026

Added

  • `InstallCommand` with next-steps output after install
  • Addon prepared as standalone Statamic plugin with English documentation
  • Commercial license (Statamic Marketplace)
  • `DOCUMENTATION.md` for Statamic Marketplace submission

0.1.1

June 21st, 2026

Bug fixes and stability improvements.

0.1.0

June 21st, 2026

Added

  • Antlers modifier `apply_internal_links` for automatic keyword substitution in HTML/Bard content
  • HTML-aware keyword replacer that protects headings, existing links, images, figures, iframes, and WordPress embed comments
  • `internal_links` Statamic collection with blueprint for managing keyword → entry mappings
  • Per-locale keyword support via optional `locale` field on each keyword row
  • Target entry URL resolves automatically to the correct language version via Statamic's native multisite URL resolution
  • Deduplication: each target URL is linked at most once per page request
  • `php artisan internal-links:install` command
  • Blueprint fields: `target_entry`, `keywords`, `weight`, `nofollow`, `open_in_new_window`, `enabled`