Templates
Two fill-in-the-blank markdown templates live in
nonprofit-recovery-toolkit/templates/. Copy them into a per-engagement
findings/ folder (gitignored) and fill in the {{PLACEHOLDERS}} — don't
edit the shared templates in place.
recovery_playbook.md
A one-page leave-behind covering:
- What happened and the current recon status
- Why search rankings dropped, and why they recover
- Action items in order: confirm manual-action status, clean up remnants, harden WordPress (one free plugin, no code), check backlinks, apply for Google Ad Grants, rebuild trust signals, cover other search engines, prevent recurrence via Cloudflare Project Galileo
- A Google Ad Grants checklist (eligibility, application steps, what keeps the grant active)
- A "who owns what going forward" section so access/responsibility doesn't fall through the cracks after you leave
reconsideration_request.md
A draft Google reconsideration request, for use only if Search Console shows an actual Manual Action under Security & Manual Actions — skip it entirely otherwise, since an algorithmic ranking drop recovers on its own once the site is re-crawled clean.
Includes:
- The narrative to paste into Search Console's "Request Review" form
- Placeholders for hack date, attack vector, and remediation steps taken
- Notes on being specific rather than vague (vague requests get rejected), and on removing/410-ing any still-indexed spam URLs before submitting
Extending for the next engagement
- Run
recon_check.pyagainst the new domain. - Copy both templates into that engagement's
findings/folder and fill them in. - If the hack left a distinctive spam pattern (pharma keywords,
Japanese SEO spam, gambling terms), add those terms to a copy of
spam_terms.txtand pass it via--wordlist.