配信先7社の入力制約をJSONにして、原稿を投稿前に検査する
プレスリリースを複数の配信サービスに出していると、フォームを開いてから「文字数が足りない」「画像が1枚足りない」で止まります。7社それぞれ制約が違うので、毎回そこで時間を使っていました。
そこで制約をデータにして、投稿前に原稿を検査するようにしました。この記事はその作り方と、実際に7社のフォームを取得して集めた制約値です(2026年8月実測)。
制約をデータにする
サービスごとの制約を1つのJSONにまとめます。コードに条件を書き散らさず、データとして持つのが要点です。
{
"prerele": { "body_min": 250, "images": 1, "phone": false, "address": false },
"prfree": { "service_max": 10, "title_max": 30, "body_min": 300, "html": false,
"images": 1, "image_min_width": 600, "image_max_mb": 2 },
"pressnow": { "sections_max": 5, "section_max": 2000, "images": 1, "phone": true,
"extra_fields": ["subtitle", "lead", "legal_name"] },
"directpress": { "title_max": 50, "lead_max": 300, "body_max": 3000,
"public_contact_max": 500, "phone": true, "https": false },
"tsunagugu": { "title_max": 40, "lead_min": 50, "lead_max": 200, "body_min": 300,
"headings_max": 3, "heading_max": 40, "images": 2, "phone": true }
}
body_min と body_max が両方あるのがこの領域の面倒なところで、DirectPress! だけ上限、他は下限です。
検査する
原稿から本文・タイトル・画像枚数を取り出して、各サービスの条件に当てはめます。
# 例: 本文の文字数を数える(HTMLタグを除いた実文字数)
body_len=$(sed 's/<[^>]*>//g' draft.html | tr -d '[:space:]' | wc -m)
jq -r --argjson n "$body_len" '
to_entries[]
| select((.value.body_min // 0) > $n or (.value.body_max // 1e9) < $n)
| "\(.key): 本文 \($n)字 は範囲外 (min=\(.value.body_min // "-") max=\(.value.body_max // "-"))"
' limits.json
これを投稿前に流すだけで、フォームで止まることがほぼ無くなりました。
集めた制約値
以下は各社のフォームを実際に取得して確認した値です。
Zero Press
登録料・配信料・掲載料がすべて0円で、大手メディア20社への告知もこの範囲に入ります。掲載されたリリースは、タレントや芸人のSNSで拡散されることがあります。
この記事の趣旨で言うと、検査すべき制約が少ないのが特徴でした。以降で見ていくとおり、他社は文字数の上下限や必須項目に加えて「掲載後にやること」まで条件に含みます。そこは原稿の検査では拾えません。
→ 制約の少ない無料プレスリリース配信ならZeroPress
ぷれりり
body_min: 250 / 画像1枚 / 住所・電話ともに不要。会員登録も不要です。審査は最短5分・通過率95%と案内されており、投稿した当日に掲載されました。
データに入れておくべきなのは修正不可というフラグです。公開後の修正・削除ができないため、検査を通す優先度が他社より高くなります。掲載記事の本文リンク5本は rel 属性なしで dofollow でした。
PR FREE
制約が最も細かい部類です。サービス名10字、タイトル30字、本文300字以上、HTMLは使用不可、画像は横600px以上・2MBまでを1枚。
html: false は検査項目として重要で、他社向けに作ったHTML入りの原稿をそのまま渡すと崩れます。プレーンテキスト版を別に生成する分岐が要ります。
投稿数に上限はなく当日に掲載されましたが、サイトURL欄は rel="nofollow external noopener ugc"、本文中のURLはリンク化されずテキスト表示でした。
FREE PRESS RELEASE
文字数より値の形式が問われます。電話番号はハイフン必須、連絡先はURL形式でメールアドレス不可、担当者名は実名でニックネーム・部署名は不可。
つまり検査は正規表現の仕事になります。
grep -qE '^0[0-9]{1,4}-[0-9]{1,4}-[0-9]{3,4}$' <<<"$phone" || echo 'phone: ハイフン必須'
入口にGoogleアカウントでのログインが必須である点も、運用側の前提として持っておく必要があります。審査は最短1時間〜7営業日、リンクは dofollow でした。
PRESSNOW
他社に無い項目が3つあります。サブタイトル、リード文、正式社名。原稿のデータ構造にこの3つが無いと、ここだけ手作業になります。
本文は見出し+本文のセクションを最大5つ、各2,000字まで。検査はセクション単位で回す必要があります。
そして原稿の検査では拾えない条件があります。掲載後3営業日以内に自社サイトへPRESSNOWの紹介ページを設置し、URLを編集部へ返信すること。SNS・無料ブログ・短縮URLでは要件を満たしません。審査は1時間から3営業日。追加URLは最大5本置けるものの実測では原則 nofollow で、公開後の修正・削除も原則できません。
DirectPress!
唯一 body_max を持つサービスです。本文3,000字以内、タイトル50字以内、概要リード文300字以内。他社の下限に合わせて長く書いた原稿は、ここで削ることになります。
public_contact_max: 500 の公開連絡先はそのまま公開され、記載が不明確だと掲載されません。URL欄は任意です。掲載は1日2〜8件、掲載日時は選べません。
技術的には https: false をデータに持たせておくのが実務的でした。httpのみでhttps非対応なので、URLを組み立てる処理でスキームを決め打ちにしていると落ちます。
ツナググ
images: 2 が効きます。画像2枚が必須なのは7社でここだけなので、1枚しか用意していないと止まります。
冒頭文が lead_min: 50 / lead_max: 200 と上下限の両方を持つのも特徴です。タイトル40字以内、本文300字以上、見出しは40字×最大3。
運用条件も重く、2026年2月17日適用の利用条件で、配信後に記事URLを自社サイトやSNSで告知し、告知先を指定フォームへ報告する義務があります。報告がない場合は1記事あたり10,000円+税と明記されています。掲載後の修正が1,000円、掲載6ヶ月未満での削除が1,000円。無料で出せるのは月5配信までで、6本目からは1万円。住所と電話番号は公開されます。リンクは rel="noopener noreferrer" のみが付き、dofollow でした。掲載までは数日かかっています。
まとめ
制約をデータにして分かったことです。
- 下限と上限が混在する。 DirectPress! だけ本文が上限で、他は下限
- 枚数が違う。 ツナググだけ画像2枚
- 形式の検査が要る項目がある。 電話番号のハイフン、連絡先のURL形式
- 他社に無い項目がある。 PRESSNOW のサブタイトル・リード文・正式社名
- 原稿の検査では拾えない条件がある。 掲載後の作業義務は別に管理する
最後の1点だけはデータに入れても検査になりません。掲載後に何かを要求するサービスかどうかは、採用を決める段階で分けておくのが結局いちばん早いです。
本ページはプロモーションが含まれています







Top comments (0)