business-website-setup – skill Marketing & SEO cho agent AI
Sổ đăng ký trang web: URL, title, meta description, search intent, khối NAP, loại schema, canonical, khả năng index và mục tiêu Core Web Vitals. Dùng cho xây dựng site và rà soát SEO.
Cài skill business-website-setup bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-website-setup-199d5.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /business-website-setup – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-website-setup-199d5.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $business-website-setup – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-website-setup-199d5.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /business-website-setup – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/business-website-setup-199d5.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /business-website-setup – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Business Website Setup
What it is: the smallest site plan for a confirmed business goal - the page list, what each page is
for, which search intent it answers, and the technical and structured-data requirements
that make it findable.
Overview
Works out the smallest useful site for the business in front of it, then builds the plan
only when asked. The default output is a short recommendation, not a page map. The page
register - CSV, SQL DDL, JSON Schema, Notion mapping - is produced on request, from one
field list so the four cannot drift apart.
Layer: Layer 5: Fulfil. Fits: Growth stage. Table code: n/a.
The rule this table exists to enforce: a declared purpose helps planning but does not determine rankings and a page with no declared owner is a page that rots. `Primary
Keyword, Search Intent and Owner` are therefore required, and the NAP block is a
per-page field rather than a global assumption - a business with one location and one
service area genuinely does repeat the NAP on every page, and a multi-location business
genuinely does not.
When to Use This Skill
- build a website, set up a website, website plan
- page structure, sitemap, site map, information architecture
- "we have a website but nobody finds us"
- on-page SEO, meta titles, meta descriptions, headings
- structured data, schema, LocalBusiness, Service, FAQ
- Core Web Vitals, page speed, mobile
- NAP on the website, local signals, Google Search Console
Do not use it for: the ranking asset that is not the website - that is
gbp-local-seo-intent; the design tokens (design-theme-guide); off-site citations
(seo-directory-backlinks); or a one-page campaign, which is linktree-link-hub.
How It Works
Follow the shared execution contract. The module-specific rules below define only domain fields, decisions, calculations, and safety constraints.
Step 1 - Identify intent
Read the request and pick the intent before asking anything.
- "build" / "set up" / "we need" -> artifacts wanted; go to Step 2.
- "we have one already" -> something exists; capture it, then Step 2.
- "not ranking" / "not found" / "fix" -> capture the current state and the queries, then
Step 2.
- "review" / "audit" / "check" -> a check, not a build.
- "which pages should we have" -> a decision question, not a build.
Ask only if this is the highest-value missing fact; otherwise proceed without an opener:
> Q: What is the business called, and what does one line of it actually do?
Step 2 - Ask only what is missing
Treat ambiguous replies as unanswered and ask which explicit option the user means. Record unknown values as Unknown; Unknown is not zero. A record must not be Done when a required check fails.
Skip anything already answered. Ask the rest one at a time, and stop as soon as the
remaining answers would not change the page list.
- Business - Name, address, phone, services, service area? / Do customers visit a
location, or is it a service-area business? / One location or several?
- Current - Is there a site today, and on what - WordPress, Shopify, Wix, Squarespace,
a builder, or hand-built? / Who can publish a page? / Is there a developer or is it
self-serve?
- Customers - What are the three questions a customer asks before they buy? / What do
they search for? / Do they compare, or just want the nearest option?
- Proof - Any reviews, ratings, certifications, case studies or photos that can be shown?
/ Is there a team, a location, a process worth showing?
- Outcome - What is the site's job - calls, enquiries, bookings, direct sales, or just
credibility? / Is there a phone number or WhatsApp that must be reachable in one tap?
Never invent an answer. Services, keywords, addresses, phone numbers, review counts,
platforms and metrics the user has not supplied are Unknown.
Step 3 - Hold the internal context
module: business-website-setup
intent: null # set up | fix | review | report | import
scale: null # Starter | Growth | Scale, only if the answer changes it
areas:
"Business": null
"Current": null
"Customers": null
"Proof": null
"Outcome": null
requested_outputs: []
confirmed_facts: []
open_questions: []Step 4 - Recommend the smallest workflow
Build an already requested artifact without asking again. For advice-only requests, give a short recommendation and offer the relevant artifact.
Recommended approach: Five to eight pages, one per service and one per place, plus home,
about, contact and a service-area page. Every service gets its own page with its own
intent, its own NAP block and LocalBusiness or Service structured data. Mobile-first,
fast, one clear call to action per page, and a review widget on the pages that earn trust.
No blog unless someone will actually write it.
Why this one: Separate genuinely distinct service/location intents when there is useful unique content; one page may rank for several related queries. Avoid doorway pages or thin service/location combinations. A blog is the classic SME trap: an unwritten blog is worse than no blog, because
it signals an abandoned site.
Workflow: Services and areas listed → Page map agreed → Primary keyword and intent per
page → NAP block placed → Structured data added → Titles, descriptions and headings written
→ Mobile and Core Web Vitals verified → Search Console and sitemap connected → Launched and
submitted
Step 5 - Build only on request
Once the user asks for it, derive the fields from the confirmed context and emit the
requested artifacts. For machine-readable text, keep prose outside the data; for files,
provide a usable link. Report material validation failures or limitations separately.
**A selected Notion output is rendered by notion-manual-import, so route the
Notion step there.** When the user selects Notion, hand that step to
@notion-manual-import: it holds the CSV, the property
mapping, the import steps and the verification checklist, and it renders the Field
Reference below instead of defining a table of its own. Do not restate the mapping
here and do not improvise the import steps. Manual CSV and mapping outputs need no
connection. For requested workspace changes, follow the shared contract: verify actual
tool access and the target before writing. A user saying "connected" is not tool evidence.
Never ask for a Notion password or token.
Page ID,Page URL,Page Title,Meta Description,Primary Keyword,Secondary Keywords,Search Intent,H1,NAP Block Present,Schema Type,Canonical URL,Indexable,Sitemap Included,Image Alt Text Rule,Target Device,Core Web Vitals Target,Build Platform,HTTPS,Mobile First,Structured Data Valid,Owner,Review Date,Status,Notes
,https://example.com/services/example-service,Example Service | Example Retail,Synthetic description - verify all claims,example service,related query,Transactional,Example Service,false,Service,https://example.com/services/example-service,true,true,Describe informative images; empty alt for decorative images,Responsive,"LCP <=2.5s; INP <=200ms; CLS <=0.1 at p75",Unknown,true,true,false,Unknown,2026-10-27,Planned,Synthetic example - replace before use.-- Engine assumption: PostgreSQL. For another engine use the engine's auto-increment
-- equivalent and keep the rest portable.
CREATE TABLE website_page (
page_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
page_url TEXT NOT NULL,
page_title VARCHAR(255) NOT NULL,
meta_description VARCHAR(500) NOT NULL,
primary_keyword VARCHAR(255) NOT NULL,
secondary_keywords TEXT,
search_intent VARCHAR(100) NOT NULL,
h1 VARCHAR(255) NOT NULL,
nap_block_present BOOLEAN NOT NULL,
schema_type VARCHAR(100) NOT NULL,
canonical_url TEXT NOT NULL,
indexable BOOLEAN NOT NULL,
sitemap_included BOOLEAN NOT NULL,
image_alt_text_rule VARCHAR(255) NOT NULL,
target_device VARCHAR(50) NOT NULL,
core_web_vitals_target VARCHAR(100) NOT NULL,
build_platform VARCHAR(100),
https BOOLEAN NOT NULL,
mobile_first BOOLEAN NOT NULL,
structured_data_valid BOOLEAN NOT NULL,
owner VARCHAR(255),
review_date DATE,
status VARCHAR(50) NOT NULL,
notes TEXT,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
CONSTRAINT website_page_intent CHECK (search_intent IN ('Informational','Commercial investigation','Transactional','Navigational','Local intent')),
CONSTRAINT website_page_status CHECK (status IN ('Planned','In build','In review','Live','Needs update','Retired'))
);
CREATE INDEX idx_website_page_status ON website_page (status);
CREATE INDEX idx_website_page_intent ON website_page (search_intent);{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Business Website Setup",
"type": "object",
"additionalProperties": false,
"properties": {
"Page ID": { "type": "integer" },
"Page URL": { "type": "string", "format": "uri" },
"Page Title": { "type": "stri… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- inbox-setup – Skill thiết lập một lần, xây dựng cơ sở tri thức phân loại hộp thư cá nhân hóa thông qua…
- internal-comms – Dùng khi trưởng bộ phận People Ops, lead BizOps hoặc chủ sở hữu Internal Communications…
- password-spray-methodology – Sổ tay tấn công password spray đầu cuối: liệt kê người dùng, phát hiện khóa tài khoản…
- co-marketing – Khi người dùng muốn tìm đối tác đồng tiếp thị, lên kế hoạch chiến dịch chung, hoặc động…
- cold-email – Viết email chào hàng B2B và chuỗi email theo dõi giúp nhận được phản hồi. Dùng khi tạo…
- landing – Tạo trang landing HTML một trang cao cấp với hiệu ứng CSS 3D, hiệu ứng cuộn GSAP và độ…
- landing-page-generator – Tạo landing page có tỷ lệ chuyển đổi cao dưới dạng component Next.js/React (TSX) hoàn…
- company-email-accounts – Sổ đăng ký hộp thư và giấy phép: nhân viên, loại tài khoản, bí danh, nhóm, công cụ, chi…