# CLAUDE.md

## Overview

Schema markup generator: create JSON-LD structured data from templates for various content types.

## Quick Start

```bash
pip install -r scripts/requirements.txt

# Generate Organization schema
python scripts/schema_generator.py --type organization --url https://example.com

# Generate from template
python scripts/schema_generator.py --template templates/article.json --data article_data.json
```

## Scripts

| Script | Purpose |
|--------|---------|
| `schema_generator.py` | Generate schema markup |
| `base_client.py` | Shared utilities |

## Supported Schema Types

| Type | Template | Use Case |
|------|----------|----------|
| Organization | `organization.json` | Company/brand info |
| LocalBusiness | `local_business.json` | Physical locations |
| Article | `article.json` | Blog posts, news |
| Product | `product.json` | E-commerce items |
| FAQPage | `faq.json` | FAQ sections |
| BreadcrumbList | `breadcrumb.json` | Navigation path |
| WebSite | `website.json` | Site-level info |

## Usage Examples

### Organization
```bash
python scripts/schema_generator.py --type organization \
  --name "Company Name" \
  --url "https://example.com" \
  --logo "https://example.com/logo.png"
```

### LocalBusiness
```bash
python scripts/schema_generator.py --type localbusiness \
  --name "Restaurant Name" \
  --address "123 Main St, City, State 12345" \
  --phone "+1-555-123-4567" \
  --hours "Mo-Fr 09:00-17:00"
```

### Article
```bash
python scripts/schema_generator.py --type article \
  --headline "Article Title" \
  --author "Author Name" \
  --published "2024-01-15" \
  --image "https://example.com/image.jpg"
```

### FAQPage
```bash
python scripts/schema_generator.py --type faq \
  --questions questions.json
```

## Output

Generated JSON-LD ready for insertion:

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Company Name",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png"
}
</script>
```

## Template Customization

Templates in `templates/` can be modified. Required fields are marked:

```json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "{{REQUIRED}}",
  "author": {
    "@type": "Person",
    "name": "{{REQUIRED}}"
  },
  "datePublished": "{{REQUIRED}}",
  "image": "{{RECOMMENDED}}"
}
```

## Validation

Generated schemas are validated before output:
- Syntax correctness
- Required properties present
- Schema.org vocabulary compliance

Use skill 13 (schema-validator) for additional validation.

## Dependencies

```
jsonschema>=4.21.0
requests>=2.31.0
python-dotenv>=1.0.0
```

## Notion Output (Required)

**IMPORTANT**: All audit reports MUST be saved to the OurDigital SEO Audit Log database.

### Database Configuration

| Field | Value |
|-------|-------|
| Database ID | `2c8581e5-8a1e-8035-880b-e38cefc2f3ef` |
| URL | https://www.notion.so/dintelligence/2c8581e58a1e8035880be38cefc2f3ef |

### Required Properties

| Property | Type | Description |
|----------|------|-------------|
| Issue | Title | Report title (Korean + date) |
| Site | URL | Audited website URL |
| Category | Select | Technical SEO, On-page SEO, Performance, Schema/Structured Data, Sitemap, Robots.txt, Content, Local SEO |
| Priority | Select | Critical, High, Medium, Low |
| Found Date | Date | Audit date (YYYY-MM-DD) |
| Audit ID | Rich Text | Format: [TYPE]-YYYYMMDD-NNN |

### Language Guidelines

- Report content in Korean (한국어)
- Keep technical English terms as-is (e.g., SEO Audit, Core Web Vitals, Schema Markup)
- URLs and code remain unchanged

### Example MCP Call

```bash
mcp-cli call notion/API-post-page '{"parent": {"database_id": "2c8581e5-8a1e-8035-880b-e38cefc2f3ef"}, "properties": {...}}'
```

