4cms-articles
Смотрит уже опубликованные на витрине 4cms статьи/лендинги (article-html) — чтобы перед созданием новой страницы проверить, нет ли похожей (анти-каннибализация контента), посмотреть последние статьи, узнать рубрики/теги/мету конкретной статьи. Используй, когда пользователь говорит «есть ли уже статья про…», «не дублируем ли контент», «покажи статьи на сайте», «что за лендинг с таким id», «какие статьи в рубрике», перед написанием новой статьи/лендинга. Это чтение существующих статей 4cms (не создание — создаёт страницы PageCraft). Вызывай через тул `Skill(4cms-articles)`, не через `Read .../SKILL.md`.
How do I install this agent skill?
npx skills add https://page-craft.4partners.io --skill 4cms-articlesIs this agent skill safe to install?
No partner audit is available yet. Read the source before installing.
What does this agent skill do?
⚡ Этот скилл — для вызова через тул
Skill(4cms-articles), не черезRead .../SKILL.md.
4cms Articles
Читает уже опубликованные на витрине статьи/лендинги (article-html). Главный смысл — анти-каннибализация: перед тем как собирать новый лендинг, проверить, нет ли на сайте похожего, чтобы не плодить дубли и не растаскивать поисковый трафик.
Граница доменов. Это 4cms — «что уже опубликовано на витрине». Само создание/сборка/публикация лендинга — это PageCraft (
pagecraft-pages), он льёт страницы какarticle-html. Здесь мы только смотрим существующее.
Предусловие
- Для просмотра витрины (
articles.js) —FOURCMS_API_KEYс доступом к article-методам (Skill(4cms-env)). - Для анти-каннибализации (
find-similar.js) —PAGECRAFT_API_KEY(Skill(pagecraft-env)).
Установка зависимостей (один раз): npm install --prefix .claude/skills/4cms-articles
Если метод вернул
Доступ запрещён(код 100002) — у ключа нет прав на статьи или сработал троттлинг API при частых запросах. Скрипт сам делает один повтор с паузой; при устойчивом отказе — проверь права ключа.
Инструменты
Два скрипта под разные задачи:
1. Анти-каннибализация — find-similar.js (основной путь)
node .claude/skills/4cms-articles/scripts/find-similar.js "<тема>" [--limit 20]
Ищет похожие страницы через индексированный полнотекстовый поиск PageCraft — один запрос по всему корпусу, масштабируется на десятки тысяч страниц. Нужен PAGECRAFT_API_KEY (ключ PageCraft, не 4cms — настраивается скиллом pagecraft-env).
Почему PageCraft, а не 4cms: в 4cms нет серверного поиска по статьям, поэтому скан списка (см.
articles.js --find) не масштабируется. Страницы этой фабрики создаются в PageCraft и индексируются там. Это временное решение за абстракцией: когда в API 4cms появится нативный поиск статей, внутриfind-similar.jsподменяется одна функция (searchSimilar) — вывод и вызовы не меняются, скилл не ломается. В выводе есть полеbackend— видно, какой источник ответил.
2. Просмотр витрины — articles.js
node .claude/skills/4cms-articles/scripts/articles.js [команда] [флаги]
| Команда | Что делает |
|---|---|
| (без флагов) | Последние статьи витрины (страница 1) + pager |
--get <id> | Одна статья: мета, рубрики, теги, размеры контента (--content — html/styles/scripts/context) |
--find "<текст>" | Локальный поиск по витрине постранично — только для малых витрин; ограничен --max-pages, ставит truncated |
--variations | Доступные вариации сайта |
Общие флаги: --variation <code> (дефолт default), --page N, --per-page N, --order published|id, --sort ASC|DESC, --active true|false|all, --max-pages N.
⚠️
articles.js --findсканирует выкачанные страницы (в 4cms нет серверного поиска) и ограничен--max-pages. Приtruncated: true«не нашёл» ≠ «дубля нет». Для надёжной проверки используйfind-similar.js.
Анти-каннибализация — как пользоваться
Перед созданием новой статьи/лендинга:
- Прогони
find-similar.jsпо теме (бренд + рубрика + суть):find-similar.js "кроссовки nike". - Есть совпадения (особенно с высоким
score) → покажи пользователю найденные страницы (name, slug,external_id= id на витрине) и спроси: обновляем существующую или делаем новую? Не создавай дубль молча. - Нет совпадений → тема свободна, можно собирать новую (через PageCraft,
pagecraft-pages).
Полная картина = PageCraft (что в работе и опубликовано, через
find-similar.js) + при необходимости витрина (articles.jsдля конкретной статьи/рубрики).external_idв выдаче связывает страницу PageCraft со статьёй 4cms.
Формат
- list / find:
{ pager?, count, articles: [{ id, name, slug, publish_date, is_active, is_published, rubric_ids, tags }] }. Полный URL лендинга на витрине —/a-{slug}. - get: добавляет
meta_title,meta_description,preview_text,content_sizesи (с--content) сам html/styles/scripts/context. rubric_idsсвязывают статью с рубриками каталога — пригодится, чтобы понять, к какой категории относится существующий контент.
Если скрипт не отдаёт ожидаемое — проверь живой API
articles.js(витрина 4cms): Swagger https://api.4partners.io/ → Authorize (X-Auth-Token) →article-html/{variation}/list→ Try it out. HTTP всегда200, статус в теле;100002чаще = рейт-лимит (~600/min).find-similar.js(поиск PageCraft): Swagger PageCraft<PAGECRAFT_API_URL>/api/v1/docs(по умолчаниюhttps://page-craft.4partners.io/api/v1/docs) → методGET /api/v1/search/pages(авторизацияAuthorization: Bearer <PAGECRAFT_API_KEY>).
Что не делает
- Не создаёт, не редактирует и не публикует статьи — это PageCraft (
pagecraft-pages). - Не резолвит бренды/рубрики/товары по имени — это
4cms-resolve. - Не настраивает
.env— это4cms-env.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/page-craft.4partners.io/4cms-articles">View 4cms-articles on skillZs</a>