Task Library
Make the site owner the byline on every post – not an admin account or VA – so Google attributes the content to the right entity and E-E-A-T accrues to the brand.
Category: Content Factory – Post
Use this when a post is about to publish, or whenever an audit finds posts bylined to "admin," an agency login, or a VA instead of the site owner.
Who the author must be
The site owner = the person the site is about (billybatt.com → Billy Batt). If you don't already know them, derive it from the site's own identity: existing real author → lone real user → og:site_name → Person-schema name → <title> head → cleanly-splittable domain. Only fall back to "Dennis Yu" for a page that names no identifiable person. (audit_fleet.py's candidate_figurehead computes exactly this – trust it.)
First, classify the site (check the users list: GET /wp-json/wp/v2/users?per_page=100)
- Situation A – the display name is already the owner, but the slug is still `admin` (e.g. author shows "Gavan Thorpe" yet the URL is
/author/admin/). The byline reads right; the account slug is the leak. Fix = rename that one account's slug (and confirm display):POST /wp-json/wp/v2/users/<id>{"name":"Gavan Thorpe","slug":"gavan-thorpe"}. No post reassignment needed. - Situation B – the byline is literally "admin" and it's the only user. Fix = give that single account the owner's identity rather than create a duplicate human:
POST /wp-json/wp/v2/users/<id>{"name":"Billy Batt","slug":"billy-batt","first_name":"Billy","last_name":"Batt"}. The login username (user_login) staysadmin, so nothing about logging in changes – but every existing and future post now bylines to the owner (self-healing for anyone who publishes while logged in as admin). - Situation C – a real owner account already exists next to admin (e.g. "Daryl C Urbanski" + "admin", posts sitting under admin). Fix = reassign each admin-bylined post to the existing real user's ID:
POST /wp-json/wp/v2/posts/<id>{"author": <real-user-id>}. Don't rename admin here.
Inputs
- A real write credential: an Application Password, or the site's admin creds from the BlitzAdmin API (console at blitzadmin.com root; per-site
AdminUsername/AdminPassword/ApplicationPassword). Route writes through a browser / residential IP – the shared fleet host WAF-blocks datacenter/sandbox IPs. - The site owner's correct name, headshot, and short first-person bio
- The users list and the list of posts with their current authors + slugs
Steps
- Confirm the site owner has (or gets) a WordPress user whose display name is their real full name (never "admin") and whose slug is their name (never
admin) – profile photo is their real headshot, bio is first person and matches their social profiles. - On the current draft, set the post's Author to the owner's account. VAs and agents draft under their own logins, but the published byline is always the owner.
- Apply the Situation A/B/C fix above across all existing published posts – rename the account (A/B) or reassign the posts (C) – until no post's
author.nameorauthor.slugisadmin/administrator. - Check the author archive (
/author/<owner>/) renders and lists the owner's posts – part of the entity's footprint. Confirm the slug in that URL is the owner's name, notadmin. - Verify persistence: re-fetch
?_embed=author(posts) and/users/<id>after the write and confirm the change stuck – a 200 that a cache or a later site rebuild reverts is the known failure mode (it's what made gavanthorpe/georgepaladichuk re-appear on the fleet list after a "successful" 2026-07-04 fix). - Never change the login username or the notification email during this – only display name, slug, and post author.
- For personal-brand sites, confirm content reads in first person to match the byline (the /website-qa-audit Layer 2 standard).
Definition of done (QA checklist)
- Current post's author = site owner; display name is the real full name, not a login handle
- Zero published posts remain bylined to admin/VA/agency accounts (
author.nameverified) - Zero
/author/admin/slugs – the author account's slug is the owner's name (author.slugverified) - Owner's user profile has real headshot and first-person bio consistent with social profiles
- Author archive page renders at
/author/<owner>/and attributes correctly - Re-pull confirms the fix persisted (not just a one-shot REST 200)
- Login username and notification email left unchanged
- Linked back to the definitive article and relevant siblings
- Complies with Blog Posting Guidelines (if it publishes content)
Example(s)
- 2026-07-17 – fleet authorship sweep (13 sites). The weekly fleet audit flagged 13 personal-brand sites with admin-bylined posts. Classified each: Situation A (display already the person, slug still
admin) – alexiltchev, gavanthorpe, georgepaladichuk, nic-padilla, samdemaio, thedavidcarroll; Situation B (byline literally "admin", lone account) – billybatt→Billy Batt, carolhasegawa→Carol Hasegawa, deannawallin→Deanna Wallin, jacksoncodd→Jackson Codd, laynekilpatrick→Layne Kilpatrick, olivergilliam→Oliver Gilliam; Situation C (existing real user) – darylurbanski→reassign to "Daryl C Urbanski". Figureheads were derived automatically from each site's ownog:site_name/title (audit_fleet.pycandidate_figurehead), so no name was guessed. Key lesson baked into this skill: two of the "A" sites had been marked fixed on 2026-07-04 but re-appeared because that fix only touched the display name (or didn't persist) – hence the slug check + persistence re-pull are now mandatory.
File in the zip: skills/content-factory-post/set-wordpress-author-to-correct-person.md. Download the Task Library zip.
Index: Task Library. Article guidelines.
