Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Markdown Response Laravel Package

spatie/laravel-markdown-response

Serve markdown versions of your Laravel HTML pages for AI agents and bots. Detect markdown requests via Accept: text/markdown, known user agents, or .md URLs. Driver-based conversion (local PHP or Cloudflare Workers AI), with caching and HTML preprocessing.

View on GitHub
Deep Wiki
Context7

title: Clean up HTML with preprocessors weight: 1

Before HTML is converted to markdown, it runs through preprocessors that strip elements which don't belong in a markdown document, like scripts, navigation menus, or advertising.

The package ships with four preprocessors:

  • RemoveScriptsAndStylesPreprocessor: strips <script> tags, <style> tags, and stylesheet <link> tags. Enabled by default.
  • RemoveNavigationPreprocessor: strips <nav> elements. Not enabled by default.
  • RemoveHeaderPreprocessor: strips <header> elements. Not enabled by default.
  • RemoveFooterPreprocessor: strips <footer> elements. Not enabled by default.

You can configure which preprocessors run in the config file:

// config/markdown-response.php

'preprocessors' => [
    Spatie\MarkdownResponse\Preprocessors\RemoveScriptsAndStylesPreprocessor::class,
    Spatie\MarkdownResponse\Preprocessors\RemoveNavigationPreprocessor::class,
],

Preprocessors run in the order they are listed.

Create a custom preprocessor

A preprocessor is an invokable class that implements the Preprocessor interface:

namespace App\Preprocessors;

use Spatie\MarkdownResponse\Preprocessors\Preprocessor;

class RemoveAds implements Preprocessor
{
    public function __invoke(string $html): string
    {
        return preg_replace('/<div\b[^>]*class="[^"]*\bad\b[^"]*"[^>]*>.*?<\/div>/is', '', $html);
    }
}

Then register it in the config file:

// config/markdown-response.php

'preprocessors' => [
    Spatie\MarkdownResponse\Preprocessors\RemoveScriptsAndStylesPreprocessor::class,
    App\Preprocessors\RemoveAds::class,
],
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport