1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

URLを入力するだけでページのSEOメタタグやOGPをまとめて確認できるWebツールを開発しました

1
Posted at

はじめに

Webサイトの運営やSEO対策において、ページのタイトル、メタディスクリプション、H1見出し、そしてSNSシェア時に表示されるOGPタグが正しく設定されているかを確認する作業は欠かせません。しかし、毎回ブラウザの「ページのソースを表示」を開いて手動で探したり、専用の重い診断ツールを通したりするのは少し手間に感じることがあります。

「ブラウザからURLを入力するだけで、必要なSEOメタタグを一覧でサクッと確認したい」

といった日常のちょっとした手間に応えるため、「指定したURLのHTMLを cURL で取得し、DOMXPath を用いて主要なメタタグや見出しを瞬時に抽出・可視化できる軽量ツール」を開発しました。

本記事では、開発したツールの概要と、文字コードの自動判定やDOM解析を安全に行うためのPHPでの実装ポイントについて紹介します。

作ったツール

メタタグ(SEO)チェッカー
👉 https://ss-infra.net/meta-checker/

主な機能

  • 主要SEOタグの一括抽出: Title、Description、H1見出しをまとめて取得し、それぞれの文字数も同時にカウント
  • OGPタグの網羅的な確認: og:title、og:description、og:image などのSNS拡散に必須のタグ情報を正確に取得
  • 文字コードの自動検出・変換: さまざまな文字エンコーディングで作られたページでも文字化けせずに解析

開発の背景と抱えていた課題

自社サイトやクライアントサイトの公開前チェック、あるいは競合サイトの構造調査において、「いま設定されているメタタグの文字数や内容をパッと確認したい」というシーンは頻繁にあります。外部の複雑なクローラーツールを使うまでもなく、シンプルかつ高速にブラウザ上で確認を完結させたいと考え、本ツールの開発に至りました。

技術的なポイント:安全かつ柔軟なHTML解析を実現するPHP実装

PHPの cURL で対象URLのHTMLを取得し、マルチバイトの文字コード補正や DOMDocument と DOMXPath を組み合わせた堅牢なスクレイピング処理を実装しています。

1. cURLによる安全なHTML取得と文字コード補正

最大リダイレクト数やタイムアウトを設定して安全にHTMLを取得し、サイトごとに異なる文字コード(UTF-8、Shift-JIS、EUC-JPなど)を自動検出して UTF-8 へ統一することで、文字化けを防いでいます。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, 'SS-Infra-MetaChecker/1.0 (+https://ss-infra.net/)');
$html = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($html === false || $http_code >= 400) {
    $error = "URLへの接続に失敗しました(HTTPステータスコード: {$http_code})。";
} else {
    // 文字コードの自動検出とUTF-8変換
    $encoding = mb_detect_encoding($html, ['UTF-8', 'SJIS-win', 'EUC-JP', 'ASCII'], true);
    if ($encoding && $encoding !== 'UTF-8') {
        $html = mb_convert_encoding($html, 'UTF-8', $encoding);
    }
}

2. DOMXPathによる正確なメタタグ・見出しの抽出

取得したHTMLを DOMDocument で読み込み、DOMXPath を利用して大文字小文字の揺れ(property や name 属性の違いなど)を吸収しながら、必要なメタタグやH1要素を確実に抽出しています。

libxml_use_internal_errors(true);
$dom = new DOMDocument();
@$dom->loadHTML($html);
libxml_clear_errors();

$xpath = new DOMXPath($dom);

// Title取得
$title_nodes = $xpath->query('//title');
$title = ($title_nodes->length > 0) ? trim($title_nodes->item(0)->nodeValue) : '未設定';

// Meta Description取得
$desc_nodes = $xpath->query('//meta[translate(@name, "DESCRIPTION", "description")="description"]/@content');
$description = ($desc_nodes->length > 0) ? trim($desc_nodes->item(0)->nodeValue) : '未設定';

// H1タグの取得
$h1_nodes = $xpath->query('//h1');
$h1_list = [];
foreach ($h1_nodes as $h1) {
    $h1_list[] = trim($h1->nodeValue);
}
$h1_text = !empty($h1_list) ? implode(' / ', $h1_list) : '未設定';

おわりに

WebページのメタタグやSEO構成を手軽にチェックしたいときは、ぜひ使ってみてください!

👉 メタタグ(SEO)チェッカーを試してみる

ご意見・改善のご要望などがあれば、ぜひQiitaのコメント欄やフィードバックでお知らせいただけると嬉しいです!

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?