# Pre-registration — PPN World Research Paper No. 2
## The anatomy of a press release

**Registered: 2026-10-11, approved by the author.** This file, the code it
names (§5, §10) and a manifest of their SHA-256 hashes are committed together
and deposited, unchanged, on Zenodo, whose record gives the registration an
independent timestamp and a DOI. No page of the frame (§3) is fetched before
that record is published.

**What had been looked at before registration** (feasibility only):

- the archive's English-language releases per website and per publisher type
  (§2) — identifiers, addresses and stored headlines only, no page;
- **pilot 1** — 100 releases, one per website, every language (seed
  20261010), fetched 2026-10-10. Its 57 English pages were used to write the
  first detection rules;
- **pilot 2** — 1,001 English releases published 2026-10-07 → 10-09, *after*
  the study window, so none can be in the frame, drawn with the draft design's
  square-root rule (seed 20261014) and fetched 2026-10-10 by the registered
  code. It was used to fix the fetching protocol (§4: disguised bot checks,
  pages that need JavaScript, PDF-only releases, invalid certificates, a
  robots.txt retry, a hacked public body's pages), the language check, and
  the detection rules (§5: datelines in nine published variants, line breaks,
  contact cues), and to write and test the analysis code (§10).
  **Its outcomes were seen**, including the direction of each hypothesis: H2
  and H3 held in the pilot, H1 and H4 did not reach significance. The four
  hypotheses and their tests are those drafted *before* pilot 2, with two
  changes made after it and disclosed here: H4's title was reworded in neutral
  terms (its test is unchanged), and **the dateline measure behind H2 was
  widened** to count a distributor's tag without a place, because the largest
  distributor's pages carry no place in their HTML (§5). The main study tests
  the hypotheses on independent data. Pilot 2 is described in the paper's
  supplement as a pilot, not as a result;
- monthly search volumes for questions about press releases (Ahrefs,
  2026-10-10), used to choose the topic;
- the literature in §1.

The frame is pre-existing data (Paper No. 1's pull), so this list states what
was seen of it before registration, as recommended for analyses of existing
data (Weston et al., 2019). The independent timestamp answers the obvious
objection to a registration kept in one's own repository (Nosek et al., 2018).

---

### 1. Question and prior work

What is a press release made of in 2026? How long is it, what sits in its
first line, who is quoted and how, does it tell a journalist whom to call, and
which conventions of the newswire era — the dateline, *FOR IMMEDIATE RELEASE*,
the `###` end mark, the *About* boilerplate — are still in use, and by whom?

**The genre.** Linguists describe the press release as a hybrid genre,
informative in form and promotional in purpose (Catenaccio, 2008), argue that
its form alone does not make it a genre (Lassen, 2006), and show that it is
written to be copied: third-person self-reference and quotations prepared for
the journalist's article ("preformulation"; Jacobs, 1999).

**Measured so far.** Content analyses have covered hundreds to a few thousand
releases from one sector or country — 462 UK university releases (Sumner et
al., 2014), for example. The largest count we found is commercial: a distributor's analysis of 138,901
releases from ten newswires, 2021–2026, reporting that 90.2% of headlines
exceed 60 characters and 24.9% of releases carry no *About* section (PR Gun,
2026; not peer-reviewed, distributor releases only). To our knowledge, no
study has measured the form of every press release in a defined population across
companies, distributors and public bodies, or pre-registered its hypotheses.

**Definition.** A press release is a statement an organization publishes about
itself, addressed to the news media and the public — on its own website or
through a distributor. Because the genre is hybrid, this study does not
exclude items by guessing at their purpose: it takes everything the archive's
sources publish as releases, **measures the form** — including whether an item
is written as a bylined news story (§5) — and reports results with and without
those items (R2).

### 2. Population (the frame) and what it does not cover

Every release in PPN World's archive with a stated publication date from
2026-07-01 to 2026-10-06 (UTC) — Paper No. 1's frozen pull of 2026-10-07 — from
a source PPN World served on 2026-10-07, with a valid http(s) link and a
stored language of English, counted once per release address (tracking tags
removed; 17,698 repeated addresses dropped), minus pilot 1's releases:
**246,777 releases on 1,151 websites.** A website is an origin (scheme, host,
port). Each website takes the publisher type of the sources that link to it
(the type contributing most releases): government, municipality, company,
wire (commercial distributors), university, league, nonprofit, political,
other.

- **Distributors** = wire. **Organizations' own websites** = every other type.
- **Commercial publishers** = wire + company. **Public bodies** = government +
  municipality.

**External validity.** The frame is the releases of the sources PPN World
follows, chosen for a commercial monitoring service; it is not a random sample
of every press release published in English. Results describe this frame,
in this quarter. The paper says so wherever it generalizes.

### 3. Census

**Every release of the frame is read: 246,777 releases on 1,151 websites** —
wire 142,073 releases on 95 websites, government 46,547 on 391, league 34,574
on 127, municipality 9,173 on 122, company 5,281 on 220, university 4,805 on
125, nonprofit 2,055 on 39, political 1,609 on 11, other 660 on 21.

The draft of this plan drew a square-root sample of 56,000 (Kish, 1965); the
author chose, before registration, to read every release instead
(`1-sample.mjs` keeps the sample design for the record). The study was set to
measure at least 40,000 releases; at pilot 2's rate (79%) about 180,000–195,000
are measured, the range allowing for one large distributor whose releases
cannot be opened (§4, tls-invalid).

A census has no sampling error for the frame. The intervals of §7 still come
from resampling websites: they say how much a result depends on which
publishers are in the archive — the uncertainty that matters when a finding is
read as true of press-release publishers beyond it.

### 4. Fetching, extraction and exclusions

**Courtesy.** Each website's `robots.txt` is read first and applied (RFC 9309)
to each release's path for the token `PPNWorldResearch`, falling back to the
`*` group; a disallowed release is not fetched. A `robots.txt` that cannot be
reached is asked again ten minutes later; if it still cannot, the website is
skipped (RFC 9309 §2.3.1.4). One request at a time per website, at least 1 s
apart, or the file's `Crawl-delay` up to 10 s.

**Two passes and walls** (Paper No. 1): the identified client
`PPNWorldResearch/1.0 (+https://ppnworld.com/research)`, then, if that fails,
answers 401/403/429/5xx **or a bot check served as a normal page** (a 202, a
"verify you are not a robot" text, an empty shell under 6 KB with under 200
characters of text, a redirect to a block page), once as a desktop browser. A
bot check is never solved: a release still behind one is **walled**. A
certificate that does not validate is never bypassed: the release is
**tls-invalid** (a reader's browser refuses it too). Up to five redirects, 25 s
timeout, 3 MB cap. Every page is kept (gzipped) so measurement can be re-run
without fetching again.

**Extraction.** Scripts, styles, SVG and comments are removed; the text is
extracted with Mozilla Readability (the Firefox Reader View algorithm) over
jsdom. Readability-based extractors are among the standard tools of
main-content extraction benchmarks (Bevendorff et al., 2023); a Python port of
an earlier version scores F = 0.85 on Trafilatura's 990-page benchmark
(Barbaresi, 2021; evaluation page read 2026-10-10). Our own validation (§6)
measures the extraction on these pages.

**Tool versions.** Node.js 24.21.0; Mozilla Readability 0.6.0; jsdom 26.1.0;
franc-min 6.2.0; playwright-core 1.54.2 driving the installed Google Chrome
(154.0.8037.98 on registration day; the version at run time is recorded). The
headline is the page's `<h1>`, `og:title` or Readability title that best
matches the stored headline.

**Pages that need JavaScript.** A page that is not a bot check but yields no
article or under 50 words is rendered once in headless Chrome with the same
client identity (its own scripts run; nothing is solved), and measured on the
rendered page, flagged **jsOnly** (S8: in Vercel's measurement, none of the
major AI crawlers rendered JavaScript, Googlebot and Applebot excepted —
Zecchini et al., 2024 — so these releases were blank to them).

**A release is measured** if its page answered 2xx with HTML, is not walled,
has at least 50 words of text, its headline matches the stored one (word-set
Jaccard ≥ 0.3, or the stored headline appears in the text), and its text is
English (not English = the franc language identifier names another language
**and** English function words are under 10% of its words). Excluded and
counted by reason and type: robots.txt refusal, robots.txt unreachable, not
fetched, walled, tls-invalid, PDF, **pdf-only** (a short page that links or
frames the release as a PDF), not HTML, too short, headline mismatch, not
English, and **spam** — a public body's page (government, municipality,
university) carrying three or more spam words (*casino, slots, jackpot, poker,
roulette, bookmaker, sportsbook, viagra, cialis, escort, porn*): a hacked page,
not a release.

**Non-response.** Within a website, weights are recomputed over the measured
releases (*m*/*n*′). A website with none measured drops out; how many, and
their share of the frame, is reported by reason (S6).

### 5. Measures (the code is registered with this file: `scripts/research/anatomy/measure.mjs`)

Headline: characters and words; contains a digit; an announcement verb
(*announce(s/d), unveil(s), launch(es), introduce(s), report(s), names,
appoint(s), celebrate(s), expand(s), partners*); ends with a question mark.

Top of the release: **dateline** — one of the first six text blocks, with
only short blocks (≤ 60 words) above it, opens with places (in capitals, or
in ordinary case followed by a date), optionally a region, a date and a
distributor tag, then a dash — or with a distributor's tag alone ("/…/ --",
"(…) --"), which is how the largest distributor's pages carry it. Nine
variants met in the pilots are listed in the code. **Lead** = the paragraph
the dateline opens, else the first paragraph of 15+ words that is not a date,
byline, release number or label. **Sub-headline** = a heading of 5–45 words
above the lead, or a paragraph of 5–45 words between the headline and the
dateline. **Byline** = a visible "By Firstname Lastname", not an organization,
not a CMS author tag.

Body: total words (everything below the headline) and **body words** (from
the lead to the first of: the *About* boilerplate, the contact block, the end
mark); paragraphs; Flesch–Kincaid grade of the body (Kincaid et al., 1975).

Quotations: a direct quotation of 8+ words in “ ” or " " with a speech verb
(*said, says, added, stated, noted, commented, explained, remarked, continued,
according to*) within 160 characters. **Executive** if a corporate title (*CEO,
Chief … Officer, President, Chair, Founder, Managing Director, Executive
Director, Director, General Manager, Vice President, Partner, Owner, Head of*)
appears within 200 characters and no public title does; **official** if a
public title (*Minister, Secretary, Mayor, Governor, Premier, Prime Minister,
Commissioner, Senator, Representative, Councillor, Attorney General,
Ambassador, Chancellor, Dean, Provost, Chief of Police, Sheriff,
Superintendent, Administrator*) does. **Emotion word** in the quotation:
*pleased, excited, thrilled, delighted, proud, honored/honoured, happy, glad,
elated*.

Bottom: ***About* boilerplate** (a heading or short line opening "About …");
**contact block** (a cue — *media/press/news contact(s), inquiries,
enquiries, relations, office, desk; for more/further information; contact(s):;
Media: / Press: / Investors: / Journalists:; to arrange an interview* — with an
email address or a 9+-digit phone number in it or the next three blocks), and
whether it gives an email, a phone and a **named person**; **end mark** (a line
that is `###`, `-30-` in any dash, `***` or `END(S)`); ***FOR IMMEDIATE
RELEASE*** anywhere in the page's text.

Media and links: images in the text; an embedded video (YouTube, Vimeo,
Brightcove, Wistia, JW Player); links to the same registrable domain and to
others. Structured data: the page's JSON-LD `@type`s.

### 6. Validation (before any hypothesis is read)

**Sample.** 200 measured releases drawn at random (seed 20261012), stratified
so that at least 60 come from distributors and 60 from public bodies.

**Coding.** Each is coded from the page itself, without the detector's output,
for: extraction correct (the release's text, whole, nothing foreign: yes /
partial / no), dateline, sub-headline, byline, *About* boilerplate, contact
block, named contact person, end mark, *FOR IMMEDIATE RELEASE*, at least one
quotation, an executive quotation, an emotion word in an executive quotation.

- **Coder A:** Claude (Anthropic), all 200, under the author's supervision —
  declared in the paper's AI-use statement. A large language model
  outperformed crowd workers on comparable text-annotation tasks, with higher
  intercoder agreement than trained annotators (Gilardi et al., 2023) — which
  is why one is used, and why it is checked by a person:
- **Coder B:** the author, independently, a random 50 of the 200, blind to
  coder A and to the detector.

**Reported per measure:** agreement and Krippendorff's α between coder A and
the detector (all 200), between coder B and the detector, and between coders A
and B (the 50); precision and recall of the detector against coder A
(Lombard et al., 2002, on reporting reliability).

**Rule.** A measure can decide a hypothesis only if the detector's agreement
with coder A is ≥ 90% with α ≥ .800, and coders A and B reach α ≥ .667
(Krippendorff's thresholds for reliable and tentative conclusions). Otherwise
the measure is reported with its reliability, and a hypothesis resting on it is
reported as **not decidable**. Extraction is reported as the share coded
correct.

### 7. Hypotheses and tests

Unit: the release, weighted for non-response (§4). 95% intervals and p-values from a cluster
bootstrap: 2,000 replicates resampling websites with replacement within
publisher type (seed 20261013); one-sided p = the share of replicates on the
null side. α = 0.05, Holm correction across H1–H4; all four reported with
their estimates and intervals, whatever the outcome.

**H1 — distributed releases are longer.** The weighted median total word count
is higher for releases on distributors' websites than for releases on
organizations' own websites.
*Supported* if the interval of the difference lies above zero and the
Holm-adjusted p < 0.05.

**H2 — the dateline is a distributor's convention.** A larger share of
releases on distributors' websites than on organizations' own websites open
with a dateline.
*Supported* as for H1.

**H3 — most press releases name no one to call.** Fewer than half of all
releases carry a contact block with an email address or a phone number.
*Supported* if the upper bound of the 95% interval of the share is below 50%
and the Holm-adjusted p < 0.05.

**H4 — emotion words are more frequent in executives' quotations than in
officials'.** A larger share of executive quotations in commercial publishers'
releases than of official quotations in public bodies' releases contain an
emotion word. Unit: the quotation, weighted by its release's weight.
*Supported* as for H1.

### 8. Secondary measures (reported, not tested)

- **S1.** Every measure of §5 — share or weighted median, with its interval —
  overall and by publisher type: the anatomy table.
- **S2.** Website-weighted versions (every website weighs the same), next to
  the release-level ones — distributors carry 58% of the frame's releases.
- **S3.** Headlines over 60 and over 70 characters.
- **S4.** Shared quotations: an executive or official quotation (normalized
  text) found in releases on two or more websites whose headlines do not match
  (word-set Jaccard < 0.3). Reported as counts and anonymized examples.
- **S5.** *FOR IMMEDIATE RELEASE*, end marks and the *About* boilerplate by
  publisher type.
- **S6.** Exclusions by reason and type, with their share of the frame.
- **S7.** Distributor releases compared with the only large count published
  (PR Gun, 2026): headlines over 60 characters, releases without *About*.
- **S8.** Releases whose text exists only after JavaScript runs (jsOnly).
- **S9.** Releases published only as a PDF (pdf-only + PDF).

### 9. Robustness (reported; none decides a hypothesis)

1. **R1.** Website-weighted (S2) H1–H4.
2. **R2.** Without bylined stories.
3. **R3.** Identified client only (no browser retry).
4. **R4.** Without the five largest websites.
5. **R5.** H1 on body words instead of total words.
6. **R6.** Without rendered (jsOnly) pages.
7. **R7.** Without the non-response weights (each measured release once).

### 10. Analysis code

`scripts/research/anatomy/3-analyze.mjs` — exclusions, weights, the anatomy
table, H1–H4 with the bootstrap and Holm, R1–R6 — is committed with this file,
having been written and tested on pilot 2's rows. It is run unchanged on the
census; any change after registration is a dated deviation, reported with
both results.

### 11. Conflicts of interest and how they are handled

The study is funded and published by PPN World (Bollé Communications inc.).
PPN World operates a commercial press-release monitoring service whose archive
is the frame, and which offers features that the findings touch (a directory
of press contacts; the distribution of releases). The author is affiliated with
PPN World. Mitigations: this registration and its independent timestamp; the
paper is published whatever the results; data and code are published (§13);
distributors are reported in aggregate and not named; the paper does not
promote any PPN World product in its findings or discussion.

### 12. Ethics and data protection

The study reads public web pages and involves no human participants. It
follows each website's robots.txt, identifies itself honestly, limits its
pace, and never bypasses a bot check or a certificate error. Contact blocks
contain personal data (names, emails, phone numbers of press officers): only
their **presence and type** are recorded; no name, email, phone or quotation
text is published in the data. Example quotations in the paper are
anonymized. The raw pages are kept on the research computer for verification
and deleted twelve months after the paper's last edition.

### 13. Reporting commitments

- The paper is published whatever the result.
- Deviations from this plan are listed, dated and explained, with the result
  under the registered rule next to the result under the deviation.
- Published on Zenodo with the paper: the per-release measures (no page text,
  no personal data), the frame's release identifiers and addresses,
  and the code of §5 and §10.
- This document is published with the paper, unedited. Corrections are dated
  additions, never silent edits.
- Distributors are reported in aggregate and not named (PPN World does not
  name commercial sources it has no agreement with); public bodies may be named.

### References

Barbaresi, A. (2021). Trafilatura: A web scraping library and command-line
tool for text discovery and extraction. *Proceedings of ACL-IJCNLP 2021:
System Demonstrations*, 122–131.
Bevendorff, J., Gupta, S., Kiesel, J., & Stein, B. (2023). An empirical
comparison of web content extraction algorithms. *Proceedings of SIGIR 2023*.
Catenaccio, P. (2008). Press releases as a hybrid genre: Addressing the
informative/promotional conundrum. *Pragmatics*, 18(1), 9–31.
Gilardi, F., Alizadeh, M., & Kubli, M. (2023). ChatGPT outperforms crowd
workers for text-annotation tasks. *PNAS*, 120(30), e2305016120.
Jacobs, G. (1999). *Preformulating the news: An analysis of the metapragmatics
of press releases*. John Benjamins.
Kincaid, J. P., Fishburne, R. P., Rogers, R. L., & Chissom, B. S. (1975).
*Derivation of new readability formulas for Navy enlisted personnel* (Research
Branch Report 8-75). Naval Technical Training Command.
Kish, L. (1965). *Survey sampling*. Wiley.
Krippendorff, K. (2004). *Content analysis: An introduction to its
methodology* (2nd ed.). Sage.
Lassen, I. (2006). Is the press release a genre? A study of form and content.
*Discourse Studies*, 8(4), 503–530.
Lombard, M., Snyder-Duch, J., & Bracken, C. C. (2002). Content analysis in
mass communication: Assessment and reporting of intercoder reliability.
*Human Communication Research*, 28(4), 587–604.
Nosek, B. A., Ebersole, C. R., DeHaven, A. C., & Mellor, D. T. (2018). The
preregistration revolution. *PNAS*, 115(11), 2600–2606.
PR Gun. (2026, August 25). [Study of 138,901 press releases from ten
newswires, 2021–2026]. Press release.
Sumner, P., Vivian-Griffiths, S., Boivin, J., et al. (2014). The association
between exaggeration in health related science news and academic press
releases: Retrospective observational study. *BMJ*, 349, g7015.
Weston, S. J., Ritchie, S. J., Rohrer, J. M., & Przybylski, A. K. (2019).
Recommendations for increasing the transparency of analysis of preexisting
data sets. *Advances in Methods and Practices in Psychological Science*, 2(3),
214–227.
Zecchini, G., Moore, A. A., Ubl, M., & Siddle, R. (2024, December 17). The
rise of the AI crawler. Vercel blog.
