Receber por email
← Voltar para o catálogo

content-creator

Um pipeline de criação de conteúdo autoconfigurável que aprende a estrutura e a voz da sua marca para gerar conteúdo otimizado para SEO e GEO. Ele valida cada peça com as 92 regras do geo-lint até não haver violações.

23estrelas
Atualizado há 7 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add IJONIS/geo-lint

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/content-creator/svg)](https://www.skillteca.com.br/skills/content-creator)

Alerta por categoria

Receba novas skills de Escrita e Conteúdo toda segunda

1 email curto, só com as skills novas de Escrita e Conteúdo. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Content Creator

Self-configuring content creation pipeline. Creates SEO & GEO-optimized content matched to your project and brand voice, then validates with geo-lint until clean.

For project-specific rules (components, file naming, categories), the skill generates a local content-config skill on first use via the setup workflow.

Command Router

Parse $ARGUMENTS and route to the matching workflow:

| Argument | Workflow | |----------|----------| | setup | Auto-discover project, questionnaire, generate content-config | | create [blog\|page\|project] | Full content creation pipeline | | voice | Analyze and configure brand voice | | calendar | Plan monthly content calendar | | refresh | Re-scan project, update content-config | | _(no args)_ | If no config exists → auto-trigger setup. Otherwise show commands. |

Pre-Flight Check

Before any workflow except setup:

  1. Check if .claude/skills/content-config/SKILL.md exists in the project root.
  2. If missing → inform the user: "No project content config found. Running setup first..." Then auto-trigger the setup workflow.
  3. If found → read it into context and proceed with the requested workflow.

Workflow: setup

Three phases: auto-discover → questionnaire → generate.

Phase 1: Auto-Discovery

Run these steps silently, collecting results into a discovery report:

1. Framework Detection

  • Read package.json dependencies and devDependencies for: next, astro, @astrojs/*, gatsby, hugo, nuxt, vite, remix, @11ty/eleventy
  • Check for config files: next.config., astro.config., nuxt.config., gatsby-config., .eleventy.js
  • Record: framework name + version

2. Content Directories

  • Search for common patterns: content/, src/content/, posts/, blog/, pages/, articles/, src/pages/
  • If geo-lint.config.ts exists → read its contentPaths
  • Record: all content directories and file extensions (.md, .mdx, .astro, .html)

3. Frontmatter Schema

  • Read 5–10 representative content files across detected directories
  • Parse YAML frontmatter (lines between --- delimiters)
  • Compute the union of all field names; classify each as required (present in >80% of files) or optional
  • Record: field schema with types inferred from values

4. Categories

  • Extract unique values from category and categories frontmatter fields across all content
  • Cross-reference with geo-lint.config.ts categories array if present
  • Record: canonical category list

5. Authors

  • Extract unique author values from all content frontmatter
  • Record: author names

6. Locales & i18n

  • Detect from: frontmatter locale fields, file naming patterns (.de.mdx, .en.mdx), directory patterns (/de/, /en/)
  • Check geo-lint.config.ts i18n config if present
  • Record: locales and default locale

7. Site URL

  • Check in order: geo-lint.config.ts siteUrl → package.json homepage → framework config site/url field
  • Record: URL or "not found"

8. Image Directories

  • Search for: public/images/, static/images/, assets/images/, src/assets/
  • Record: directories found

9. Components (MDX projects only)

  • If .mdx files exist → scan for JSX component usage patterns (<ComponentName)
  • Exclude standard HTML tags
  • Record: component names found

Phase 2: Questionnaire

Present the discovery summary as a formatted table. Then use AskUserQuestion to gather:

  1. Confirm discoveries — "Here's what I found about your project: [table]. Is this correct? Any corrections?"
  2. Brand voice archetype — Options from references/brand_guidelines.md: The Expert, The Friend, The Innovator, The Guide, The Motivator. Allow primary + secondary selection.
  3. Tone attributes — Pick 3–5 from: Authoritative, Friendly, Innovative, Trustworthy, Inspiring, Educational, Witty
  4. Target audience — Free text (e.g., "B2B decision-makers in manufacturing, CTOs")
  5. Content goals — Free text (e.g., "thought leadership, lead generation, brand awareness")

Phase 3: Generation

  1. Generate .claude/skills/content-config/SKILL.md in the project root using the Content-Config Template below. Fill all [placeholders] with discovered and questionnaire data.
  1. geo-lint.config.ts — if it does not exist:
  2. Generate it with discovered siteUrl, contentPaths, categories, and geo.brandName if known
  3. Install @ijonis/geo-lint as a devDependency if not present
  1. geo-lint.config.ts — if it exists but is missing discovered data:
  2. Propose additions (new categories, new contentPaths) for user confirmation
  1. Validation test — run npx geo-lint --format=json to confirm config loads correctly
  1. Report: "Setup complete. Your content pipeline is ready. Run /content-creator create to start."

Workflow: create

Full content creation pipeline with built-in validation.

Step 1: Load Project Config

Read .claude/skills/content-config/SKILL.md for project-specific rules: content schema, brand voice, categories, components, file naming conventions, languages.

Step 2: Topic & Type

Ask the user for:

  • Topic or title for the new content piece
  • Content type — blog, page, or project (default: blog)

Step 3: Duplicate & Overlap Gate (MANDATORY)

Scan ALL existing content (titles, slugs, descriptions) before proceeding:

| Finding | Action | |---------|--------| | Exact duplicate (same topic + angle) | Stop. Suggest updating the existing post instead. | | Substantial overlap (same topic, different angle) | Stop. Propose a clearly differentiated angle. Get user approval before proceeding. | | Tangential overlap (related topic, distinct focus) | Proceed. Note the related post for cross-linking. | | No overlap | Proceed. |

Report which existing posts were checked and the gate result.

Step 4: Keyword & Search Research (MANDATORY)

Use WebSearch to research the topic. Follow the purchase-intent-first strategy:

  1. Search for trending angles, competitor coverage, and keyword variations
  2. Identify: 1 primary keyword, 3–5 secondary keywords, 10–15 LSI keywords
  3. Explicitly mine for purchase-intent keywords (e.g., +pricing/cost, +provider/agency, +comparison/vs/alternative; for German markets also +Kosten, +Anbieter, +Vergleich)
  4. Run the SERP Viability Filter for the primary keyword:
  5. Authority Check — are top results Wikipedia/Forbes (red flag) or mid-size blogs (green flag)?
  6. Intent Check — are ranking results blog posts (match) or product pages (mismatch)?
  7. Coverage Check — does the site already rank for this? (site:domain "[keyword]")
  8. Long-Tail Check — does a long-tail variant have community demand?
  9. Document: confirmed primary keyword with 2–3 sentence rationale, intent classification, differentiation angle

Step 5: Select Template

Load references/content_frameworks.md. Choose the best template for the topic:

  • How-To Guide — prerequisites → steps → troubleshooting → results
  • Listicle — introduction → items → action plan
  • Case Study — challenge → solution → results → takeaways
  • Thought Leadership — current state → trend → implications → recommendations

Step 6: Write Content

Follow the project schema from content-config:

  • Use correct frontmatter fields (all required fields populated)
  • Follow file naming conventions (locale suffixes if bilingual)
  • Apply brand voice (archetypes, tone attributes, target audience)
  • Use available MDX components where they enhance the content (if applicable)
  • SEO targets: keyword density 1–3%, proper heading hierarchy (one H1, no skipped levels), 1,500–2,500 words for blog posts
  • Add 2–3 internal links to related existing posts
  • Add 1–2 external links to authoritative sources

Step 7: Validate (MANDATORY)

Run the geo-lint validation loop:

npx geo-lint --format=json --root=.
  1. Filter violations to the newly created file
  2. Fix A
Compartilhar X LinkedIn