← Back to the archive

RF SAFE · PUBLIC RECORD

Set up and update the archive

The same front end runs on this ChatGPT Site and in a regular website folder. On your PHP server, the importer can fetch the official comment record. This preview is a saved snapshot, not a continuously running collector.

1. Upload one folder

Extract hhs-rfi-wireless-radiation/ into your website. For example, it can appear at https://rfsafe.org/hhs-rfi-wireless-radiation/. No build command, Node.js process, database, or URL rewriting is needed. Serve it over HTTP or HTTPS; opening the HTML directly as a local file cannot load its JSON data.

2. Add your official API key

Get a free key at api.data.gov. The read API does not require permission to submit comments. Keep the key in the server’s REGULATIONS_API_KEY environment variable. Alternatively, copy server/config.example.php to server/config.local.php and enter it there. Never put the key in assets/app.js, a URL, a public JSON file, or an uploaded ZIP.

The importer requires PHP 8.0 or later with cURL and JSON, write access to the archive’s data folder, and outbound HTTPS access to Regulations.gov. The website itself only needs static-file hosting. Apache’s included server/.htaccess denies web access to the server folder. If you use Nginx, deny all web requests to this archive’s /server/ path in your host configuration before adding a key. Private history must never be publicly served.

3. Import new and changed comments

cd /path/to/public_html/hhs-rfi-wireless-radiation
php server/update.php sync --limit=250 --attachments

This is a command-line task. Run it through your hosting terminal, an authorized AI server connection, or a cron job. The web “Update this archive” button opens these instructions; it does not execute a server job or expose your key.

The updater discovers docket documents, paginates their public comments, and retrieves missing or changed records. It saves progress after each comment. Rerun the same command to continue after a quota limit or interrupted run. The limit controls how many comment details are retrieved in one run; listing pages and attachment downloads use additional requests. --attachments archives supported files up to 20 MB each when their official download is accessible. Unsupported, oversized, or unavailable files retain their official links.

Use --refresh periodically to recheck existing details and public profile changes. A complete listing that no longer includes a previously archived record withdraws its text from the public snapshot and moves cached source files into the protected server history. A partial listing never triggers that removal.

4. Ask AI to summarize the new records

Tell your AI: “Read the archive’s update skill, retrieve pending comments, and review new or changed submissions.” The updater’s initial topic suggestions use keywords; they are explicitly not AI reviews. Your AI reads the source, writes an attributed summary, selects a primary concern and additional topics, and supplies exact supporting passages.

php server/update.php apply /path/to/annotations.json
php server/update.php rebuild

Review batches must match the current source hash. If the source changes, its previous summary is withheld until reviewed again. Original text is never overwritten by a summary. Attachment-only submissions remain unreviewed until the attachment is read.

Optional: schedule the import

Your hosting control panel can run the importer daily or more frequently within your API quota. For example, after adjusting the path and configuring the environment:

15 */6 * * * /usr/bin/php /path/to/public_html/hhs-rfi-wireless-radiation/server/update.php sync --limit=250 --attachments

This example is not an installed schedule. Cron retrieves records and creates keyword suggestions; it does not perform AI review. The preview does not update merely because your server’s copy changed. Ask your AI to publish the refreshed snapshot when updating the ChatGPT Site.

What is in the folder?

LocationPurpose
index.html, assets/Portable search, topic filters, comment details, and CSV export.
data/catalog.jsonThe searchable snapshot: records, analysis, topic labels, and coverage.
data/manifest.jsonIndex check time, counts, completeness, and latest update error.
data/records/COMMENT_ID/record.jsonNormalized source text, profile fields, attachment metadata, and separate AI analysis.
data/records/COMMENT_ID/source.jsonSelected official API fields; unnecessary contact/location fields are excluded.
data/records/COMMENT_ID/attachments/Accessible downloaded attachments and their content hashes.
server/PHP importer and protected local configuration. No web administration endpoint.
skill/SKILL.md, AGENTS.mdInstructions for future AI updates and source-based classification.

Initial preview coverage

The initial official index contains 234 records. Six detail records were retrieved at evenly spaced positions in document-ID order to exercise the preview; five comment bodies have AI summaries. This is a development sample, not a representative sample of views. One retrieved submission consists of an attachment, and two others contain attachments; their three attachment files could not be downloaded in the build environment and have not been summarized. Their official file links are retained. The remaining 228 records have metadata only.

Bulk harvesting was not started with the demonstration API key. A personal key enables the PHP updater to retrieve the remaining content within your quota. A supplied API export can also be imported: php server/update.php import /path/to/export-folder. Include comments-list.json and individual detail JSON responses named with their official comment IDs.

Topic connection map

Open the topic map. After importing and reviewing comments, the map reads the updated catalog automatically. Publishing the refreshed catalog updates its counts and supporting passages. No separate map build is needed.

No API key? Use the official bulk download.

Regulations.gov offers a bulk CSV download by docket. On Regulations.gov, choose Bulk Data Download in the footer, select docket HHS-OASH-2026-0397, and provide the email address where you want the download link sent. Choose the full comment-text export, not a search-results index. GSA’s instructions.

For an AI-assisted update: upload that CSV to the conversation and ask to update this archive. No API key or server setup is required for that handoff. Attachment contents may need separate retrieval.

For a PHP server: use php server/update.php import-csv /path/to/official-bulk-export.csv, then review the new comments using the included AI skill. This fills missing bodies, preserves existing detailed records, and rebuilds the catalog. It does not mark the official index as freshly checked or claim that attachments were retrieved.

The importer accepts Document ID/Comment ID and Comment/Comment Text columns, with optional explicit public names, organization, and dates. Unexpected formats stop with an error. Contact addresses, emails, and phone columns are not copied into the public archive. The CSV itself is not published.

An OpenAI API key is unnecessary when the reviews are performed in your ChatGPT conversation. Automated, unattended AI review would be a separate service configuration.

Daily snapshots and portable hosting

Provide a fresh official full-text export each day. The updater matches official IDs, reviews new or changed text, and saves an immutable catalog snapshot. The timeline groups comments by official Eastern-time posting date. A later export may backfill an earlier date; use the saved-snapshot selector to compare what was known at each update.

No always-on server, Node.js process, or OpenAI key is needed to display this site. PHP tools are optional import utilities. Here.now hosts the static files; private source exports and backup packages belong in its private Drive, never in a public assets folder. Updating still requires importing, reviewing and publishing the supplied file; this site does not automatically fetch new comments.

Public snapshots contain the archived public comment text and source-based summaries. Contact-profile columns from the source CSV are excluded. Summaries do not verify medical or causal claims. An agency withdrawal or restriction must also be removed from public historical snapshots; preserve any permitted audit trail privately.

Continue in a new AI conversation

Attach your next official CSV and use the daily update prompt. The handoff instructions identify the existing site, private backup location, source baseline, validation steps, and recovery procedure. Updates match official IDs across the full export, including revised older entries.