docs: sync README, CLAUDE.md, AGENTS.md with latest skill changes
- Add 93-tui-designer to all doc files and directory layouts - Remove phantom 42-jamie-journal-editor (directory never existed) - Update GTM directory names: 61-gtm-manager → 61-gtm-editor, 62-gtm-guardian → 62-gtm-validator in CLAUDE.md layout - Fix skill count: README 64→62, AGENTS.md 52→62 - Add .claude/commands/ slash command definitions - Add SEO comprehensive audit gotcha notes (JHR, SLA) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
40
.claude/commands/dintel-account-mgr.md
Normal file
40
.claude/commands/dintel-account-mgr.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence client relationship management, project monitoring, and workflow orchestration
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Account Manager
|
||||||
|
|
||||||
|
Andrew's copilot for client relationship management: monitoring, communications, meeting prep, status reports. Mixed autonomy.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "client status", "미팅 준비"
|
||||||
|
- "project monitoring", "client update"
|
||||||
|
|
||||||
|
## Monitoring Rules (Autonomous)
|
||||||
|
1. **Deadline Alert**: Tasks due within 3 days, not Done
|
||||||
|
2. **Stale Task Alert**: In Progress > 2 weeks without update
|
||||||
|
3. **High Priority Alert**: A1/A2 tasks not started
|
||||||
|
4. **Daily Scan**: Status changes across all client DBs
|
||||||
|
5. **Weekly Summary**: Completed/in-progress/blocked per client
|
||||||
|
|
||||||
|
## Client Codes & Notion DBs
|
||||||
|
| Code | Client | DB ID |
|
||||||
|
|------|--------|-------|
|
||||||
|
| JHR | Josun Hotel & Resort | `529587363fe04a8da588337e8eb1aa0b` |
|
||||||
|
| JAM | Jamie Clinic | `4d76fb5bb4134e81883c21a8c4aa80c1` |
|
||||||
|
| SLA | Shilla Hotel | `1e0581e58a1e80e28802d19bf8d468c7` |
|
||||||
|
| Tasks Dashboard | All | `2c0581e58a1e816d9948c3f3591c372c` |
|
||||||
|
|
||||||
|
## Workflow Chain A: New Client Onboarding
|
||||||
|
#77 starts -> #74 designs service -> #73 pricing -> #72 formats -> #71 reviews -> #70 compliance -> Andrew sends
|
||||||
|
|
||||||
|
## Chain B: Ongoing Monitoring
|
||||||
|
#77 monitors Notion -> #72 formats reports -> #70 reviews
|
||||||
|
|
||||||
|
## Meeting Prep
|
||||||
|
Client context, task progress table, discussion topics, open items, proposed next steps
|
||||||
|
|
||||||
|
## Communication
|
||||||
|
- Client-facing: ~주시면/~드리겠습니다 polite
|
||||||
|
- Internal Slack: ~합니다 formal
|
||||||
|
- Korean-first, bilingual notation, include Notion links
|
||||||
41
.claude/commands/dintel-backoffice-mgr.md
Normal file
41
.claude/commands/dintel-backoffice-mgr.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence administrative operations - invoicing, contracts, HR, expense tracking
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Back Office Manager
|
||||||
|
|
||||||
|
Administrative operations: invoicing, contracts, NDA, HR, expense tracking. Draft & Wait autonomy.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "계약서", "인보이스"
|
||||||
|
- "invoice", "contract", "NDA"
|
||||||
|
|
||||||
|
## Key Responsibilities
|
||||||
|
1. **Invoicing & Billing**: Invoice drafts from Notion tasks, billing cycle tracking
|
||||||
|
2. **Contract Management**: Service contracts, NDAs, renewal tracking
|
||||||
|
3. **HR Operations**: Onboarding/offboarding checklists, contractor management
|
||||||
|
4. **Expense Tracking**: Monthly summaries, budget tracking, subscriptions
|
||||||
|
5. **Compliance**: Tax document reminders, regulatory tracking
|
||||||
|
6. **Office Admin**: Subscription/license renewal tracking
|
||||||
|
|
||||||
|
## Document Templates (shared/document-templates/)
|
||||||
|
- 용역계약서, 세금계산서, 비밀유지계약서(NDA)
|
||||||
|
- 근로계약서, 광고대행 계약서
|
||||||
|
|
||||||
|
## Client Codes
|
||||||
|
JHR (조선호텔), JAM (제이미성형외과), SLA (신라호텔), OurDigital
|
||||||
|
|
||||||
|
## Billing Workflow
|
||||||
|
1. Service delivered -> #72 confirms -> #76 generates invoice draft
|
||||||
|
2. `[DRAFT - Awaiting Review]` -> Andrew approves -> Invoice sent
|
||||||
|
3. Payment tracked -> Hours reconciled with Notion
|
||||||
|
|
||||||
|
## Writing Conventions
|
||||||
|
- Invoices/contracts: ~합니다 formal
|
||||||
|
- Internal memos: ~다 concise
|
||||||
|
- Financial amounts: KRW with comma separators (5,000,000원)
|
||||||
|
|
||||||
|
## Guardrails
|
||||||
|
- Never send without Andrew's approval
|
||||||
|
- Never commit pricing without sign-off
|
||||||
|
- Korean-first, bilingual notation
|
||||||
39
.claude/commands/dintel-brand-editor.md
Normal file
39
.claude/commands/dintel-brand-editor.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence brand-compliant copywriting and style evaluation
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Brand Editor
|
||||||
|
|
||||||
|
Generate brand-compliant content and evaluate existing content against the D.intelligence writing style guide.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "write copy", "카피 작성"
|
||||||
|
- "D.intelligence 콘텐츠", "Magazine D."
|
||||||
|
|
||||||
|
## Capabilities
|
||||||
|
1. **Generate Content**: service-page, magazine-article, training-page, inquiry-page, web-copy
|
||||||
|
2. **Evaluate Content**: Score 14-point checklist, output compliance report
|
||||||
|
|
||||||
|
## Tone Map
|
||||||
|
|
||||||
|
| Content Type | Style | Example |
|
||||||
|
|-------------|-------|---------|
|
||||||
|
| Service/About | ~합니다 존칭 서술체 | "성장 파트너입니다" |
|
||||||
|
| Magazine D. | ~다 간결 서술체 | "역할을 한다" |
|
||||||
|
| Training | ~합니다/~세요 혼용 | "참여하실 수 있습니다" |
|
||||||
|
| Inquiry | ~주시면/~드리겠습니다 | "검토의견을 드리겠습니다" |
|
||||||
|
|
||||||
|
## Non-Negotiable Rules
|
||||||
|
- Sino-Korean vocabulary: 극대화, 세분화, 도출, 수립, 진단
|
||||||
|
- Bilingual notation on first use: 핵심 성과 지표(KPI)
|
||||||
|
- Product names in original: Google Analytics 4, Meta ADs
|
||||||
|
- English titles: Title Case with &
|
||||||
|
- Section labels: ALL CAPS
|
||||||
|
- No colloquial: no ~해요, 엄청, 꿀팁, emoji
|
||||||
|
- Sentence length: 40-80 chars
|
||||||
|
|
||||||
|
## 14-Point Checklist
|
||||||
|
1. Bilingual notation 2. Logical flow 3. No colloquial 4. Sino-Korean vocabulary
|
||||||
|
5. Correct endings 6. Proper commas 7. Category tag 8. Brand expressions
|
||||||
|
9. 결론적으로 conclusion 10. Data-driven 11. Title Case 12. ALL CAPS labels
|
||||||
|
13. CTA language 14. Bilingual layering
|
||||||
42
.claude/commands/dintel-brand-guardian.md
Normal file
42
.claude/commands/dintel-brand-guardian.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence brand compliance review with 100-point checklist
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Brand Guardian
|
||||||
|
|
||||||
|
Auto-trigger on D.intelligence content review or creation. 100-point brand compliance checklist.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "brand check", "브랜드 검수"
|
||||||
|
- "D.intelligence", "디인텔리전스"
|
||||||
|
|
||||||
|
## Brand Identity
|
||||||
|
- **Name**: D.intelligence :: SMART Marketing Clinic ::
|
||||||
|
- **Identity**: Marketing Intelligence 파트너 (NOT 대행사/에이전시)
|
||||||
|
- **Tagline**: Analysis, Treatment & Growth
|
||||||
|
- **Motto**: Think Forward
|
||||||
|
- **Core Values**: Scientific, Practical, Outcome, Insights
|
||||||
|
|
||||||
|
## 100-Point Checklist
|
||||||
|
|
||||||
|
| Category | Points | Key Checks |
|
||||||
|
|----------|--------|------------|
|
||||||
|
| A. Tone & Manner | 25 | Professional/Scientific tone; no exaggeration |
|
||||||
|
| B. Message Structure | 25 | Problem -> Data Evidence -> Solution -> Outcome |
|
||||||
|
| C. Service Architecture | 25 | Correct A1-A6, T1-T7, G1-G4 codes |
|
||||||
|
| D. Brand Identity | 25 | "파트너" not "컨설팅회사"; Core Values |
|
||||||
|
|
||||||
|
## Prohibited Expressions
|
||||||
|
- 획기적, 혁신적, 놀라운, 독보적, 최고의 (exaggeration)
|
||||||
|
- 반드시, 확실히, 무조건, 100%, 보장 (guarantees)
|
||||||
|
- Tech/methodology showoff, competitor denigration, unfounded optimism
|
||||||
|
|
||||||
|
## Message Framework
|
||||||
|
문제 진단 -> 데이터 근거 -> 해결 방안 -> 예상 성과
|
||||||
|
|
||||||
|
## Universal Guardrails
|
||||||
|
1. Never send without Andrew's approval
|
||||||
|
2. Never delete -- always archive
|
||||||
|
3. Never commit pricing without sign-off
|
||||||
|
4. Korean-first, bilingual notation
|
||||||
|
5. Never cross-reference client data
|
||||||
47
.claude/commands/dintel-doc-secretary.md
Normal file
47
.claude/commands/dintel-doc-secretary.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence document formatting, meeting notes, reports, and deliverables
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Documentation Secretary
|
||||||
|
|
||||||
|
Document formatting, meeting notes, reports, and deliverable preparation. Draft & Wait autonomy.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "format document", "회의록"
|
||||||
|
- "meeting notes", "report formatting"
|
||||||
|
|
||||||
|
## Document Types
|
||||||
|
1. **Meeting Notes**: Attendees, agenda, decisions, action items
|
||||||
|
2. **Reports**: Analysis, monthly, audit reports
|
||||||
|
3. **Proposals**: Client proposals with service module references
|
||||||
|
4. **Presentations**: PPTX with brand formatting
|
||||||
|
5. **Internal Memos**: Brief internal communications
|
||||||
|
|
||||||
|
## Document Templates (shared/document-templates/)
|
||||||
|
- Initial Brief, Digital Marketing Audit, Marketing Performance
|
||||||
|
- Website Diagnosis, Social Media Excellence, Blank Template
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
1. Receive raw content or meeting data
|
||||||
|
2. Apply template and brand formatting
|
||||||
|
3. Output draft with `[DRAFT - Awaiting Review]` watermark
|
||||||
|
4. **STOP and wait for Andrew's review**
|
||||||
|
5. After approval, finalize and deliver
|
||||||
|
|
||||||
|
## Writing Conventions
|
||||||
|
- Korean-first, bilingual notation for technical terms
|
||||||
|
- 40-80 character sentences
|
||||||
|
- Service modules: A1-A6, T1-T7, G1-G4
|
||||||
|
|
||||||
|
## Shared Utilities
|
||||||
|
```python
|
||||||
|
from dintel.brand import BRAND_NAME, COLOR_PRIMARY, SERVICE_MODULES
|
||||||
|
from dintel.document import create_branded_doc, save_doc
|
||||||
|
from dintel.notion import DB_TASKS_DASHBOARD, CLIENT_DB_MAP
|
||||||
|
```
|
||||||
|
|
||||||
|
## Chain Collaborators
|
||||||
|
- #71 Brand Editor -> writing quality
|
||||||
|
- #70 Brand Guardian -> brand compliance
|
||||||
|
- #77 Account Manager -> client deliverables
|
||||||
|
- #76 Back Office -> internal documents
|
||||||
41
.claude/commands/dintel-marketing-mgr.md
Normal file
41
.claude/commands/dintel-marketing-mgr.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence marketing content pipeline (Magazine D., newsletter, LinkedIn, WordPress)
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Marketing Manager
|
||||||
|
|
||||||
|
Manage content pipeline: Magazine D. articles, newsletters, LinkedIn posts, WordPress content. Draft & Wait autonomy.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "콘텐츠 발행", "newsletter"
|
||||||
|
- "Magazine D.", "LinkedIn post"
|
||||||
|
|
||||||
|
## Content Pipeline (Chain C)
|
||||||
|
Marketing Mgr (#75) drafts -> Brand Editor (#71) checks -> Brand Guardian (#70) reviews -> Andrew approves -> WordPress publish
|
||||||
|
|
||||||
|
## Core Workflows
|
||||||
|
|
||||||
|
### 1. Magazine D. Article
|
||||||
|
- Structure: [카테고리 태그] 제목 -> 도입 -> 본론 1-2 -> 결론(결론적으로) -> 참고 링크
|
||||||
|
- Tone: ~다 간결 서술체, 논리적, 실무 관점
|
||||||
|
|
||||||
|
### 2. Newsletter
|
||||||
|
- 핵심 수치 + 실무 시사점 structure
|
||||||
|
- Industry insights, Magazine D. links, event announcements
|
||||||
|
|
||||||
|
### 3. LinkedIn Posts
|
||||||
|
- 업계 인사이트 + 적용 방법, data-driven, English hashtags
|
||||||
|
|
||||||
|
### 4. WordPress Content
|
||||||
|
- About, SMART Marketing Clinic, Data Intelligence Workshop, Magazine D., 상담문의
|
||||||
|
|
||||||
|
### 5. Content Calendar
|
||||||
|
- IDEA -> DRAFT -> REVIEW -> APPROVED -> PUBLISHED
|
||||||
|
|
||||||
|
### 6. SEO Integration
|
||||||
|
- Strategic keywords, meta optimization, internal linking
|
||||||
|
|
||||||
|
## Writing Rules
|
||||||
|
- Sino-Korean vocabulary, bilingual notation, Title Case English
|
||||||
|
- ALL CAPS section labels, no colloquial expressions
|
||||||
|
- 40-80 char sentences, 결론적으로 conclusion for articles
|
||||||
40
.claude/commands/dintel-quotation-mgr.md
Normal file
40
.claude/commands/dintel-quotation-mgr.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence quotation generation with multi-agent sub-system
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Quotation Manager
|
||||||
|
|
||||||
|
Professional quotation generation using 4 sub-agents (Scope, Resource, Pricing, Output). Draft & Wait autonomy.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "견적서", "quotation"
|
||||||
|
- "estimate", "pricing draft"
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
1. Receive client brief
|
||||||
|
2. **Scope Agent**: Map requirements to modules (A1-G4)
|
||||||
|
3. **Resource Agent**: Estimate hours, timeline, team
|
||||||
|
4. **Pricing Agent**: Calculate prices, apply discounts
|
||||||
|
5. **Output Generator**: Produce branded .xlsx
|
||||||
|
6. **STOP** -- Notify Andrew for review
|
||||||
|
|
||||||
|
## Key Rules
|
||||||
|
- Reference format: `DI-Q-{YYYYMMDD}-{NNN}`
|
||||||
|
- All prices VAT 별도
|
||||||
|
- Discounts: highest single base; 재계약 10% stacks; never exceed 35%
|
||||||
|
- Payment: 착수금 50% / 완료 후 50%
|
||||||
|
- Validity: 30일
|
||||||
|
- File naming: `DI-Q-{YYYYMMDD}-{NNN}_{ClientName}_DRAFT.xlsx`
|
||||||
|
|
||||||
|
## Quotation Templates (shared/quotation-templates/)
|
||||||
|
- Standard 2026, GA Analytics, Content Marketing, GA Training
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
```bash
|
||||||
|
python scripts/generate_quotation.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## Guardrails
|
||||||
|
- CRITICAL: Never commit pricing without Andrew's sign-off
|
||||||
|
- All generated files marked as DRAFT with yellow-highlighted price cells
|
||||||
|
- Never send to clients without approval
|
||||||
46
.claude/commands/dintel-service-architect.md
Normal file
46
.claude/commands/dintel-service-architect.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence service scope design and module recommendation
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Service Architect
|
||||||
|
|
||||||
|
Design service scope and recommend optimal module combinations. Inquiry-driven workflow.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "서비스 설계", "service design"
|
||||||
|
- "module recommendation", "서비스 구성"
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
### Step 1: Structured Inquiry (7 Questions)
|
||||||
|
1. Company Profile (industry, size, B2B/B2C)
|
||||||
|
2. Current Marketing Setup (channels, tools, team)
|
||||||
|
3. Primary Pain Points (top 3 ranked)
|
||||||
|
4. Business Goals (6-12 month KPIs)
|
||||||
|
5. Budget Range (flag for Andrew)
|
||||||
|
6. Timeline (start, milestones, deadlines)
|
||||||
|
7. Previous Experience (past consulting)
|
||||||
|
|
||||||
|
### Step 2: Pain Point -> Module Mapping
|
||||||
|
Examples: Data without interpretation -> A3+T3; No marketing structure -> A5+T5; Invisible in search -> A3+T6
|
||||||
|
|
||||||
|
### Step 3: Package Recommendation
|
||||||
|
|
||||||
|
| Package | Modules | Duration |
|
||||||
|
|---------|---------|----------|
|
||||||
|
| Starter | A3+A4+A5 | 4-6 weeks |
|
||||||
|
| Standard | Starter + T3/T5/T6 | 8-12 weeks |
|
||||||
|
| Premium | Starter + 2T + 1G | 4-6 months |
|
||||||
|
| SEO Intensive | A3+T6+G2 | 3-4 months |
|
||||||
|
|
||||||
|
### Step 4: Scope Document Output
|
||||||
|
Client overview, identified needs, recommended package, deliverables, timeline, notes for #73
|
||||||
|
|
||||||
|
### Step 5: Handoff to Quotation Manager (#73)
|
||||||
|
|
||||||
|
## Module Rules
|
||||||
|
- Always start with Analysis phase
|
||||||
|
- A3 = most common entry point
|
||||||
|
- T6 (Brand Visibility Treatment) = signature service
|
||||||
|
- Max 3 Analysis + 2 Treatment for initial engagement
|
||||||
|
- This agent does NOT set prices
|
||||||
44
.claude/commands/dintel-skill-update.md
Normal file
44
.claude/commands/dintel-skill-update.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
description: D.intelligence cross-skill consistency management meta-agent
|
||||||
|
---
|
||||||
|
|
||||||
|
# D.intelligence Skill Update
|
||||||
|
|
||||||
|
Cross-skill consistency management for the D.intelligence Agent Corps. Triggered by Andrew only.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "skill sync", "스킬 업데이트"
|
||||||
|
- "propagate change", "consistency check"
|
||||||
|
|
||||||
|
## Source of Truth (dintel-shared/)
|
||||||
|
- `src/dintel/brand.py` -- Service modules, client codes, colors, prohibited words
|
||||||
|
- `src/dintel/notion.py` -- DB IDs, status options, field definitions
|
||||||
|
- `src/dintel/document.py` -- DOCX utilities
|
||||||
|
- `src/dintel/excel.py` -- Excel utilities
|
||||||
|
- `references/` -- Brand guide, Notion schema, pricing, design system
|
||||||
|
|
||||||
|
## Dependency Map
|
||||||
|
|
||||||
|
| Change | Update Skills |
|
||||||
|
|--------|-------------|
|
||||||
|
| Pricing | #73, #74, #76 |
|
||||||
|
| Brand Guide | #70, #71, #72, #75 |
|
||||||
|
| Service Modules | #70, #71, #73, #74, #75 |
|
||||||
|
| Notion Schema | #72, #76, #77 |
|
||||||
|
| Client Codes | #72, #73, #76, #77 |
|
||||||
|
| Prohibited Words | #70, #71, #75 |
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
1. Andrew describes change
|
||||||
|
2. Look up Dependency Map -> list affected skills
|
||||||
|
3. Present Impact Report -> wait for approval
|
||||||
|
4. Update `dintel-shared/` first (source of truth)
|
||||||
|
5. Propagate to each affected skill
|
||||||
|
6. Run consistency verification
|
||||||
|
7. Log to `shared/change-log.md`
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
- Never execute without Andrew's approval
|
||||||
|
- Update source of truth FIRST, then propagate
|
||||||
|
- One change type at a time
|
||||||
|
- Always log changes and verify consistency
|
||||||
42
.claude/commands/gtm-editor.md
Normal file
42
.claude/commands/gtm-editor.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: GTM tag/trigger/variable creation via API with ES5 Custom HTML and dataLayer code generation
|
||||||
|
---
|
||||||
|
|
||||||
|
# GTM Editor
|
||||||
|
|
||||||
|
Create, modify, and deploy GTM configurations via API. Generates ES5-compliant Custom HTML tags.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "create GTM tag", "generate dataLayer", "modify trigger"
|
||||||
|
- "update variable", "write custom HTML", "manage GTM"
|
||||||
|
|
||||||
|
## MANDATORY: dataLayer First Workflow
|
||||||
|
|
||||||
|
1. **Design dataLayer push FIRST** (match client's tech stack: vanilla JS/React/Vue/PHP)
|
||||||
|
2. **Ask user**: "Can your devs add this to the page?"
|
||||||
|
3. **Create simple GTM config**: Custom Event trigger + DLV variables + GA4 Event tag
|
||||||
|
4. **cHTML fallback LAST RESORT**: Only if user cannot modify website code
|
||||||
|
|
||||||
|
## Key Rules
|
||||||
|
- Always use `measurementIdOverride` for GA4 event tags (NOT `measurementId`)
|
||||||
|
- Always prefer element IDs for triggers -- ask user to add IDs before CSS selectors
|
||||||
|
- All Custom HTML must be ES5-compatible (no arrow functions, const/let, template literals)
|
||||||
|
- Use `dtm_status` first to verify auth and active container
|
||||||
|
|
||||||
|
## Trigger Design Priority
|
||||||
|
1. Element ID (`Click ID equals "hero-btn-consult"`)
|
||||||
|
2. Data attribute (`[data-track="consult"]`)
|
||||||
|
3. Form ID (`Form ID equals "contact-form"`)
|
||||||
|
4. CSS selector (last resort -- document which selectors)
|
||||||
|
|
||||||
|
## Supported Tag Types
|
||||||
|
- `googtag` (GA4 config), `gaawe` (GA4 events), `awct` (Ads conversion)
|
||||||
|
- `html` (Custom HTML for Meta, PostHog, Kakao), `gclidw` (Conversion Linker)
|
||||||
|
|
||||||
|
## Korean Market Patterns
|
||||||
|
- Currency: KRW (no decimals)
|
||||||
|
- Payment buttons: 장바구니, 결제하기, 문의하기
|
||||||
|
- Platforms: Kakao Pixel, Naver Analytics
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
1. Analyze (Chrome DevTools) -> 2. Design events -> 3. Create via DTM Agent -> 4. Hand to gtm-validator -> 5. Document in Notion
|
||||||
49
.claude/commands/gtm-guardian.md
Normal file
49
.claude/commands/gtm-guardian.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
---
|
||||||
|
description: GTM lifecycle automation - progressive audit, version comparison, and lookup app
|
||||||
|
---
|
||||||
|
|
||||||
|
# GTM Guardian
|
||||||
|
|
||||||
|
GTM tagging lifecycle automation: progressive audit (Phase 6) and event lookup app (Phase 7).
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "GTM audit lifecycle", "container analysis"
|
||||||
|
- "GTM 유지보수", "버전 비교"
|
||||||
|
|
||||||
|
## Quick Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone D.intelligence GTM Toolkit
|
||||||
|
git clone https://github.com/ourdigital/dintel-gtm-agent.git
|
||||||
|
|
||||||
|
# Container analysis
|
||||||
|
python analyze_container.py GTM-XXXXXX.json --output report.md
|
||||||
|
|
||||||
|
# Version comparison
|
||||||
|
python diff_versions.py v1.json v2.json --output diff.md
|
||||||
|
|
||||||
|
# Unused element detection
|
||||||
|
python find_unused.py container.json --type all
|
||||||
|
```
|
||||||
|
|
||||||
|
## Phase 6: Progressive Audit
|
||||||
|
|
||||||
|
| Feature | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| Container Analysis | JSON parsing, structure analysis |
|
||||||
|
| Dependency Mapping | Tag-trigger-variable relationships |
|
||||||
|
| Version Diff | Change tracking between versions |
|
||||||
|
| Tag Validation | Automatic firing state verification |
|
||||||
|
|
||||||
|
### Audit Schedule
|
||||||
|
- Weekly: Tag firing validation
|
||||||
|
- Monthly: Full container review
|
||||||
|
- Quarterly: Architecture review
|
||||||
|
|
||||||
|
## Phase 7: Lookup App
|
||||||
|
Google Apps Script-based Event Taxonomy lookup app (Google Sheets -> Apps Script -> Web App).
|
||||||
|
|
||||||
|
## Notion Output
|
||||||
|
- Database: GTM Knowledge Base
|
||||||
|
- Properties: Project, Audit Date, Container ID, Status, Issues Count
|
||||||
|
- Reports in Korean; technical terms in English
|
||||||
42
.claude/commands/gtm-validator.md
Normal file
42
.claude/commands/gtm-validator.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: GTM QA - tag firing verification, trigger testing, naming conventions, cross-platform validation
|
||||||
|
---
|
||||||
|
|
||||||
|
# GTM Validator
|
||||||
|
|
||||||
|
Verify GTM implementations on live pages. Test triggers, validate dataLayer, check naming conventions.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "validate tags", "QA GTM", "debug GTM"
|
||||||
|
- "naming conventions", "GTM best practice"
|
||||||
|
|
||||||
|
## Validation Modes
|
||||||
|
|
||||||
|
### 1. Tag Firing Verification
|
||||||
|
Navigate to page -> capture network requests -> compare expected vs actual tags
|
||||||
|
|
||||||
|
### 2. Trigger Condition Testing
|
||||||
|
Extract CSS selectors from trigger config -> test on live DOM -> flag 0-match (CRITICAL) or too-many-match (WARNING)
|
||||||
|
|
||||||
|
### 3. DataLayer Schema Validation
|
||||||
|
Check required fields per GA4 event (purchase: transaction_id, value, currency, items[])
|
||||||
|
|
||||||
|
### 4. Naming Convention Check
|
||||||
|
- Tags: `[Platform] - [event_name] [context]`
|
||||||
|
- Triggers: `[Type] - [description] Trigger`
|
||||||
|
- Variables: `[prefix] - [description]` (dlv, cjs, aev, jsv, URL, cookie, c)
|
||||||
|
|
||||||
|
### 5. Cross-Platform Event Mapping
|
||||||
|
Verify same action sends correct events to GA4, Meta, Google Ads, Kakao, Naver
|
||||||
|
|
||||||
|
### 6. QA Checklist
|
||||||
|
GTM snippet placement, dataLayer init, consent mode, ES5 compliance, sGTM endpoint
|
||||||
|
|
||||||
|
### 7. Version Comparison
|
||||||
|
Compare tag counts and changes between container versions
|
||||||
|
|
||||||
|
## Key Rules
|
||||||
|
- Test on LIVE published version (not preview, unless debugging)
|
||||||
|
- Test on both desktop and mobile viewports
|
||||||
|
- CSS selector triggers = fragility risk; recommend adding IDs
|
||||||
|
- Document every test with screenshots/network evidence
|
||||||
51
.claude/commands/jamie-brand-audit.md
Normal file
51
.claude/commands/jamie-brand-audit.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
description: Jamie Clinic brand compliance auditor for content review and regulatory checks
|
||||||
|
---
|
||||||
|
|
||||||
|
# Jamie Brand Audit
|
||||||
|
|
||||||
|
Review existing content for brand alignment, tone/voice, and regulatory compliance. Guidance-only skill (no scripts).
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "review content", "brand audit"
|
||||||
|
- "Jamie 브랜드 검수", "콘텐츠 검토"
|
||||||
|
|
||||||
|
## Audit Process
|
||||||
|
|
||||||
|
1. Receive content to review
|
||||||
|
2. Check brand compliance against guidelines
|
||||||
|
3. Verify tone/voice alignment
|
||||||
|
4. Flag regulatory issues (medical advertising laws)
|
||||||
|
5. Provide feedback with specific corrections
|
||||||
|
|
||||||
|
## Review Checklist
|
||||||
|
|
||||||
|
### Voice & Tone
|
||||||
|
- 90% 격식체 ratio
|
||||||
|
- Correct honorifics (환자분/고객님)
|
||||||
|
- Jamie personality traits
|
||||||
|
|
||||||
|
### Brand Alignment
|
||||||
|
- Slogan consistency, core values reflected
|
||||||
|
- No competitor mentions
|
||||||
|
|
||||||
|
### Regulatory Compliance
|
||||||
|
- No exaggerated claims or guarantee language
|
||||||
|
- Proper disclosures
|
||||||
|
|
||||||
|
### Technical Accuracy
|
||||||
|
- Procedure facts correct, medical terms accurate
|
||||||
|
- Recovery times realistic
|
||||||
|
|
||||||
|
## Journal Graphic Review
|
||||||
|
- Background: Light Blue Gray (#E0E5EB)
|
||||||
|
- Text: Soft Black (#333333), sans-serif
|
||||||
|
- Medical terms include English translation
|
||||||
|
- No saturated colors, medical schematic style
|
||||||
|
- Sufficient white space, grid-based layout
|
||||||
|
|
||||||
|
## Output
|
||||||
|
- Overall compliance score
|
||||||
|
- Specific issues with line references
|
||||||
|
- Suggested corrections
|
||||||
|
- Approval/revision recommendation
|
||||||
45
.claude/commands/jamie-brand-editor.md
Normal file
45
.claude/commands/jamie-brand-editor.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
description: Jamie Clinic branded content generation with medical compliance checking
|
||||||
|
---
|
||||||
|
|
||||||
|
# Jamie Brand Editor
|
||||||
|
|
||||||
|
Content generation for Jamie Plastic Surgery Clinic following brand voice and Korean medical advertising regulations.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "write Jamie blog", "Jamie content"
|
||||||
|
- "Jamie 콘텐츠", "제이미 블로그"
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/compliance_checker.py --input draft.md
|
||||||
|
python scripts/compliance_checker.py --input draft.md --verbose --output report.json
|
||||||
|
```
|
||||||
|
|
||||||
|
## Brand Voice
|
||||||
|
- 90% 격식체 (~습니다/~입니다)
|
||||||
|
- "환자분" for medical contexts
|
||||||
|
- "자연스러운" as key descriptor
|
||||||
|
- No exaggeration, realistic expectations
|
||||||
|
|
||||||
|
## Content Types
|
||||||
|
- Blog posts (블로그 포스팅)
|
||||||
|
- Procedure pages (시술 페이지)
|
||||||
|
- Ad copy (광고 카피)
|
||||||
|
- Social media (SNS 콘텐츠)
|
||||||
|
|
||||||
|
## Compliance Rules (Korean Medical Ad Law)
|
||||||
|
- No exaggerated claims or guarantee language
|
||||||
|
- No before/after comparison violations
|
||||||
|
- No competitor comparisons
|
||||||
|
- Proper disclosure requirements
|
||||||
|
|
||||||
|
## Journal Graphic Style
|
||||||
|
- Background: Light Blue Gray (#E0E5EB), Text: Soft Black (#333333)
|
||||||
|
- Medical schematic illustrations, clean line art
|
||||||
|
- Sans-serif fonts, generous white space
|
||||||
|
- Medical terms must include English in parentheses
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
1. Generate content -> 2. Run compliance checker -> 3. Fix issues -> 4. Submit to jamie-brand-audit
|
||||||
42
.claude/commands/jamie-instagram-manager.md
Normal file
42
.claude/commands/jamie-instagram-manager.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: Instagram account management for Jamie Plastic Surgery Clinic
|
||||||
|
---
|
||||||
|
|
||||||
|
# Jamie Instagram Manager
|
||||||
|
|
||||||
|
Instagram content planning, caption writing, comment replies, and performance analysis for Jamie Clinic.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "Instagram management", "IG strategy"
|
||||||
|
- "인스타그램 관리", "인스타 콘텐츠"
|
||||||
|
|
||||||
|
## Capabilities
|
||||||
|
- Account performance analysis from Insights data
|
||||||
|
- Comment reply drafting (brand-aligned tone)
|
||||||
|
- Content calendar generation (weekly/monthly)
|
||||||
|
- Caption writing with hashtag optimization
|
||||||
|
- Reels/Stories idea generation
|
||||||
|
|
||||||
|
## Content 4 Pillars
|
||||||
|
1. **Q&A Reels (40%)**: YouTube Q&A -> 30-60s reels, Dark theme
|
||||||
|
2. **Daily Life (30%)**: Hospital atmosphere, staff, meals; photo-centric
|
||||||
|
3. **Card News (20%)**: Procedure info summaries, carousel 5-7 slides
|
||||||
|
4. **Patient Episodes (10%)**: Real model stories with disclaimer
|
||||||
|
|
||||||
|
## Brand Voice
|
||||||
|
- 해요체 60% + 습니다체 40% (friendly but restrained)
|
||||||
|
- "여러분" preferred; Max 1-2 soft emoji
|
||||||
|
- Slogan: "티안나게 수술하고, 티나게 예뻐지는"
|
||||||
|
|
||||||
|
## Posting Schedule
|
||||||
|
- Feed: 2-3x/week (1080x1350px)
|
||||||
|
- Stories: Daily 1-2x
|
||||||
|
- Reels: 1-2x/week (30-60s)
|
||||||
|
- Best times: 9AM, 12PM, 7PM
|
||||||
|
|
||||||
|
## DM Conversion Funnel
|
||||||
|
Instagram -> DM -> KakaoTalk -> Consultation -> Booking (30% target)
|
||||||
|
|
||||||
|
## Medical Compliance
|
||||||
|
- No price disclosure, no testimonial quotes, no competitor comparison
|
||||||
|
- B&A posts require disclaimer
|
||||||
39
.claude/commands/jamie-youtube-manager.md
Normal file
39
.claude/commands/jamie-youtube-manager.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
description: YouTube SEO auditor and content manager for Jamie Plastic Surgery Clinic
|
||||||
|
---
|
||||||
|
|
||||||
|
# Jamie YouTube Manager
|
||||||
|
|
||||||
|
YouTube SEO audit, metadata optimization, schema generation, and API batch updates for Jamie Clinic (18 videos).
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "YouTube SEO", "YT optimization"
|
||||||
|
- "Jamie 유튜브", "영상 최적화"
|
||||||
|
|
||||||
|
## API Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/Project/our-claude-skills/custom-skills/43-jamie-youtube-manager/code/scripts
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
python jamie_youtube_api_test.py # Test connection
|
||||||
|
python jamie_video_info.py https://youtu.be/ID -v # Get video info
|
||||||
|
python jamie_channel_status.py # Channel status
|
||||||
|
python jamie_youtube_batch_update.py --dry-run # Preview batch update
|
||||||
|
python jamie_youtube_batch_update.py --execute # Execute update
|
||||||
|
```
|
||||||
|
|
||||||
|
## Capabilities
|
||||||
|
- Video SEO Audit (score /100): title, description, chapters, captions, schema readiness
|
||||||
|
- Metadata Optimization: title formula `[시술명] + [핵심 베네핏] | 제이미성형외과`
|
||||||
|
- Description Generation with timestamps, CTA, contact info, disclaimers
|
||||||
|
- Chapter/Timestamp Generation from transcripts
|
||||||
|
- VideoObject Schema (JSON-LD) with Clip schema for chapters
|
||||||
|
- Shorts Optimization checklist
|
||||||
|
- Batch metadata update via YouTube API
|
||||||
|
|
||||||
|
## Medical Compliance
|
||||||
|
- Educational explanations allowed; testimonials/guarantees prohibited
|
||||||
|
- Required disclaimer: `※ 본 영상은 정보 제공 목적이며, 개인에 따라 결과가 다를 수 있습니다.`
|
||||||
|
|
||||||
|
## i18n Priority: Korean (required) > English (high) > Japanese/Chinese (medium)
|
||||||
50
.claude/commands/jamie-youtube-subtitle-checker.md
Normal file
50
.claude/commands/jamie-youtube-subtitle-checker.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
description: YouTube SBV subtitle correction and metadata generation for Jamie Clinic
|
||||||
|
---
|
||||||
|
|
||||||
|
# Jamie YouTube Subtitle Checker
|
||||||
|
|
||||||
|
SBV subtitle file typo correction and YouTube metadata generation.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "check subtitles", "subtitle QA"
|
||||||
|
- "자막 교정", "SBV 파일"
|
||||||
|
|
||||||
|
## Quick Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# SBV typo correction
|
||||||
|
python scripts/sbv_corrector.py --input "subtitle.sbv" --output "subtitle_corrected.sbv"
|
||||||
|
|
||||||
|
# Chapter extraction
|
||||||
|
python scripts/chapter_extractor.py --input "subtitle.sbv"
|
||||||
|
|
||||||
|
# Full workflow (correction + chapters + metadata)
|
||||||
|
python scripts/process_subtitle.py --input "subtitle.sbv" --output-dir "./output"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
1. SBV parsing and text extraction
|
||||||
|
2. Typo auto-correction (typo_dictionary.json)
|
||||||
|
3. Medical terminology standardization
|
||||||
|
4. Chapter timestamp extraction
|
||||||
|
5. YouTube metadata generation
|
||||||
|
|
||||||
|
## Key Typo Patterns
|
||||||
|
|
||||||
|
| Category | Wrong | Correct |
|
||||||
|
|----------|-------|---------|
|
||||||
|
| Brand | 데이미, 재이미 | 제이미 |
|
||||||
|
| Procedure | 쌍거풀, 쌍커풀 | 쌍꺼풀 |
|
||||||
|
| Medical | 절계, 절게 | 절개 |
|
||||||
|
|
||||||
|
## Output Files
|
||||||
|
- `{filename}_corrected.sbv` -- Corrected subtitles
|
||||||
|
- `youtube_video_info.md` -- YouTube metadata (title, chapters, description, hashtags)
|
||||||
|
- `correction_report.md` -- Typo change log
|
||||||
|
|
||||||
|
## Quality Checklist
|
||||||
|
- Brand name "제이미성형외과" correct
|
||||||
|
- Procedure names use official terminology
|
||||||
|
- Chapters include 0:00 intro
|
||||||
|
- 3-5 hashtags included
|
||||||
55
.claude/commands/our-settings-audit.md
Normal file
55
.claude/commands/our-settings-audit.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
description: Claude Code settings optimization and token audit
|
||||||
|
---
|
||||||
|
|
||||||
|
# Claude Code Settings Optimizer
|
||||||
|
|
||||||
|
Self-audit and optimize Claude Code configuration for maximum token efficiency and performance.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "settings audit", "exceed response limit", "MCP error"
|
||||||
|
- "token usage", "context budget"
|
||||||
|
|
||||||
|
## Quick Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 scripts/run_audit.py
|
||||||
|
python3 scripts/analyze_tokens.py
|
||||||
|
python3 scripts/auto_fix.py --apply
|
||||||
|
```
|
||||||
|
|
||||||
|
## Audit Scope
|
||||||
|
|
||||||
|
### Token Budget Targets
|
||||||
|
|
||||||
|
| Component | Target | Max |
|
||||||
|
|-----------|--------|-----|
|
||||||
|
| CLAUDE.md | 2,000 | 3,000 |
|
||||||
|
| MCP Servers | 5,000 | 10,000 |
|
||||||
|
| Skills metadata | 500 | 1,000 |
|
||||||
|
| Working space | >140,000 | -- |
|
||||||
|
|
||||||
|
### MCP Server Strategy
|
||||||
|
|
||||||
|
| Strategy | Criteria |
|
||||||
|
|----------|----------|
|
||||||
|
| `always` | Essential for daily work (Playwright, Notion) |
|
||||||
|
| `lazy` | Occasionally needed (GitHub, Slack) |
|
||||||
|
| `disable` | Rarely used or token-heavy |
|
||||||
|
|
||||||
|
Every MCP server MUST have `serverInstructions` for Tool Search.
|
||||||
|
|
||||||
|
### CLAUDE.md Health Checks
|
||||||
|
- Line count (warn >200), token estimate (warn >3,000)
|
||||||
|
- Structure quality, redundant info, unnecessary repetition
|
||||||
|
|
||||||
|
### Auto-Fix (safe, with backup)
|
||||||
|
- Add `serverInstructions` to MCP servers
|
||||||
|
- Add frontmatter to commands missing it
|
||||||
|
- Suggest CLAUDE.md compression
|
||||||
|
|
||||||
|
## Output Report
|
||||||
|
- Token budget breakdown and percentages
|
||||||
|
- Health status (Good/Needs Attention/Critical)
|
||||||
|
- Findings (Critical/Warnings/Passing)
|
||||||
|
- Prioritized recommendations
|
||||||
38
.claude/commands/ourdigital-ad-manager.md
Normal file
38
.claude/commands/ourdigital-ad-manager.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
description: Ad copywriting and keyword research for OurDigital marketing
|
||||||
|
---
|
||||||
|
|
||||||
|
# OurDigital Ad Manager
|
||||||
|
|
||||||
|
Automated ad copywriting and keyword research. Activated with "ourdigital" keyword.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "ourdigital ad copy", "ourdigital 광고 카피"
|
||||||
|
- "ourdigital keyword", "ourdigital 키워드"
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Generate Google Ads copy
|
||||||
|
python code/scripts/generate_ads.py --product "SEO 컨설팅" --platform google --variations 3
|
||||||
|
|
||||||
|
# Keyword research
|
||||||
|
python code/scripts/keyword_research.py --seed "데이터 분석" --market korea
|
||||||
|
|
||||||
|
# Bulk ad generation
|
||||||
|
python code/scripts/generate_ads.py --input keywords.csv --platform naver --output ads.csv
|
||||||
|
```
|
||||||
|
|
||||||
|
## Platform Specs
|
||||||
|
|
||||||
|
| Platform | Headline | Description |
|
||||||
|
|----------|----------|-------------|
|
||||||
|
| Google | 30x3 chars | 90x2 chars |
|
||||||
|
| Naver | 25 chars | 45 chars |
|
||||||
|
| Meta | 40 chars | 125 chars |
|
||||||
|
|
||||||
|
## Capabilities
|
||||||
|
- Single/bulk ad copy generation with USP and CTA
|
||||||
|
- Keyword volume research with competitor analysis
|
||||||
|
- Competitor ad analysis
|
||||||
|
- Output: JSON, CSV (bulk upload), Markdown report
|
||||||
39
.claude/commands/ourdigital-backoffice.md
Normal file
39
.claude/commands/ourdigital-backoffice.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
description: Business document creation (quotes, proposals, cost analysis) for OurDigital
|
||||||
|
---
|
||||||
|
|
||||||
|
# OurDigital Backoffice
|
||||||
|
|
||||||
|
Business document generation with pricing automation. Activated with "ourdigital" keyword.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "ourdigital quote", "ourdigital 견적서"
|
||||||
|
- "ourdigital proposal", "ourdigital 제안서"
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Generate quote
|
||||||
|
python code/scripts/generate_quote.py --client "ABC Company" --services "seo_audit,gtm_setup"
|
||||||
|
|
||||||
|
# Create proposal
|
||||||
|
python code/scripts/create_proposal.py --client "XYZ Corp" --project "마케팅 자동화" --duration "3months"
|
||||||
|
|
||||||
|
# Cost analysis
|
||||||
|
python code/scripts/cost_analysis.py --project "GTM 구축" --investment 5000000 --period 12months
|
||||||
|
```
|
||||||
|
|
||||||
|
## Service Codes & Base Prices
|
||||||
|
|
||||||
|
| Code | Service | Price |
|
||||||
|
|------|---------|-------|
|
||||||
|
| `seo_audit` | SEO Technical Audit | 4,000,000 |
|
||||||
|
| `seo_monthly` | SEO Monthly | 2,000,000/월 |
|
||||||
|
| `gtm_setup` | GTM Setup | 3,000,000 |
|
||||||
|
| `ga4_setup` | GA4 Implementation | 2,000,000 |
|
||||||
|
| `dashboard` | Dashboard Dev | 4,000,000 |
|
||||||
|
| `consulting` | Consulting Day | 1,500,000/일 |
|
||||||
|
| `workshop` | Workshop | 1,500,000/회 |
|
||||||
|
|
||||||
|
## Output Formats
|
||||||
|
- Markdown (default), PDF, DOCX
|
||||||
42
.claude/commands/ourdigital-blog.md
Normal file
42
.claude/commands/ourdigital-blog.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: Korean blog drafting for blog.ourdigital.org with Ghost CMS integration
|
||||||
|
---
|
||||||
|
|
||||||
|
# OurDigital Blog
|
||||||
|
|
||||||
|
Korean blog draft creation for blog.ourdigital.org. Activated with "ourdigital" keyword.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "ourdigital blog", "ourdigital 블로그"
|
||||||
|
- "ourdigital 한국어 포스트"
|
||||||
|
|
||||||
|
## Channel Profile
|
||||||
|
|
||||||
|
- URL: blog.ourdigital.org
|
||||||
|
- Language: Korean (영문 전문용어 병기)
|
||||||
|
- Tone: Analytical, Educational
|
||||||
|
- Platform: Ghost CMS
|
||||||
|
- Length: 1,500-3,000자
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
1. **Topic Clarification**: 주제, 타겟 독자, 깊이 수준
|
||||||
|
2. **Draft Structure**: 도입부(Hook) -> 본론(3-5 포인트) -> 결론(Summary + 열린 질문)
|
||||||
|
3. **Writing Style**: 분석적+개인적 톤, 한글 기본 영문 병기, 관찰->분석->함의
|
||||||
|
4. **SEO Metadata**: title(60자), meta_description(155자), slug, tags
|
||||||
|
5. **Output**: Markdown with YAML frontmatter
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python shared/scripts/export_blog.py --output ulysses
|
||||||
|
python shared/scripts/ghost_publish.py --draft
|
||||||
|
```
|
||||||
|
|
||||||
|
## Export Options
|
||||||
|
1. Ulysses -> `$ULYSSES_EXPORT_PATH`
|
||||||
|
2. Ghost Draft -> API push
|
||||||
|
3. Local -> `./output/blog/`
|
||||||
|
|
||||||
|
## Brand Compliance
|
||||||
|
- 분석적 톤, 기술+인간적 함의, 전문용어 영문 병기, 1,500-3,000자
|
||||||
47
.claude/commands/ourdigital-document.md
Normal file
47
.claude/commands/ourdigital-document.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
description: Notion-to-presentation workflow for OurDigital branded documents
|
||||||
|
---
|
||||||
|
|
||||||
|
# OurDigital Document
|
||||||
|
|
||||||
|
Automated Notion-to-presentation pipeline with brand styling.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "ourdigital document", "ourdigital 문서"
|
||||||
|
- "ourdigital presentation", "ourdigital 프레젠테이션"
|
||||||
|
|
||||||
|
## Pipeline
|
||||||
|
|
||||||
|
```
|
||||||
|
extract_notion.py -> synthesize_content.py -> apply_brand.py
|
||||||
|
| | |
|
||||||
|
research.json synthesis.json presentation.pptx
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/run_workflow.py --notion-url [URL] --output presentation.pptx
|
||||||
|
|
||||||
|
# Step-by-step
|
||||||
|
python scripts/extract_notion.py [URL] > research.json
|
||||||
|
python scripts/synthesize_content.py research.json > synthesis.json
|
||||||
|
python scripts/apply_brand.py synthesis.json --output presentation.pptx
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
| Script | Purpose |
|
||||||
|
|--------|---------|
|
||||||
|
| `run_workflow.py` | Orchestrate full pipeline |
|
||||||
|
| `extract_notion.py` | Extract content from Notion |
|
||||||
|
| `synthesize_content.py` | Analyze and structure |
|
||||||
|
| `apply_brand.py` | Apply corporate styling |
|
||||||
|
|
||||||
|
## Output Formats
|
||||||
|
- PowerPoint (.pptx)
|
||||||
|
- Figma (via API)
|
||||||
|
- HTML preview
|
||||||
|
|
||||||
|
## Brand Configuration
|
||||||
|
See `code/assets/brand_config.json` for logo, colors (OurDigital palette), fonts (Poppins/Lora), slide templates.
|
||||||
44
.claude/commands/ourdigital-journal.md
Normal file
44
.claude/commands/ourdigital-journal.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
description: English essay creation for journal.ourdigital.org with Ghost CMS integration
|
||||||
|
---
|
||||||
|
|
||||||
|
# OurDigital Journal
|
||||||
|
|
||||||
|
English essay and article creation for journal.ourdigital.org. Activated with "ourdigital" keyword.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "ourdigital journal", "ourdigital essay"
|
||||||
|
- "ourdigital English article"
|
||||||
|
|
||||||
|
## Channel Profile
|
||||||
|
|
||||||
|
- URL: journal.ourdigital.org
|
||||||
|
- Language: English
|
||||||
|
- Tone: Conversational, Poetic, Reflective
|
||||||
|
- Platform: Ghost CMS
|
||||||
|
- Length: 1,000-2,000 words
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
1. **Topic Exploration**: Angle, audience, depth level
|
||||||
|
2. **Essay Structure**: Opening (evocative) -> Exploration (3-4 observations) -> Synthesis -> Closing (open-ended)
|
||||||
|
3. **Writing Style**: First-person reflective, philosophical-technical hybrid, epistemic humility, cultural bridging
|
||||||
|
4. **Output**: Markdown with YAML frontmatter (title, meta_description, slug, tags)
|
||||||
|
|
||||||
|
## Content Types
|
||||||
|
|
||||||
|
| Type | Length |
|
||||||
|
|------|--------|
|
||||||
|
| Personal Essay | 1,000-1,500 words |
|
||||||
|
| Cultural Observation | 1,500-2,000 words |
|
||||||
|
| Industry Insight | 1,200-1,800 words |
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python shared/scripts/ghost_publish.py --file essay.md --channel journal --draft
|
||||||
|
```
|
||||||
|
|
||||||
|
## Export Options
|
||||||
|
1. Ghost Draft -> API push
|
||||||
|
2. Local -> `./output/journal/`
|
||||||
39
.claude/commands/ourdigital-skill-creator.md
Normal file
39
.claude/commands/ourdigital-skill-creator.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
description: Meta skill for creating new OurDigital Claude Skills with scaffolding
|
||||||
|
---
|
||||||
|
|
||||||
|
# OurDigital Skill Creator
|
||||||
|
|
||||||
|
Create and manage OurDigital Claude Skills with automated scaffolding and Notion sync.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "ourdigital 스킬 만들기", "ourdigital skill creator"
|
||||||
|
- "create ourdigital skill", "new ourdigital skill"
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python shared/scripts/init_skill.py {skill-name} --number XX
|
||||||
|
python shared/scripts/validate_skill.py XX-ourdigital-{skill-name}
|
||||||
|
python shared/scripts/sync_notion.py XX-ourdigital-{skill-name} --action=create
|
||||||
|
```
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
1. **Suitability Check**: Clear trigger, focused scope, reusable resources, no overlap (>=3 passes)
|
||||||
|
2. **Requirements Q&A**: Purpose, trigger, tools, output, environment
|
||||||
|
3. **Generate Structure**: `mkdir -p XX-ourdigital-{name}/{code,desktop,shared/{references,templates,scripts},docs/logs}`
|
||||||
|
4. **YAML Frontmatter**: Standard template with name, description, triggers, features
|
||||||
|
5. **Validation**: Directory structure, SKILL.md in both versions, content 800-1,200 words
|
||||||
|
6. **Notion Sync**: Record to Working with AI database
|
||||||
|
|
||||||
|
## Skill Categories
|
||||||
|
|
||||||
|
| Number | Category |
|
||||||
|
|--------|----------|
|
||||||
|
| 01-09 | OurDigital Core |
|
||||||
|
| 10 | Meta (this skill) |
|
||||||
|
| 11-19 | SEO |
|
||||||
|
| 20-29 | GTM/Analytics |
|
||||||
|
| 31-39 | Notion |
|
||||||
|
| 40-49 | Jamie Clinic |
|
||||||
42
.claude/commands/ourdigital-trainer.md
Normal file
42
.claude/commands/ourdigital-trainer.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: Training material creation and workshop planning for OurDigital
|
||||||
|
---
|
||||||
|
|
||||||
|
# OurDigital Trainer
|
||||||
|
|
||||||
|
Training material generation with template-based curriculum and evaluation forms.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "ourdigital training", "ourdigital 교육"
|
||||||
|
- "ourdigital workshop", "ourdigital 워크샵"
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Generate curriculum
|
||||||
|
python code/scripts/generate_curriculum.py --topic "데이터 리터러시" --duration "4hours" --audience "마케터"
|
||||||
|
|
||||||
|
# Create workshop agenda
|
||||||
|
python code/scripts/create_workshop.py --topic "AI 활용법" --format "half-day" --participants 20
|
||||||
|
|
||||||
|
# Generate evaluation form
|
||||||
|
python code/scripts/create_evaluation.py --training "SEO 기초" --type "pre-post"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Workshop Formats
|
||||||
|
|
||||||
|
| Format | Duration | Modules |
|
||||||
|
|--------|----------|---------|
|
||||||
|
| mini | 2 hours | 2 |
|
||||||
|
| half-day | 4 hours | 3-4 |
|
||||||
|
| full-day | 8 hours | 5-6 |
|
||||||
|
| series | Multiple | Custom |
|
||||||
|
|
||||||
|
## Evaluation Types
|
||||||
|
- pre-post: 학습 전후 비교
|
||||||
|
- satisfaction: 만족도 조사
|
||||||
|
- knowledge: 지식 평가
|
||||||
|
- application: 현업 적용도
|
||||||
|
|
||||||
|
## Output Formats
|
||||||
|
- Markdown (default), JSON, Google Slides export
|
||||||
40
.claude/commands/seo-comprehensive-audit.md
Normal file
40
.claude/commands/seo-comprehensive-audit.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
description: Unified 6-stage SEO audit orchestrator with weighted health score
|
||||||
|
---
|
||||||
|
|
||||||
|
# SEO Comprehensive Audit
|
||||||
|
|
||||||
|
Runs 6 sub-skill audits, merges results into unified report with weighted health score (0-100), pushes to Notion.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "comprehensive SEO", "full SEO audit"
|
||||||
|
- "종합 SEO 감사"
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/seo_audit_orchestrator.py --url https://example.com
|
||||||
|
python scripts/seo_audit_orchestrator.py --url https://example.com --skip-local --skip-gsc
|
||||||
|
python scripts/seo_audit_orchestrator.py --url https://example.com --json
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pipeline (6 Stages)
|
||||||
|
|
||||||
|
| Stage | Audit | Weight |
|
||||||
|
|-------|-------|--------|
|
||||||
|
| 1 | Technical SEO (robots, sitemap) | 20% |
|
||||||
|
| 2 | On-Page SEO (meta, headings, links) | 20% |
|
||||||
|
| 3 | Core Web Vitals (LCP, CLS, INP) | 25% |
|
||||||
|
| 4 | Schema Validation | 15% |
|
||||||
|
| 5 | Local SEO (GBP, Naver, NAP) | 10% |
|
||||||
|
| 6 | Search Console (rankings, CTR) | 10% |
|
||||||
|
|
||||||
|
## Stage 5: Local SEO Key Requirements
|
||||||
|
- Business Identity extraction is MANDATORY first step
|
||||||
|
- Korean market: GBP and Naver Smart Place = Critical; Kakao Map = High
|
||||||
|
- GBP/Naver Map are JS-rendered; report unfound as "not discoverable via web search"
|
||||||
|
|
||||||
|
## Notion Output
|
||||||
|
- Database ID: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||||
|
- Report in Korean; technical English terms as-is
|
||||||
|
- Audit ID format: COMP-YYYYMMDD-NNN
|
||||||
45
.claude/commands/seo-core-web-vitals.md
Normal file
45
.claude/commands/seo-core-web-vitals.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
description: Core Web Vitals analyzer using PageSpeed Insights API (LCP, CLS, INP, FID)
|
||||||
|
---
|
||||||
|
|
||||||
|
# SEO Core Web Vitals
|
||||||
|
|
||||||
|
PageSpeed Insights API client for CWV measurement and recommendations.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "Core Web Vitals", "page speed"
|
||||||
|
- "LCP", "CLS", "INP", "performance audit"
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export PAGESPEED_API_KEY=your_api_key
|
||||||
|
python scripts/pagespeed_client.py --url https://example.com
|
||||||
|
python scripts/pagespeed_client.py --url https://example.com --strategy both
|
||||||
|
python scripts/pagespeed_client.py --urls urls.txt --output results.json
|
||||||
|
```
|
||||||
|
|
||||||
|
## CWV Thresholds
|
||||||
|
|
||||||
|
| Metric | Good | Poor |
|
||||||
|
|--------|------|------|
|
||||||
|
| LCP | <=2.5s | >4s |
|
||||||
|
| FID | <=100ms | >300ms |
|
||||||
|
| CLS | <=0.1 | >0.25 |
|
||||||
|
| INP | <=200ms | >500ms |
|
||||||
|
|
||||||
|
## Common Fixes
|
||||||
|
|
||||||
|
| Issue | Fix |
|
||||||
|
|-------|-----|
|
||||||
|
| Large LCP | Optimize images, preload critical resources |
|
||||||
|
| High CLS | Set image dimensions, avoid injected content |
|
||||||
|
| Poor INP | Reduce JavaScript, optimize event handlers |
|
||||||
|
| Slow TTFB | Improve server response, use CDN |
|
||||||
|
|
||||||
|
## Rate Limits
|
||||||
|
- No API key: 25/day; With key: 25,000/day
|
||||||
|
|
||||||
|
## Notion Output
|
||||||
|
- Database: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||||
|
- Korean report, Audit ID: [TYPE]-YYYYMMDD-NNN
|
||||||
42
.claude/commands/seo-local-audit.md
Normal file
42
.claude/commands/seo-local-audit.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: Local SEO audit for Korean-market businesses (GBP, Naver Place, NAP, citations)
|
||||||
|
---
|
||||||
|
|
||||||
|
# SEO Local Audit
|
||||||
|
|
||||||
|
Korean-market local SEO: business identity, GBP, Naver Smart Place, Kakao Map, NAP consistency, citations, LocalBusiness schema.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "local SEO", "Google Business Profile"
|
||||||
|
- "Naver Place", "NAP consistency"
|
||||||
|
|
||||||
|
## Workflow (7 Steps)
|
||||||
|
|
||||||
|
1. **Business Identity (MANDATORY FIRST)**: Extract from JSON-LD, contact page, footer
|
||||||
|
2. **Website NAP Extraction**: Establish canonical NAP baseline
|
||||||
|
3. **GBP Verification**: Layered discovery (provided URL -> website -> WebSearch fallback)
|
||||||
|
4. **Naver Smart Place**: Layered discovery with Korean search queries
|
||||||
|
5. **Kakao Map Verification**: Check website links, then WebSearch
|
||||||
|
6. **Citation Discovery**: Industry directories (강남언니, 바비톡, 굿닥, etc.)
|
||||||
|
7. **LocalBusiness Schema Validation**: JSON-LD completeness check
|
||||||
|
|
||||||
|
## Scoring Weights
|
||||||
|
|
||||||
|
| Component | Weight |
|
||||||
|
|-----------|--------|
|
||||||
|
| NAP Consistency | 20% |
|
||||||
|
| GBP Optimization | 20% |
|
||||||
|
| Naver Smart Place | 20% |
|
||||||
|
| LocalBusiness Schema | 15% |
|
||||||
|
| Kakao Map | 10% |
|
||||||
|
| Citations | 10% |
|
||||||
|
| Business Identity | 5% |
|
||||||
|
|
||||||
|
## Key Rules
|
||||||
|
- GBP and Naver Map are JS-rendered -- use WebSearch for discovery
|
||||||
|
- "Not discoverable via web search" != "does not exist"
|
||||||
|
- Korean market: Naver Smart Place is as important as GBP
|
||||||
|
|
||||||
|
## Notion Output
|
||||||
|
- Database: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||||
|
- Category: Local SEO, Audit ID: LOCAL-YYYYMMDD-NNN
|
||||||
40
.claude/commands/seo-on-page-audit.md
Normal file
40
.claude/commands/seo-on-page-audit.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
description: On-page SEO analyzer for meta tags, headings, links, images, and Open Graph
|
||||||
|
---
|
||||||
|
|
||||||
|
# SEO On-Page Audit
|
||||||
|
|
||||||
|
Single-page optimization analysis: meta tags, heading structure, links, images, OG data.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "on-page SEO", "meta tags"
|
||||||
|
- "heading analysis", "page SEO check"
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/page_analyzer.py --url https://example.com
|
||||||
|
python scripts/page_analyzer.py --url https://example.com --json
|
||||||
|
python scripts/page_analyzer.py --urls urls.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Analysis Categories
|
||||||
|
- **Meta Tags**: Title (length, keywords), description, canonical, robots
|
||||||
|
- **Heading Structure**: H1 presence/count, hierarchy validation, keyword placement
|
||||||
|
- **Links**: Internal/external count, broken links, nofollow distribution
|
||||||
|
- **Images**: Alt attributes, file sizes, lazy loading
|
||||||
|
- **Open Graph**: OG title/description/image, Twitter Cards
|
||||||
|
|
||||||
|
## Common Issues
|
||||||
|
|
||||||
|
| Issue | Severity |
|
||||||
|
|-------|----------|
|
||||||
|
| Missing H1 | High |
|
||||||
|
| Title too long (>60) | Medium |
|
||||||
|
| No meta description | High |
|
||||||
|
| Images without alt | Medium |
|
||||||
|
| Multiple H1 tags | Medium |
|
||||||
|
|
||||||
|
## Notion Output
|
||||||
|
- Database: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||||
|
- Korean report, Audit ID: [TYPE]-YYYYMMDD-NNN
|
||||||
42
.claude/commands/seo-search-console.md
Normal file
42
.claude/commands/seo-search-console.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
description: Google Search Console data retrieval (rankings, CTR, impressions, sitemaps)
|
||||||
|
---
|
||||||
|
|
||||||
|
# SEO Search Console
|
||||||
|
|
||||||
|
GSC API client for search analytics, sitemap status, and index coverage.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "Search Console", "rankings"
|
||||||
|
- "GSC data", "search performance"
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/gsc_client.py --site sc-domain:example.com --action summary
|
||||||
|
python scripts/gsc_client.py --site sc-domain:example.com --action queries --limit 100
|
||||||
|
python scripts/gsc_client.py --site sc-domain:example.com --action pages
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
- Credentials: `~/.credential/ourdigital-seo-agent.json`
|
||||||
|
- Service account: `ourdigital-seo-agent@ourdigital-insights.iam.gserviceaccount.com`
|
||||||
|
|
||||||
|
## Actions
|
||||||
|
|
||||||
|
| Action | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `summary` | Clicks, impressions, CTR, position overview |
|
||||||
|
| `queries` | Top search queries |
|
||||||
|
| `pages` | Top pages by clicks |
|
||||||
|
| `sitemaps` | Sitemap submission status |
|
||||||
|
| `coverage` | Index coverage issues |
|
||||||
|
|
||||||
|
## Site Property Formats
|
||||||
|
- Domain: `sc-domain:example.com`
|
||||||
|
- URL prefix: `https://www.example.com/`
|
||||||
|
|
||||||
|
## Notion Output
|
||||||
|
- Database: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||||
|
- Korean report, Audit ID: [TYPE]-YYYYMMDD-NNN
|
||||||
44
.claude/commands/seo-technical-audit.md
Normal file
44
.claude/commands/seo-technical-audit.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
description: Technical SEO audit for robots.txt, XML sitemap, and URL crawlability
|
||||||
|
---
|
||||||
|
|
||||||
|
# SEO Technical Audit
|
||||||
|
|
||||||
|
Crawlability fundamentals: robots.txt validation, XML sitemap analysis, URL accessibility checking.
|
||||||
|
|
||||||
|
## Triggers
|
||||||
|
- "technical SEO", "crawlability"
|
||||||
|
- "robots.txt", "sitemap validation"
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/robots_checker.py --url https://example.com
|
||||||
|
python scripts/sitemap_validator.py --url https://example.com/sitemap.xml
|
||||||
|
python scripts/sitemap_crawler.py --sitemap https://example.com/sitemap.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
| Script | Purpose |
|
||||||
|
|--------|---------|
|
||||||
|
| `robots_checker.py` | Parse robots.txt, test URL rules |
|
||||||
|
| `sitemap_validator.py` | Validate XML structure, URL count, lastmod |
|
||||||
|
| `sitemap_crawler.py` | Async check URL accessibility, HTTP status |
|
||||||
|
|
||||||
|
## Common Issues Detected
|
||||||
|
|
||||||
|
| Issue | Severity |
|
||||||
|
|-------|----------|
|
||||||
|
| Missing sitemap declaration | Medium |
|
||||||
|
| Blocking CSS/JS resources | High |
|
||||||
|
| URLs returning 404 | High |
|
||||||
|
| Exceeds 50,000 URL limit | High |
|
||||||
|
| Non-canonical URLs included | Medium |
|
||||||
|
|
||||||
|
## Config
|
||||||
|
- `CRAWL_DELAY=1.0`, `MAX_CONCURRENT=20`, `REQUEST_TIMEOUT=30`
|
||||||
|
|
||||||
|
## Notion Output
|
||||||
|
- Database: `2c8581e5-8a1e-8035-880b-e38cefc2f3ef`
|
||||||
|
- Korean report, Audit ID: [TYPE]-YYYYMMDD-NNN
|
||||||
@@ -224,7 +224,7 @@ For long-running tasks, use `run_in_background: true`:
|
|||||||
|
|
||||||
```
|
```
|
||||||
# Good candidates for background execution:
|
# Good candidates for background execution:
|
||||||
- Full skill audit across all 52 skills
|
- Full skill audit across all 62 skills
|
||||||
- Running Python tests on multiple skills
|
- Running Python tests on multiple skills
|
||||||
- Generating comprehensive documentation
|
- Generating comprehensive documentation
|
||||||
|
|
||||||
|
|||||||
13
CLAUDE.md
13
CLAUDE.md
@@ -7,7 +7,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
**GitHub**: https://github.com/ourdigital/our-claude-skills
|
**GitHub**: https://github.com/ourdigital/our-claude-skills
|
||||||
|
|
||||||
This is a Claude Skills collection repository containing:
|
This is a Claude Skills collection repository containing:
|
||||||
- **custom-skills/**: 62 custom skills for OurDigital workflows, SEO, GTM, Jamie Brand, NotebookLM, Notion, D.intelligence Agent Corps, Reference Curation, Mac Optimizer, and Multi-Agent Collaboration
|
- **custom-skills/**: 62 custom skills for OurDigital workflows, SEO, GTM, Jamie Brand, NotebookLM, Notion, D.intelligence Agent Corps, Reference Curation, Mac Optimizer, TUI Designer, and Multi-Agent Collaboration
|
||||||
- **example-skills/**: Reference examples from Anthropic's official skills repository
|
- **example-skills/**: Reference examples from Anthropic's official skills repository
|
||||||
- **official-skills/**: Notion integration skills (3rd party)
|
- **official-skills/**: Notion integration skills (3rd party)
|
||||||
- **reference/**: Skill format requirements documentation
|
- **reference/**: Skill format requirements documentation
|
||||||
@@ -85,7 +85,6 @@ This is a Claude Skills collection repository containing:
|
|||||||
|---|-------|---------|---------|
|
|---|-------|---------|---------|
|
||||||
| 40 | jamie-brand-editor | Branded content generation | "write Jamie blog", "Jamie content" |
|
| 40 | jamie-brand-editor | Branded content generation | "write Jamie blog", "Jamie content" |
|
||||||
| 41 | jamie-brand-audit | Content review/compliance | "review content", "brand audit" |
|
| 41 | jamie-brand-audit | Content review/compliance | "review content", "brand audit" |
|
||||||
| 42 | jamie-journal-editor | Clinic journal editing | "Jamie journal", "진료 일지" |
|
|
||||||
| 43 | jamie-youtube-manager | YouTube SEO audit & management | "YouTube SEO", "YT optimization" |
|
| 43 | jamie-youtube-manager | YouTube SEO audit & management | "YouTube SEO", "YT optimization" |
|
||||||
| 44 | jamie-youtube-subtitle-checker | YouTube subtitle validation | "check subtitles", "subtitle QA" |
|
| 44 | jamie-youtube-subtitle-checker | YouTube subtitle validation | "check subtitles", "subtitle QA" |
|
||||||
| 45 | jamie-instagram-manager | Instagram account management | "Instagram management", "IG strategy" |
|
| 45 | jamie-instagram-manager | Instagram account management | "Instagram management", "IG strategy" |
|
||||||
@@ -121,11 +120,12 @@ This is a Claude Skills collection repository containing:
|
|||||||
|
|
||||||
**User Guide:** `custom-skills/dintel-shared/USER-GUIDE.md`
|
**User Guide:** `custom-skills/dintel-shared/USER-GUIDE.md`
|
||||||
|
|
||||||
### System Tools (92)
|
### System & Design Tools (92-93)
|
||||||
|
|
||||||
| # | Skill | Purpose | Trigger |
|
| # | Skill | Purpose | Trigger |
|
||||||
|---|-------|---------|---------|
|
|---|-------|---------|---------|
|
||||||
| 92 | mac-optimizer | macOS system health audit & optimization (Claude Code only) | "audit my mac", "system health", "clean up caches", "check security", "update packages" |
|
| 92 | mac-optimizer | macOS system health audit & optimization (Claude Code only) | "audit my mac", "system health", "clean up caches", "check security", "update packages" |
|
||||||
|
| 93 | tui-designer | TUI wizard interface design (Norton Commander / Gopher style, Rich) | "build TUI", "CLI wizard", "terminal UI", "Rich TUI" |
|
||||||
|
|
||||||
### Reference Curator & Multi-Agent (90-91)
|
### Reference Curator & Multi-Agent (90-91)
|
||||||
|
|
||||||
@@ -253,15 +253,14 @@ our-claude-skills/
|
|||||||
│ ├── 34-seo-reporting-dashboard/
|
│ ├── 34-seo-reporting-dashboard/
|
||||||
│ │
|
│ │
|
||||||
│ ├── 60-gtm-audit/
|
│ ├── 60-gtm-audit/
|
||||||
│ ├── 61-gtm-manager/
|
│ ├── 61-gtm-editor/
|
||||||
│ ├── 62-gtm-guardian/
|
│ ├── 62-gtm-validator/
|
||||||
│ │
|
│ │
|
||||||
│ ├── 31-notion-organizer/
|
│ ├── 31-notion-organizer/
|
||||||
│ ├── 32-notion-writer/
|
│ ├── 32-notion-writer/
|
||||||
│ │
|
│ │
|
||||||
│ ├── 40-jamie-brand-editor/
|
│ ├── 40-jamie-brand-editor/
|
||||||
│ ├── 41-jamie-brand-audit/
|
│ ├── 41-jamie-brand-audit/
|
||||||
│ ├── 42-jamie-journal-editor/
|
|
||||||
│ ├── 43-jamie-youtube-manager/
|
│ ├── 43-jamie-youtube-manager/
|
||||||
│ ├── 44-jamie-youtube-subtitle-checker/
|
│ ├── 44-jamie-youtube-subtitle-checker/
|
||||||
│ ├── 45-jamie-instagram-manager/
|
│ ├── 45-jamie-instagram-manager/
|
||||||
@@ -298,6 +297,8 @@ our-claude-skills/
|
|||||||
│ │
|
│ │
|
||||||
│ ├── 92-mac-optimizer/ # macOS system health toolkit (Claude Code only)
|
│ ├── 92-mac-optimizer/ # macOS system health toolkit (Claude Code only)
|
||||||
│ │
|
│ │
|
||||||
|
│ ├── 93-tui-designer/ # TUI wizard design (Rich, Norton Commander style)
|
||||||
|
│ │
|
||||||
│ └── 99_archive/
|
│ └── 99_archive/
|
||||||
│
|
│
|
||||||
├── example-skills/skills-main/
|
├── example-skills/skills-main/
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> **Internal R&D Repository** - This repository is restricted for internal use only.
|
> **Internal R&D Repository** - This repository is restricted for internal use only.
|
||||||
|
|
||||||
A collection of **64 custom Claude Skills** for OurDigital workflows, D.intelligence Agent Corps (9-agent business operations suite), Jamie Plastic Surgery Clinic brand management, SEO/GTM tools, NotebookLM automation, Notion integrations, reference documentation curation, macOS system optimization, and multi-agent collaboration.
|
A collection of **62 custom Claude Skills** for OurDigital workflows, D.intelligence Agent Corps (9-agent business operations suite), Jamie Plastic Surgery Clinic brand management, SEO/GTM tools, NotebookLM automation, Notion integrations, reference documentation curation, macOS system optimization, TUI wizard design, and multi-agent collaboration.
|
||||||
|
|
||||||
## Quick Install
|
## Quick Install
|
||||||
|
|
||||||
@@ -105,7 +105,6 @@ cd our-claude-skills/custom-skills/_ourdigital-shared
|
|||||||
|---|-------|---------|
|
|---|-------|---------|
|
||||||
| 40 | `jamie-brand-editor` | Branded content generation |
|
| 40 | `jamie-brand-editor` | Branded content generation |
|
||||||
| 41 | `jamie-brand-audit` | Content review/compliance |
|
| 41 | `jamie-brand-audit` | Content review/compliance |
|
||||||
| 42 | `jamie-journal-editor` | Clinic journal editing |
|
|
||||||
| 43 | `jamie-youtube-manager` | YouTube SEO audit & management |
|
| 43 | `jamie-youtube-manager` | YouTube SEO audit & management |
|
||||||
| 44 | `jamie-youtube-subtitle-checker` | YouTube subtitle validation |
|
| 44 | `jamie-youtube-subtitle-checker` | YouTube subtitle validation |
|
||||||
| 45 | `jamie-instagram-manager` | Instagram account management |
|
| 45 | `jamie-instagram-manager` | Instagram account management |
|
||||||
@@ -121,11 +120,12 @@ cd our-claude-skills/custom-skills/_ourdigital-shared
|
|||||||
|
|
||||||
**Prerequisites:** `pip install notebooklm-py && playwright install chromium && notebooklm login`
|
**Prerequisites:** `pip install notebooklm-py && playwright install chromium && notebooklm login`
|
||||||
|
|
||||||
### System Tools (92)
|
### System & Design Tools (92-93)
|
||||||
|
|
||||||
| # | Skill | Purpose |
|
| # | Skill | Purpose |
|
||||||
|---|-------|---------|
|
|---|-------|---------|
|
||||||
| 92 | `mac-optimizer` | macOS system health audit & optimization (Claude Code only) |
|
| 92 | `mac-optimizer` | macOS system health audit & optimization (Claude Code only) |
|
||||||
|
| 93 | `tui-designer` | TUI wizard interface design (Norton Commander / Gopher style, Rich) |
|
||||||
|
|
||||||
### Reference Curator & Multi-Agent (90-91)
|
### Reference Curator & Multi-Agent (90-91)
|
||||||
|
|
||||||
@@ -184,6 +184,7 @@ our-claude-skills/
|
|||||||
│ ├── 90-reference-curator/
|
│ ├── 90-reference-curator/
|
||||||
│ ├── 91-multi-agent-guide/
|
│ ├── 91-multi-agent-guide/
|
||||||
│ ├── 92-mac-optimizer/
|
│ ├── 92-mac-optimizer/
|
||||||
|
│ ├── 93-tui-designer/
|
||||||
│ └── 99_archive/
|
│ └── 99_archive/
|
||||||
│
|
│
|
||||||
├── example-skills/ # Anthropic reference examples
|
├── example-skills/ # Anthropic reference examples
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# JHR — josunhotel.com Gotchas
|
||||||
|
|
||||||
|
Client: **JHR** (Josun Hotels & Resorts / 조선호텔앤리조트)
|
||||||
|
Domain: josunhotel.com + subdomains (gjb, gjj, jpg, grp)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Intentionally Truncated Directory Names in robots.txt
|
||||||
|
|
||||||
|
**Date discovered**: 2026-03-20
|
||||||
|
**Audit ID**: COMP-20260320-001
|
||||||
|
|
||||||
|
The following `Disallow` paths in robots.txt look like typos but are **intentional directory names** on the server:
|
||||||
|
|
||||||
|
| robots.txt path | Looks like it should be | Actual status |
|
||||||
|
|-----------------|------------------------|---------------|
|
||||||
|
| `/cnfirm` | `/confirm` | **Intentional** — real directory name |
|
||||||
|
| `/mber` | `/member` | **Intentional** — real directory name |
|
||||||
|
|
||||||
|
**Do NOT recommend renaming these** in audit reports. The server-side application uses these truncated names by design.
|
||||||
|
|
||||||
|
### Context
|
||||||
|
|
||||||
|
The josunhotel.com backend (Java/.do endpoints) uses shortened directory names for certain internal paths. This is likely a legacy naming convention from the original application architecture.
|
||||||
|
|
||||||
|
### Audit Impact
|
||||||
|
|
||||||
|
When running Technical SEO audits (Stage 1), skip the "typo in Disallow paths" finding for `/cnfirm` and `/mber`. These are valid paths that correctly block crawler access to confirmation and member-related pages.
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# JHR — lescapehotel.com Gotchas
|
||||||
|
|
||||||
|
Client: **JHR** (Josun Hotels & Resorts)
|
||||||
|
Domain: lescapehotel.com → les.josunhotel.com (migrated)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Domain Migration Complete — Monitor Redirects & Link Juice
|
||||||
|
|
||||||
|
**Date discovered**: 2025-12-14
|
||||||
|
**Updated**: 2026-03-20
|
||||||
|
**Status**: Migration COMPLETE
|
||||||
|
|
||||||
|
The L'Escape Hotel domain migration from `lescapehotel.com` to `les.josunhotel.com` has been completed.
|
||||||
|
|
||||||
|
### What to Monitor (Watchtower)
|
||||||
|
|
||||||
|
- **301 redirects**: Verify all old lescapehotel.com URLs still 301 to correct les.josunhotel.com counterparts
|
||||||
|
- **Link juice preservation**: Check that backlinks from external sites pointing to lescapehotel.com are passing authority through redirects
|
||||||
|
- **Redirect chains**: Watch for double redirects (lescapehotel.com → old intermediate → les.josunhotel.com)
|
||||||
|
- **GSC coverage**: Monitor les.josunhotel.com indexing in Google Search Console
|
||||||
|
- **Referring domains**: Track referring domain count in Ahrefs/GSC to ensure backlink equity is maintained
|
||||||
|
|
||||||
|
### Audit Checklist (Run Periodically)
|
||||||
|
|
||||||
|
1. Sample 10-20 old lescapehotel.com URLs — verify 301 status
|
||||||
|
2. Check for any 404s on les.josunhotel.com that should have redirects
|
||||||
|
3. Compare organic traffic trends pre/post migration
|
||||||
|
4. Verify old sitemap URLs are all redirecting properly
|
||||||
|
5. Check Naver Search Advisor for indexing status
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# SLA — shillahotels.com Gotchas
|
||||||
|
|
||||||
|
Client: **SLA** (Shilla Hotels & Resorts / 신라호텔)
|
||||||
|
Domain: shillahotels.com
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. www1 / www2 Are Dev/Stage Hosts, NOT Production
|
||||||
|
|
||||||
|
**Date discovered**: 2026-03-20
|
||||||
|
**Context**: SLA new integrated website under construction
|
||||||
|
|
||||||
|
The Shilla Hotels domain uses numbered subdomains for development environments:
|
||||||
|
|
||||||
|
| Subdomain | Purpose | Status |
|
||||||
|
|-----------|---------|--------|
|
||||||
|
| `www1.shillahotels.com` | Development | Active — deployed intermittently |
|
||||||
|
| `www2.shillahotels.com` | Staging | Active — deployed intermittently |
|
||||||
|
| `www.shillahotels.com` | Production (current) | Live |
|
||||||
|
| TBD (new integrated site) | Production (future) | **Target launch: end of June 2026** |
|
||||||
|
|
||||||
|
**Do NOT run technical SEO audits against www1 or www2** unless specifically instructed. These are pre-production environments and will have:
|
||||||
|
- No robots.txt
|
||||||
|
- No XML sitemap
|
||||||
|
- Incomplete meta tags
|
||||||
|
- Missing canonical/hreflang tags
|
||||||
|
|
||||||
|
These are expected states for dev/stage, not audit findings.
|
||||||
|
|
||||||
|
### When to Scan
|
||||||
|
|
||||||
|
The client will notify when www1/www2 need technical SEO element checks. Do NOT proactively audit these subdomains.
|
||||||
|
|
||||||
|
## 2. No robots.txt or Sitemap on Dev/Stage Hosts
|
||||||
|
|
||||||
|
**Date discovered**: 2026-03-20
|
||||||
|
|
||||||
|
robots.txt and sitemap.xml are intentionally not deployed to www1 and www2. This is expected for pre-production environments. Do NOT flag as issues.
|
||||||
|
|
||||||
|
Wait for client instruction before scanning technical SEO elements on these hosts.
|
||||||
Reference in New Issue
Block a user