AI 爬虫和代理越来越多地消费网络内容,但它们不需要你的完整 HTML——导航菜单、JavaScript 包和装饰性标记对它们来说都是噪音,它们必须绕过它们。 空间 Laravel Markdown Response 包可以让你的 Laravel 应用检测到机器人或代理何时请求页面,并以简洁的 Markdown 版本进行响应。
无需对控制器或视图进行任何更改。该软件包在中间件层工作,拦截响应并将 HTML 转换为 Markdown 后再发送回去。
安装
作曲家
要求
space/laravel-markdown-response
该软件包会自动注册。要开始使用,请将任何要以 Markdown 格式公开的路由包装起来。
ProvideMarkdownResponse
中间件:
使用
空间\Markdown响应\中间件\提供Markdown响应
;路线
::
中间件
(
提供 Markdown 响应
::班级
)
->
团体
(
功能
(){
路线
::
得到
(
'/博客'
,[
博客控制器
::班级
,
'指数'
]);
路线
::
得到
(
'/blog/{article}'
,[
博客控制器
::班级
,
'展示'
]);
路线
::
得到
(
'/docs/{page}'
,[
文档控制器
::班级
,
'展示'
]);});
如果希望中间件覆盖所有路由,也可以全局应用该中间件。
检测原理
中间件通过三种机制识别 Markdown 请求:
- 一个
Accept: text/markdownHTTP 标头 - A
.mdURL 上的后缀(例如)/blog.md) - 已知的AI机器人用户代理,包括GPTBot和ClaudeBot。
当
.md
使用 URL 后缀时,软件包会注册一个
RewriteMarkdownUrls
全局中间件会在路由前去除后缀,因此
/blog.md
解决你的
/blog
路线照常,然后在出路时进行转换。
您还可以直接在控制器类或方法上使用 PHP 属性来控制转换,而无需中间件。
#[ProvideMarkdown]
选择控制器或操作进行 Markdown 转换,而
#[DoNotProvideMarkdown]
明确排除在外。
转换和缓存
默认情况下,转换是在本地使用以下方式处理的:
league/html-to-markdown
司机
不过,您也可以选择使用 Cloudflare Workers AI 驱动程序。
转换后的响应会自动缓存。默认 TTL 为一小时,但缓存行为和持续时间均可配置。要发布配置文件:
php
工匠
供应商:发布
--标签=
"markdown-response-config"
以下是一些可行的方案:
| 选项 | 默认 | 描述 |
|---|---|---|
enabled |
true |
切换 Markdown 转换开关 |
driver |
league |
league
或者
cloudflare |
detect_via_accept_header |
true |
回应
Accept: text/markdown |
detect_via_md_suffix |
true |
回应
.md
URL后缀 |
cache.enabled |
true |
缓存已转换的响应 |
cache.ttl |
3600 |
缓存持续时间(秒) |
直接转换
如果您需要在中间件之外将 HTML 转换为 Markdown,
Markdown
外观提供直接接口:
使用
空间\Markdown响应\外观\Markdown
;$markdown
=
Markdown
::
转变
($html)
您可以在以下位置找到完整文档: spatie.be/docs/laravel-markdown-response 以及源代码 GitHub 。





