Energy Counsel

Case Study

Steve Huntoon is a former President of the Energy Bar Association with more than 40 years in the energy industry, and more than 100 published columns to show for it. When his old host suspended the site for malware, that body of work went offline. I recovered all 111 documents, scanned every one before reuse, and rebuilt the site as a fast, fully searchable archive that runs at $0 a month for hosting.

Visit Energy-Counsel.com
Energy Counsel website homepage with Steve Huntoon's biography in a dark green hero and a rail of his recent columns

Results at a Glance

Google PageSpeed Insights

100
Performance
Mobile 100 / Desktop 100
100
Accessibility
Mobile 100 / Desktop 100
100
Best Practices
Mobile 100 / Desktop 100
100
SEO
Mobile 100 / Desktop 100

Core Web Vitals

A perfect 100 in all four categories, on both mobile and desktop. Largest Contentful Paint lands at 1.2s on mobile (throttled to slow 4G) and 0.3s on desktop. Total Blocking Time is 0 ms and Cumulative Layout Shift is 0 on both. The home page runs no JavaScript at all, so there is nothing to block it from painting.

Project Overview

Steve Huntoon has advised and represented energy companies including Dynegy, Exelon and NextEra. His columns run in RTO Insider and Public Utilities Fortnightly, and his website is the home for all of that writing: 111 documents from seven publishers, from 2014 to this month.

The old site was WordPress on a shared host. In 2026 the host suspended it for malware, and years of columns went offline with it. The job was to get every document back, make sure none of it carried anything harmful, and put it on a site that is fast, easy to search, and very hard to break into again. Work started on September 3, 2026 and the new site went live on September 15.

Site Structure

Six main pages, plus a page of its own for every document:

Home
Steve’s biography in a typographic hero, with a rail of his most recent columns beside it
Experience
Forty years of energy industry work, including his degrees
Publications
All 111 documents, full-text searchable and filterable by publisher and year
Presentations
Papers and talks, including the Harvard Electricity Policy Group
Classic Rock Videos
Steve’s own lighter note: 43 favorite videos, one card each
Contact
A spam-protected form that emails Steve directly
111 Document Pages
One page per column or paper, each with its PDF, a thumbnail and a page count

Recovering 111 Documents From a Suspended Host

The first job was getting Steve's work back without bringing any of the old site's problems along with it.

Clean Sources First

I pulled every document from Internet Archive snapshots first, since all of them predate the breach. I only went to the old server's backup to fill gaps, and that turned up five recent columns the Archive had never captured. The result was 138 files, which I reduced to 111 distinct documents by finding the byte-identical re-uploads and alternate copies. Nothing was missing and nothing was truncated.

Every PDF Scanned Before Reuse

Every PDF was checked for embedded JavaScript, launch actions and auto-run actions before it went anywhere near the new site. None of the old site's HTML or PHP was reused. I read it for Steve's copy and nothing else.

Cleaning Up the Old Host

On the old server I found two fake WordPress plugins publishing SEO spam, and a full-site backup, database password included, that anyone could download from the web. I removed both and documented the cleanup for Steve. The new site has no WordPress, no plugins and no database, so none of those problems can come back.

Dated and Attributed Correctly

Every document has a title, publisher and date. Where a date could be checked against RTO Insider or Public Utilities Fortnightly, the publisher's date wins over whatever the PDF itself says, so the archive is in the right order.

Twelve Years of Columns, Fully Searchable

The old site was a list of links. The new one lets a reader find the column where Steve made a particular argument, by searching the words inside the PDFs.

Full-Text Search With No Search Service: Text is extracted from every PDF when the site builds, and Pagefind turns it into a static search index. Search runs in the browser, with no third-party service and no monthly bill.
Scanned Pages Made Searchable: Thirteen of the PDFs were page images with no text in them at all. I ran optical character recognition to add a text layer without changing how any page looks, then scanned them again. All 111 documents are now searchable.
Filters by Publisher and Year: Readers can narrow the archive to RTO Insider, Public Utilities Fortnightly, the Harvard Electricity Policy Group and others, or to a single year.
Thumbnails and Page Counts, Generated at Build: Each document gets a first-page thumbnail and a page count at build time, so a reader can see what a PDF is before opening it.

Keeping Every Old Link Working

Steve's columns have been linked from other sites and emails for years, across two generations of the old site. Those links point at URLs that no longer exist, so I kept every one of them working.

The build generates 179 permanent redirects from the recovered catalogue, one for every old page and every old PDF address, duplicate uploads included. They are generated rather than written by hand, so adding a document can never break one. An automated check also makes sure the addresses bots probe for, like /wp-login.php, get a plain 404 and never a redirect.

Security

After what happened to the old site, security was the point, not an add-on:

Nothing to Break Into: The site is static HTML. There is no WordPress, no admin login, no plugins and no database for anyone to attack.
Strict Browser Headers: A Content Security Policy, HSTS, and frame, content-type and permissions headers are generated by the build on every deploy, rather than configured by hand and forgotten.
A Contact Form That Fails Safe: One Cloudflare Pages Function handles the form, with server-verified Turnstile, a honeypot and input validation. If anything is misconfigured it refuses to send rather than failing open.
Owned by the Client: Hosting, DNS and the domain all sit in Steve’s own Cloudflare account, and the code in a private GitHub repository under an Energy Counsel organization. No developer’s personal account holds the keys.

SEO Strategy

Every document now has its own indexable page, so a search for one of Steve's column titles can land on it directly instead of on a bare PDF.

Person and WebSite Schema

The home page carries JSON-LD for the website and for Steve himself, so search engines connect the site to the person.

Article Schema on Every Document

Each of the 111 document pages carries Article, Person and Organization JSON-LD naming Steve as author and the publisher it first ran in.

One Flat Sitemap

A single sitemap lists all 117 indexable pages. Error and confirmation pages are marked noindex and left out.

Clean Metadata

Every indexable page has its own title, a unique description, a canonical URL and a single H1.

Share Cards

A 1200×630 share image plus Open Graph and Twitter tags, so links to the site look right in email and on social media.

One Canonical Address

http and www both redirect permanently to https://energy-counsel.com, with HSTS on.

A post-launch PageSpeed run flagged four links that just said “here,” which scored SEO at 92. I moved the link onto words that name the destination, without changing a word of Steve's copy, and the score went to 100.

Design and Accessibility

A site for reading, scoring 100 for Accessibility on mobile and desktop:

A Palette From the Logo: The greens come from Steve’s existing lightbulb logo. Headings are set in Source Serif 4, self-hosted so no font request leaves the site.
No Stock Photography: The only photos on the site are Steve’s own. The home page leads with his words, not an image.
Built for Reading on a Phone: Layouts reflow to a single column, the navigation collapses to a menu, and the portrait moves above the biography on small screens.
Semantic Structure: One H1 per page, properly nested headings, labeled form fields and descriptive link text give assistive technology a clear outline.

AI Discoverability

When someone asks an AI assistant what Steve Huntoon has written about capacity markets or FERC, the answer should come from his own site:

The Text Is on the Page: Every document has its own HTML page with a title, publisher and date, instead of a bare PDF link that a crawler has to guess about.
Authorship in Structured Data: Article JSON-LD ties each column to Steve as its author and to the publisher it ran in, in the format retrieval systems read.
Open to Crawlers: robots.txt allows every crawler and points to the sitemap. Nothing on the public site is blocked.

Technology Stack

ComponentTechnology
FrameworkAstro, static output, one Markdown file per document
HostingCloudflare Pages on the client’s own account (global CDN, automatic HTTPS)
Domain / DNSCloudflare Registrar and DNS (client-owned)
SearchPagefind, indexed at build from PDF text extracted with pdfjs-dist
PDF ProcessingBuild-time thumbnails and page counts; OCR for scanned documents
Contact FormCloudflare Pages Function + Resend
Spam ProtectionCloudflare Turnstile (verified server-side) + honeypot field
SEOJSON-LD (WebSite, Person, Article, Organization) + Open Graph / Twitter Cards
Redirects and HeadersGenerated by the build, 179 redirects
Testing281 unit and build tests, plus a Playwright smoke suite run against production

Hosting costs $0 a month. The only recurring bill is the domain.

Kevin has been fantastic! My website had been shut down by my prior domain host due to malware, risking my access to many years' worth of publications and other materials. Kevin somehow recovered all of these.

He then scanned every document for malware and posted everything on my new site.

He moved the domain from name.com to Cloudflare, resulting in a new site that's faster, safer and less expensive to maintain ($0 hosting fee, only $11/year for the domain).

He quickly added some new materials and made edits to my old website pages upon my request. He made some redesigns that greatly increased the aesthetics and ease of use for my website.

And he was incredibly responsive to all my emails, texts and calls! Thank you Kevin!

Steve Huntoon, Energy Counsel, LLP

Have Years of Work Worth Protecting?

Whether your site is stuck on an old platform or already offline, I can bring your content onto a fast, secure site that you own outright.