Communitygithub.com

Local Business Site Builder — 전화가 울리는 정적 사이트

동네 가게를 위한 실서비스급 정적 사이트(HTML, CSS, 순수 JS)를 만들고 점검하고 배포합니다. 전화 문의 전환, 사실 기반 스캐폴딩, 로컬 SEO와 JSON-LD, 동의 후 GA4, CSP, 의존성 없는 감사 스크립트까지.

Local Business Site Builder — 전화가 울리는 정적 사이트란 무엇인가요?

동네 가게 웹사이트 레시피 2단계(구축, 점검, 출시), PongoDogo/local-business-site-builder 출처(2026-10-06 공개, MIT, 자료 기준일 2026-10-05). Hostinger에 올리는 그리스 배관공, 병원, 식당, 상점을 위해 만들어져 사장님과 그리스어로 대화하지만, 방법은 그대로 옮겨 쓸 수 있습니다. 사실은 절대 지어내지 않고(전화, 영업시간, 가격, 후기는 사장님에게서 받거나 빼기), site-facts.json 하나에서 scaffold.mjs derive로 JSON-LD, sitemap, robots, manifest, vCard를 재생성하고, 코딩 전에 docs/DESIGN.md를 쓰고 방향을 하나로 정하며, CSP를 지키고 동의 전에는 서드파티를 불러오지 않고, audit_site.mjs 오류 0과 실제 도메인에서 verify_live.mjs 통과 전에는 완료라고 하지 않습니다. 완성된 예시 사이트, 화면 폭별 넘침 검사, OG 이미지 렌더러, 아이콘 생성기 포함. 쇼핑몰이나 WordPress용은 아닙니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/PongoDogo/local-business-site-builder/tree/HEAD/skills/local-business-site-builder

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Local business site builder (Greece)

Distilled from a real site (Αποφράξεις Τσαβάρης) that took dozens of prompts because the invisible plumbing went wrong again and again: server config, consent, SEO files, inconsistent facts. Goal: get it right the first time. Talk to the user in Greek.

Paths below are relative to this skill's folder. Resolve them to absolute paths before running scripts; run scripts with deno run -A scripts/<name>.mjs (or node). If neither exists, tell the user (install: winget install DenoLand.Deno, ask first) and use the manual checklists.

Portable execution

Check the host capabilities before running helpers: terminal and file access, Node 18+ or Deno, browser tooling, optional FFmpeg and network permissions. Never assume installation supplies these tools. Use available equivalent image/browser tools or manual reference checklists; report any automated checks you could not execute. Resolve every supporting path against this installed skill directory. Never assume a Windows user path or install software without authorization.

Rules that never bend (each cost real time or money)

  1. Never invent facts. Phone, email, address, ΑΦΜ, ΓΕΜΗ, hours, prices, reviews, ratings, years in business, licences, guarantees, arrival times come from the owner. Missing → ask, or leave out; [ΧΡΕΙΑΖΕΤΑΙ: …] markers block go-live. Regulated professions (doctor, dentist, lawyer, pharmacist): no reviews, no success claims (references/01 §4).
  2. One source of truth: site-facts.json (outside the deploy folder). Derived files (JSON-LD, sitemap, llms.txt, robots, manifest, vCard) are regenerated with scaffold.mjs derive, never hand-edited.
  3. Design is decided per client, never copied from a previous site: write docs/DESIGN.md, get the user's pick of ONE direction, then code (references/02).
  4. CSP-clean from line one: no inline script/style/handlers; every third party added to the CSP in the same change; one enforced CSP.
  5. No third-party request before consent or a click. GA4 loads only after "Αποδοχή"; Accept/Reject equal; map on click; fonts self-hosted with verified Greek glyphs (many popular fonts, e.g. Poppins/Montserrat, have none).
  6. Fix root causes, not per-width patches. Mobile-first; test the width matrix with scripts/overflow_probe.js.
  7. Never trust a server directive. Hostinger/LiteSpeed ignores <IfModule>, silently ignores unsupported directives and forces HTTPS at the edge: verify live with verify_live.mjs.
  8. SEO files are deliverables: canonical, robots (Allow: / + Sitemap), sitemap, JSON-LD (LocalBusiness subtype), OG 1200×630, icons incl. maskable.
  9. Bump ?v= on every page after any CSS/JS change (bump_version.mjs) and purge Hostinger caches.
  10. Verify, don't assume. Say "done" only after the audit shows 0 errors on the final files, browser QA is done, and you report honestly what is unverified.

Gotchas (obsolete or false beliefs that look right)

  • FAQPage/HowTo markup brings nothing: FAQ rich results were retired on 7 May 2026. llms.txt has no proven effect (Google says it does not use it): optional.
  • Never add aggregateRating/review JSON-LD for the business itself; sameAs only for real, populated profiles (never an empty second domain).
  • A staging Disallow: / or noindex left in production deindexes the site (audit SEO-001/023).
  • Hostinger preview domain *.hostingersite.com duplicates the site: 301 it and remove it.
  • htaccess without the dot is ignored; with a dot it must be uploaded explicitly (hidden file). Docs/facts/.md must not sit in public_html.
  • Google Fonts CDN links break privacy and CSP; frontend design advice that names Poppins/DM Sans/Playfair etc. fails on Greek.
  • A link that differs from a file only by letter case works on Windows and 404s on the server.
  • Anchors built inside JS (cookie banner → /privacy.html#cookies) must exist too.
  • The edge bot challenge after ~60 quick requests is not a site failure: wait, don't bypass.

Workflow (load the reference named in each step before doing it)

  1. Triage: new site · rework · audit-only (jump to 6) · small change (jump to 5). Check which tools exist (deno/node, browser tool, ffmpeg, Edge/Chrome for render_png).
  2. Intake → read references/01-intake-and-facts.md. Ask everything in one Greek message (if nobody can answer, use only the facts given, never invent, write QUESTIONS.md); write site-facts.json from assets/site-facts.example.json; scaffold.mjs check --facts site-facts.json.
  3. Design brief → references/02-design-direction.md; fill docs/DESIGN.md, propose 2-3 directions, get a choice.
  4. Scaffold: scaffold.mjs init --facts site-facts.json --out public --docs docs [--logo logo.svg] (creates pages, base CSS, JS, .htaccess with CSP from the features, robots, sitemap, llms.txt, manifest, vCard, Greek handoff docs, AGENTS.md/CLAUDE.md for the project).
  5. Build → references/03-build-and-code.md, 04-conversion-and-content.md, 05-seo-schema-geo.md: tokens + THEME in style.css, sections in index.html (replace the [ΧΡΕΙΑΖΕΤΑΙ…] marker), assets via make_icons.mjs, render_png.mjs (OG image from an HTML page), images.mjs, font_greek_check.mjs --download. For consent, privacy text, footer identity, prices or reviews also read 06-privacy-consent-legal.md. A finished fictional example of the quality bar is in assets/example-site/ (study structure and copy tone, never its look).
  6. After any fact change: facts → scaffold.mjs derive → visible text → bump_version.mjs.
  7. Audit: audit_site.mjs public --facts site-facts.json → fix every ERROR, read WARN, give the owner the VERIFY list. Unclear finding → references/mistake-registry.md.
  8. QA and launch → references/08-qa-and-launch.md (width matrix, consent test, content QA); deploy and server details in references/07-server-htaccess-deploy.md.
  9. Post-deploy: verify_live.mjs https://DOMAIN --local public --preview-domain X.hostingersite.com; hand the owner docs/. Forms, booking, more pages, CMS, e-shop, other languages, ads pixels → references/09-beyond-the-basics.md and agree scope first.

Scripts (scripts/)

audit_site.mjs pre-launch audit (ERROR/WARN/VERIFY/INFO; --json, --strict; exit 1 on errors) · verify_live.mjs live check (redirects, headers, 404, exposed files, byte-identity; throttled) · scaffold.mjs init/derive/check · bump_version.mjs · render_png.mjs · make_icons.mjs · images.mjs (ffmpeg) · contrast.mjs · font_greek_check.mjs · overflow_probe.js (run inside the page). All print --help-style usage when called without arguments. They write only inside the folders you pass.

Reference index

01 intake/facts/regulated professions · 02 design directions, Greek fonts · 03 build, performance, accessibility, widths · 04 conversion and copy · 05 SEO/schema/GBP/AI search · 06 privacy and Greek law pointers · 07 Hostinger server and deploy · 08 QA/launch · 09 beyond the basics · mistake-registry. Research date: 2026-10-05; laws and Google policies change: re-verify before relying on them, and say when something is unverified.

관련 스킬