From f682b5cdf15a6153694a2e9457a21f8d55849e79 Mon Sep 17 00:00:00 2001 From: phyce Date: Sun, 21 Jun 2026 10:41:15 +0000 Subject: [PATCH 1/2] Add author and release date to plugin meta description Plugin detail pages now lead their SEO/search-result description with "by {author}, released : {date}" followed by the plugin description, truncated to fit the meta length. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/Http/Controllers/PluginController.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/PluginController.php b/app/Http/Controllers/PluginController.php index 1db38a8..afa636d 100644 --- a/app/Http/Controllers/PluginController.php +++ b/app/Http/Controllers/PluginController.php @@ -9,7 +9,9 @@ use Artesaos\SEOTools\Facades\TwitterCard; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Str; use Inertia\Response; class PluginController extends Controller @@ -52,10 +54,24 @@ public function show(Request $request, string $name): Response $pluginName = $plugin['display'] ?? $plugin['name']; $title = "{$pluginName} — RuneLite Plugin Stats"; + + $metaParts = []; + if (! empty($plugin['author'])) { + $metaParts[] = "by {$plugin['author']}"; + } + if (! empty($plugin['created_on'])) { + $metaParts[] = 'released : '.Carbon::parse($plugin['created_on'])->format('F j, Y'); + } + $metaPrefix = implode(', ', $metaParts); + $pluginDesc = $plugin['description'] ?? ''; - $description = $pluginDesc - ? mb_substr($pluginDesc, 0, 155) + $summary = $pluginDesc !== '' + ? $pluginDesc : "Install stats and history for the {$pluginName} RuneLite plugin."; + + $description = $metaPrefix !== '' + ? Str::limit("{$metaPrefix}. {$summary}", 160) + : Str::limit($summary, 160); $imageUrl = route('og.image', ['name' => $name]); SEOTools::setTitle($title); From 489e86aadf9b91e7cbae3c02c81ca250c941b6a4 Mon Sep 17 00:00:00 2001 From: phyce Date: Sun, 21 Jun 2026 11:53:57 +0000 Subject: [PATCH 2/2] Exclude plugin stats grid from search snippets Google was synthesising the search result snippet from the visible stats grid (Author / Last Update / All-time High / Released On / Active Installs) instead of the meta description. Marking the stats grid and tags with data-nosnippet stops Google using that text, so it falls back to the author/released/description meta description. Co-Authored-By: Claude Opus 4.8 (1M context) --- resources/js/pages/PluginDetail.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/js/pages/PluginDetail.vue b/resources/js/pages/PluginDetail.vue index ce640ad..df4d6bd 100644 --- a/resources/js/pages/PluginDetail.vue +++ b/resources/js/pages/PluginDetail.vue @@ -179,10 +179,10 @@ onUnmounted(() => { {{ plugin.display || plugin.name }}

{{ plugin.description }}

-

{{ plugin.tags }}

+

{{ plugin.tags }}

-
+
Author
{{ plugin.author }}