PHPackages                             awcodes/botly - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. awcodes/botly

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

awcodes/botly
=============

Botly is a Filament plugin to manage your site's robots.txt file directly from a Filament admin panel.

v1.0.0(2mo ago)531—3.2%1MITPHPPHP ^8.2CI passing

Since Mar 5Pushed 2mo agoCompare

[ Source](https://github.com/awcodes/botly)[ Packagist](https://packagist.org/packages/awcodes/botly)[ Docs](https://github.com/awcodes/botly)[ GitHub Sponsors](https://github.com/awcodes)[ RSS](/packages/awcodes-botly/feed)WikiDiscussions 1.x Synced 1mo ago

READMEChangelog (1)Dependencies (12)Versions (2)Used By (0)

Botly
=====

[](#botly)

Botly is a Filament plugin to manage your site's `robots.txt` file directly from the Filament admin panel. Rules, sitemaps, and AI crawler blocks are stored in the database and served dynamically — no static file required.

[![Latest Version](https://camo.githubusercontent.com/8d804fe936d178df37bff887045fec45542a96a412061edad8d4ae70735c181a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6177636f6465732f626f746c792e7376673f7374796c653d666c61742d73717561726526636f6c6f723d626c7565266c6162656c3d52656c65617365)](https://github.com/awcodes/botly/releases)[![MIT Licensed](https://camo.githubusercontent.com/a7e65aee57b11d28e4caff8b945729a66be0bb663f7f93bd24c5aa65699f148e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)[![Total Downloads](https://camo.githubusercontent.com/f17b6db424f1467eb71a12431637e00ef596c7bdd1222b537b2f7dc34bf4586b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6177636f6465732f626f746c792e7376673f7374796c653d666c61742d73717561726526636f6c6f723d626c7565266c6162656c3d446f776e6c6f616473)](https://packagist.org/packages/awcodes/botly)[![GitHub Repo stars](https://camo.githubusercontent.com/a2bc41a2af848d0a90838cf2a5411717502de7a3b7bba6e6f36bb90e5327a835/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6177636f6465732f626f746c793f7374796c653d666c61742d73717561726526636f6c6f723d626c7565266c6162656c3d5374617273)](https://github.com/awcodes/botly/stargazers)[![Filament Version](https://camo.githubusercontent.com/1145258bf11f38b7a617bf7232b2806dd048df634baf65b979264720e1276a29/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46696c616d656e742d342e782d6439373730362e7376673f7374796c653d666c61742d737175617265)](https://filamentphp.com/docs/4.x/panels/installation)[![Filament Version](https://camo.githubusercontent.com/bbef05c33db7b3cdd06be3d93caf852efe0c0214a421c03afba376ab9793200a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46696c616d656e742d352e782d6439373730362e7376673f7374796c653d666c61742d737175617265)](https://filamentphp.com/docs/5.x/panels/installation)

Installation
------------

[](#installation)

Install the package via Composer:

```
composer require awcodes/botly
```

Run the installation command to publish migrations and run them:

```
php artisan botly:install
```

Or publish and run the migration manually:

```
php artisan vendor:publish --tag="botly-migrations"
php artisan migrate
```

Optionally publish the config file:

```
php artisan vendor:publish --tag="botly-config"
```

Setup
-----

[](#setup)

Register the plugin in your Filament panel provider:

```
use Awcodes\Botly\BotlyPlugin;

$panel->plugins([
    BotlyPlugin::make(),
]);
```

That's it. Botly registers a **Robots Manager** page in your panel and automatically serves `/robots.txt` via a dynamic route.

How It Works
------------

[](#how-it-works)

Botly stores your robots configuration in the database. When `/robots.txt` is requested, the rules are read from the database and formatted as valid `robots.txt` output on the fly. You can also export the current configuration to a static `public/robots.txt` file using the **Export Robots.txt** button on the admin page.

Important

If a static `public/robots.txt` file already exists, Botly will display a warning in the admin UI. The file must be deleted or renamed before the dynamic route can take effect.

Configuration
-------------

[](#configuration)

The published config file (`config/botly.php`) allows you to set default values that are used when no database record exists yet:

```
return [
    'defaults' => [
        'rules' => [],
        'sitemaps' => [],
        'ai_crawlers' => [],
    ],
    'persistent_rules' => [],
];
```

### Persistent Rules

[](#persistent-rules)

Persistent rules are rules that are always included in the output and cannot be edited or deleted from the admin UI. You can define them in the config file or fluently on the plugin:

**Via config:**

```
// config/botly.php
'persistent_rules' => [
    [
        'user_agent' => '*',
        'directive' => 'disallow',
        'path' => '/admin',
    ],
],
```

**Via plugin:**

```
BotlyPlugin::make()
    ->persistentRules([
        [
            'user_agent' => '*',
            'directive' => 'disallow',
            'path' => '/admin',
        ],
    ]),
```

Each rule is an array with three keys:

KeyValues`user_agent`Any string, e.g. `*`, `Googlebot``directive``allow`, `disallow`, `crawl-delay`, `clean-param``path`The path to allow or disallow, e.g. `/admin`Customisation
-------------

[](#customisation)

### Navigation

[](#navigation)

```
BotlyPlugin::make()
    ->navigationIcon('heroicon-o-robot')
    ->navigationGroup('Settings')
    ->navigationLabel('Robots.txt'),
```

### Page

[](#page)

```
BotlyPlugin::make()
    ->title('Robots Manager')
    ->slug('robots-manager'),
```

AI Crawler Blocking
-------------------

[](#ai-crawler-blocking)

The admin page includes a **Block AI Crawlers** checkbox list. Selecting crawlers will add `Disallow: /` entries for each one in the output. Botly ships with a curated list of known AI crawlers including GPTBot, ClaudeBot, PerplexityBot, and more.

Testing
-------

[](#testing)

```
composer test
```

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](.github/SECURITY.md) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Adam Weston](https://github.com/awcodes)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance87

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 66.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

65d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3596800?v=4)[Adam Weston](/maintainers/awcodes)[@awcodes](https://github.com/awcodes)

---

Top Contributors

[![awcodes](https://avatars.githubusercontent.com/u/3596800?v=4)](https://github.com/awcodes "awcodes (2 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

filamentfilament-pluginlaravelrobotsfilamentrobots.txtawcodesbotly

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/awcodes-botly/health.svg)

```
[![Health](https://phpackages.com/badges/awcodes-botly/health.svg)](https://phpackages.com/packages/awcodes-botly)
```

###  Alternatives

[pboivin/filament-peek

Full-screen page preview modal for Filament

253319.6k12](/packages/pboivin-filament-peek)[awcodes/filament-badgeable-column

Filament Tables column to append and prepend badges.

142419.3k3](/packages/awcodes-filament-badgeable-column)[dotswan/filament-map-picker

Easily pick and retrieve geo-coordinates using a map-based interface in your Filament applications.

124139.3k2](/packages/dotswan-filament-map-picker)[creagia/filament-code-field

A Filamentphp input field to edit or view code data.

58289.3k3](/packages/creagia-filament-code-field)[jibaymcs/filament-tour

Bring the power of DriverJs to your Filament panels and start a tour !

12247.8k](/packages/jibaymcs-filament-tour)[aymanalhattami/filament-context-menu

context menu (right click menu) for filament

9838.0k](/packages/aymanalhattami-filament-context-menu)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
