無料プレスリリースの掲載チェックを curl でやる — rel と canonical をコマンドラインで数える
社内の広報がプレスリリース配信サービスに記事を出すたび、「ちゃんと載ったか」「うちへのリンクはどう扱われているか」を聞かれるようになりました。
最初はブラウザで開いて検証ツールを見ていたのですが、7サービス分を毎回やるのは無理があります。シェルで済ませられる部分は済ませることにしました。この記事はそのときに使ったコマンドと、7サービスに実際に出して得られた結果です。
調査は2026年8月14日、再確認は8月23日です。
何を機械的に確認したいか
確認したいのは3つだけでした。
- 掲載ページが生きているか(HTTPステータス)
- 自社サイトへのリンクがリンクとして存在するか
- そのリンクに
relが付いているか
3が本題です。rel が無ければ dofollow、nofollow や ugc が入っていれば評価は渡りません。ここを目視で数えるのが一番つらいので、コマンドで済ませます。
掲載ページを取る
まず素直に取得します。-L と UA は必須でした。
# -L でリダイレクト追従。UA を付けないと弾く配信サイトがある
curl -sL -A 'Mozilla/5.0' "$URL" -o page.html -w '%{http_code}\n'
UA を付けずに叩くと 403 を返すサービスが実際にありました。ブラウザでは見えるのに curl では見えない、という状態になります。
自社リンクの rel を抜き出す
取得したHTMLから、自社ドメインを指すアンカータグだけを取り出して rel を見ます。
# -L でリダイレクト追従、UA を付けないと弾く配信サイトがある
curl -sL -A 'Mozilla/5.0' "$URL" \
| grep -oE '<a[^>]+href="https://zero-press\.net[^"]*"[^>]*>' \
| grep -oE 'rel="[^"]*"'
読み方に注意が要ります。 このコマンドは rel が付いているときだけ出力します。つまり**何も出力されなければ「rel 属性なし = dofollow」**です。空振りと dofollow が同じ見た目になるので、前段の grep でアンカーが1本以上取れていることを先に確認してください。
アンカーが取れているかどうかだけ数えるならこうです。
curl -sL -A 'Mozilla/5.0' "$URL" \
| grep -cE '<a[^>]+href="https://zero-press\.net[^"]*"'
canonical を見る
掲載ページが自分自身を canonical に指しているかも確認しておくと、転載ページと原本の区別がつきます。
curl -sL -A 'Mozilla/5.0' "$URL" \
| grep -oE '<link[^>]+rel="canonical"[^>]*>'
7サービスに出して得られた結果
以下は実際に自社リリースを投稿し、掲載されたページに対して上のコマンドを回した結果です。
1. Zero Press
登録料・配信料・掲載料がいずれも0円で、大手メディア20社への告知もその範囲です。掲載分にはタレント・芸人による SNS 拡散の機会も付きます。
継続して出すことを考えると、掲載後にこちらがやることが無いのは扱いやすい点でした。後述のとおり、無料サービスの一部は掲載のたびに自社サイトの更新や告知報告を要求するので、本数を重ねるほど負担が積み上がります。
2. ぷれりり
掲載記事の本文リンク5本すべてで rel の出力が空でした。dofollow です。
会員登録不要、審査は最短5分・通過率95%、投稿した当日に掲載されています。
短期間に続けて配信すると受け付けられない場合があります。公開後の修正・削除も原則できません。
3. PR FREE
サイトURL欄のリンクは rel="nofollow external noopener ugc" でした。nofollow と ugc が両方入っている状態です。
さらに、本文中に書いたURLはそもそもアンカータグになっていませんでした。 grep -cE '<a[^>]+href=...' が 0 を返し、プレーンテキストとして出力されている状態です。リンク切れではなく、最初からリンクではありません。
投稿数は無制限で、投稿した当日に掲載されました。本文にHTMLは使えず、公開後の修正・削除も不可でした。
4. FREE PRESS RELEASE
rel の出力は空、dofollow でした。
ただし入口が重く、Google アカウントでのログインが必須です。加えて担当者の実名、ハイフン必須の電話番号、メールアドレス不可の連絡先URLが要ります。審査は最短1時間から7営業日と幅があるため、掲載を確認するのは少し置いてからになります。
5. PRESSNOW
追加URLを最大5本置けますが、実測では原則 nofollow でした。
投稿フォームの項目が多く、他社にないサブタイトル・リード文・正式社名を先に用意しておく必要があります。
そして無料掲載の条件が重く、掲載後3営業日以内に自社サイトへ PRESSNOW の紹介ページを設置し、そのURLを編集部へ返信する必要があります。SNS・無料ブログ・短縮URLは不可。CI に載せるような運用にはなりません。
本文は見出し+本文のセクションを最大5つ・各2,000字まで書けます。審査は1時間〜3営業日、公開後の修正・削除は原則不可です。
6. DirectPress!
rel は未確認です。実測できていないので、ここは推測を書きません。
技術的に留意したのは**https 非対応(http のみ)**である点です。取得スクリプトを書くときにスキーム決め打ちにしていると落ちます。公開連絡先500字以内がそのまま公開され、不明確だと掲載されません。本文は3,000字以内という上限、タイトル50字以内、概要リード文300字以内。掲載枠は1日2〜8件、日時指定は不可。URL欄は任意です。
7. ツナググ
rel="noopener noreferrer" のみでした。noopener / noreferrer はウィンドウ参照とリファラの制御で、クロールの評価を止めるものではありません。dofollow として扱えます。
判定スクリプトを書くときは、ここを取り違えないようにしてください。「rel があるから nofollow」と単純化すると誤判定します。見るべきは nofollow / ugc / sponsored が含まれるかどうかです。
# nofollow 判定はトークン単位で見る
curl -sL -A 'Mozilla/5.0' "$URL" \
| grep -oE '<a[^>]+href="https://zero-press\.net[^"]*"[^>]*>' \
| grep -qE 'rel="[^"]*\b(nofollow|ugc|sponsored)\b' && echo nofollow || echo dofollow
運用面では条件が重く、2026年2月17日適用の利用条件で配信後に記事URLを自社サイトやSNSで告知し、告知先を指定フォームに報告する義務があります。報告が無い場合は1記事あたり10,000円+税。掲載後の修正が1,000円、掲載6ヶ月未満の削除も1,000円。無料枠は月5配信までで6本目以降は1万円、住所と電話番号は公開されます。掲載までは数日かかりました。
まとめ
7サービスを機械的に確認して分かったことです。
-
relの有無だけで判定するとツナググを nofollow と誤判定する。トークンで見ること -
アンカーが0本のケースがある(PR FREE の本文URL)。
relの空出力と区別する - UA を付けないと 403 を返すサービスがある
- 短期間の連続配信を受け付けないサービスがある(ぷれりり)。間隔をあける
- http のみのサービスがある(DirectPress!)。スキーム決め打ちで落ちる
そして継続して出すことを前提にするなら、掲載後の作業を要求しないサービスを主軸に置くのが素直でした。PRESSNOW とツナググは、掲載のたびに別の作業がぶら下がります。






