recent updates
This commit is contained in:
+121
@@ -0,0 +1,121 @@
|
||||
# CONTENT - Copy Standards, Image Rules, and Asset Guidelines
|
||||
Author: Andre Cobham / Arising Media
|
||||
Updated: 2026-06-09
|
||||
|
||||
## Writing Standard
|
||||
|
||||
Reading level: 7th to 8th grade for service businesses, 10th to 12th grade for professional/B2B.
|
||||
|
||||
Active voice. Short paragraphs (2 to 4 sentences max).
|
||||
|
||||
Lead with the customer's problem, not the business's credentials.
|
||||
|
||||
One clear CTA per section.
|
||||
|
||||
No marketing jargon (synergize, leverage, best-in-class, cutting-edge, state-of-the-art).
|
||||
|
||||
No filler phrases (In today's fast-paced world, Look no further, We pride ourselves on, Don't hesitate, Whether you are X or Y).
|
||||
|
||||
Specificity beats superlatives. A timeframe, a material, a measurable result beats any adjective.
|
||||
|
||||
## What We Never Write
|
||||
|
||||
Em dashes or en dashes. Replace with a period, comma, colon, or the word "and" or "to".
|
||||
|
||||
Invented numbers (satisfaction rates, years of experience, award claims) without client-verified proof.
|
||||
|
||||
"Licensed" for any provisionally licensed or permit-holding clinician. Use "Provisionally Licensed" instead.
|
||||
|
||||
Exclamation points (one per page maximum, in a CTA only).
|
||||
|
||||
Passive voice as the default sentence structure.
|
||||
|
||||
Verification check: `grep -rn '.\|–\|—\|–' . --include="*.html" --include="*.json"`. Result must be zero.
|
||||
|
||||
## Tone by Sector
|
||||
|
||||
Service businesses (trades, cleaning, home services): plain, direct, neighborhood-familiar.
|
||||
|
||||
Healthcare / counseling: warm, clinical accuracy required, never overpromise outcomes.
|
||||
|
||||
Professional / B2B / tech: peer-level, systems-oriented, results-focused.
|
||||
|
||||
## Healthcare Credential Rules
|
||||
|
||||
MHC-LP is Provisionally Licensed, not Licensed. LP stands for Limited Permit.
|
||||
|
||||
Any permit holder must display: "Practices under the supervision of [Name], [Credential]" in the footer, about page, and auto-response email.
|
||||
|
||||
Use "Provisionally Licensed" everywhere: credential row, why-cards, location page intros, section headers, auto-response emails, meta descriptions.
|
||||
|
||||
Run grep check before launch: `grep -r "Licensed Professional" --include="*.html"` . result must be zero.
|
||||
|
||||
Supervisor's credential must be accurate to the letter. LMHC not equivalent to LMHC-D. Confirm the current designation before publishing.
|
||||
|
||||
When a credential changes (upgrade or advancement), update the source templates first (render.py, copy_library.py), rebuild the Docker container, then re-run verification checks.
|
||||
|
||||
## Copy Structure
|
||||
|
||||
One h1 per page. h2 for major sections. h3 for cards or items within a section. Never skip levels.
|
||||
|
||||
Footer on every page: phone, hours, address, in identical format.
|
||||
|
||||
Phone format: (###) ###-####. Hours: Monday to Friday: 8:00 AM to 5:00 PM (no dashes).
|
||||
|
||||
Links use relative paths with .html extension for internal pages. External links include target="_blank" rel="noopener". Phone links use tel:+1 format. Email links use mailto:. Map links open in new tab.
|
||||
|
||||
## Image Standards
|
||||
|
||||
Format: WebP only in production. No JPGs or PNGs in the webroot.
|
||||
|
||||
Every image has descriptive alt text or alt="" if decorative.
|
||||
|
||||
loading="lazy" on every image except the above-the-fold hero.
|
||||
|
||||
width and height attributes on every img tag to prevent layout shift.
|
||||
|
||||
No people, no faces in any generated or stock imagery.
|
||||
|
||||
Show the result (clean room, finished floor, complete installation), not the process or equipment.
|
||||
|
||||
Hero images: unique per page, named hero-{page-slug}.webp.
|
||||
|
||||
## Image Generation
|
||||
|
||||
Preferred source: local ComfyUI (FLUX.1 Schnell) or Google Imagen API.
|
||||
|
||||
Every generated image passes a vision validation check for people/faces before being saved.
|
||||
|
||||
Prompt structure: camera angle + lens + subject + foreground detail + background + lighting + no people.
|
||||
|
||||
Specify lens focal length and depth of field. Vague room names produce incoherent scenes.
|
||||
|
||||
Never generate: people, faces, cleaning equipment, text overlaid on source, before/after states.
|
||||
|
||||
No cleaning machines, vacuums, steam equipment, or hoses in any image.
|
||||
|
||||
Show upright equipment only, not flat industrial models.
|
||||
|
||||
Machines must look functional and modern, not dated or commercial-scale.
|
||||
|
||||
## Image Size Targets
|
||||
|
||||
Service card / thumbnail: max 900px wide, 78% quality, 30-80KB target.
|
||||
|
||||
Hero image (page header): max 1400px wide, 80% quality, 50-180KB target.
|
||||
|
||||
OG / social share image: max 1200px wide, 85% quality, under 150KB.
|
||||
|
||||
Images over these targets are rejected at deploy time.
|
||||
|
||||
## Prompt Engineering
|
||||
|
||||
All prompts follow this structure: {camera angle} {lens} {subject description}, {foreground detail} sharp in foreground, {background} receding into bokeh, {lighting description}, no people, ultra-realistic {type} photography.
|
||||
|
||||
This pattern produces correct depth, perspective, and scene geometry because it names every surface explicitly.
|
||||
|
||||
Fix incoherent objects by naming every part of the frame: background walls, floor material, ceiling (if visible), and what recedes. Avoid vague room names ("office" without detail). Specify plain surfaces (cream painted wall, white drop ceiling) not implied ones.
|
||||
|
||||
Inline negative elements in the prompt itself (no people, no machines, no text), not in a separate negative prompt.
|
||||
|
||||
Do not use "wide shot" without a camera angle qualifier.
|
||||
Reference in New Issue
Block a user