laravel-topic-normalizer maintained by jeffersongoncalves
Description
A tiny Laravel helper that merges raw topic/keyword lists (GitHub topics, composer.json + package.json keywords, Packagist keywords, …) into one slugged, deduplicated, length-filtered and capped list.
Author
Last update
2026/06/23 13:55
(dev-master)
License
Downloads
16

Laravel Topic Normalizer
Merge raw topic / keyword lists from several sources — GitHub topics, composer.json + package.json keywords, Packagist keywords — into one clean list: slugged, deduplicated, length-filtered and capped.
Installation
composer require jeffersongoncalves/laravel-topic-normalizer
Usage
use JeffersonGoncalves\TopicNormalizer\TopicNormalizer;
$topics = TopicNormalizer::normalize(
$repo['topics'] ?? [], // GitHub topics
$composer['keywords'] ?? [], // composer.json
$packageJson['keywords'] ?? [], // package.json
);
// => ['laravel', 'filament', 'php-package', …] (slugged, unique, max 20)
Pass any number of lists. Non-strings are skipped; values are Str::slug()-ed, empties and over-long slugs dropped, duplicates removed, and the result capped.
Configuration
php artisan vendor:publish --tag="topic-normalizer-config"
| Key | Default | Description |
|---|---|---|
max |
20 |
Maximum number of topics returned. |
max_length |
50 |
Slugs longer than this are dropped as junk. |
Testing
composer test
License
The MIT License (MIT). Please see License File for more information.