wizardstool / seo-audit
SEO审计工具包
1.0.2
2023-09-17 14:18 UTC
Requires
- php: >=7.1
- ext-mbstring: *
- imangazaliev/didom: ^1.18
Requires (Dev)
- phpunit/phpunit: ^10.3
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-28 12:54:44 UTC
README
此工具对HTML页面应用不同的SEO审计。
工作原理
- 提供HTML文档作为输入
- 工具将解析、提取重要数据并进行一些测试。
- 输出
- 提取的SEO数据
- 审计结果
功能
- 提取主要SEO数据:标题、描述、关键词、规范URL等。
- 标题审计
- 标题存在
- 标题非空
- 标题长度适中
- 无标题重复
- 标题在head中
- 描述审计
- 描述存在
- 描述非空
- 描述长度适中
- 无描述重复
- 描述在head中
- 规范URL审计
- 规范URL存在
- 规范URL非空
- 规范URL不等于页面URL
- 无规范URL重复
- 规范URL在head中
- 可以创建自定义审计并传递给
AuditBuilder
快速入门
<?php require_once __DIR__.'/vendor/autoload.php'; use Wizardstool\SeoAudit\AuditBuilder; use Wizardstool\SeoAudit\Audits\DescriptionAudit; use Wizardstool\SeoAudit\Audits\CanonicalUrlAudit; use Wizardstool\SeoAudit\Audits\TitleAudit; use Wizardstool\SeoAudit\AuditIssues; $subAudits = [ new TitleAudit(), new DescriptionAudit(), new CanonicalUrlAudit(), ]; $html = <<<'HTML' <html> <head> <title>This is title</title> <meta name="description" content="This is document with description." /> <link rel="canonical" href="https://my-second-url-for-test.com"> </head> </html> HTML; $audit = new AuditBuilder('https://my-url-for-test.com', $html, $subAudits); $audit->run(); $result = $audit->getAuditResult(); var_dump($result);
此数据是审计结果
object(Wizardstool\SeoAudit\AuditResult)#6 (4) { ["title":"Wizardstool\SeoAudit\AuditResult":private]=> string(13) "This is title" ["description":"Wizardstool\SeoAudit\AuditResult":private]=> string(34) "This is document with description." ["canonicalUrl":"Wizardstool\SeoAudit\AuditResult":private]=> string(34) "https://my-second-url-for-test.com" ["issues":"Wizardstool\SeoAudit\AuditResult":private]=> array(1) { ["seo"]=> array(3) { ["Wizardstool\SeoAudit\Audits\TitleAudit"]=> array(1) { [4]=> array(1) { ["length"]=> int(13) } } ["Wizardstool\SeoAudit\Audits\DescriptionAudit"]=> array(1) { [4]=> array(1) { ["length"]=> int(34) } } ["Wizardstool\SeoAudit\Audits\CanonicalUrlAudit"]=> array(1) { [7]=> array(2) { ["canonical_url"]=> string(34) "https://my-second-url-for-test.com" ["page_url"]=> string(27) "https://my-url-for-test.com" } } } } }
数组issues
的第一级键是审计类型(SEO、安全性、性能等)。第二级数组键是审计类,例如Wizardstool\SeoAudit\Audits\TitleAudit
,其键来自\Wizardstool\SeoAudit\AuditIssues
。例如,4来自常量\Wizardstool\SeoAudit\AuditIssues::TITLE_TOO_SHORT
。因此,您可以这样处理标题太短的情况
$result = $audit->getAuditResult(); $titleTooShortResult = $result->getIssues()['seo'][TitleAudit::class][AuditIssues::TITLE_TOO_SHORT]; if (isset($titleTooShortResult['length'])) { echo sprintf('Title "%s" is too short, its length %d. It should be atleast %d characters.', $result->getTitle(), $titleTooShortResult['length'], (new TitleAudit())->getTitleMinLength()); }
输出
Title "This is title" is too short, its length 13. It should be atleast 50 characters.
自定义审计
$titleAudit = new TitleAudit(); // setup custom title limits $titleAudit->setTitleMinLength(45); $titleAudit->setTitleMaxLength(70); $subAudits = [ $titleAudit, new DescriptionAudit(), new CanonicalUrlAudit(), ];
测试
执行测试
make test