본문으로 건너뛰기

Abilities 참조

Abilities는 Gratis AI Agent가 사용자의 WordPress 설치에서 호출할 수 있는 원자적 작업입니다. 각 ability는 JSON 스키마를 노출하는 등록된 PHP 클래스입니다. agent는 런타임에 이 스키마를 읽어 어떤 매개변수가 필요한지, ability가 무엇을 반환하는지 이해합니다.

이 페이지는 Gratis AI Agent v1.9.0에 포함되어 제공되는 모든 abilities를 문서화합니다.


사용자 정의 글 유형

이 abilities는 agent를 통해 등록된 사용자 정의 글 유형(CPT)을 관리합니다. 등록 정보는 WordPress 옵션 테이블에 유지되므로 plugin 비활성화 및 재활성화 후에도 유지됩니다.

register_post_type

새 사용자 정의 글 유형을 등록합니다.

매개변수

ParameterTypeRequiredDescription
slugstringYes글 유형 키(최대 20자, 대문자 없음, 공백 없음)
singular_labelstringYes사람이 읽을 수 있는 단수 이름, 예: Portfolio Item
plural_labelstringYes사람이 읽을 수 있는 복수 이름, 예: Portfolio Items
publicbooleanNo글 유형을 공개적으로 접근할 수 있는지 여부. 기본값 true
supportsarrayNo지원할 기능: title, editor, thumbnail, excerpt, comments, revisions, custom-fields. 기본값 ["title","editor"]
has_archivebooleanNo글 유형 아카이브 페이지를 활성화할지 여부. 기본값 false
menu_iconstringNo관리자 메뉴 아이콘용 Dashicons 클래스 또는 URL. 기본값 "dashicons-admin-post"
rewrite_slugstringNo글 유형의 URL slug. 기본값은 slug

예시

{
"slug": "portfolio",
"singular_label": "Portfolio Item",
"plural_label": "Portfolio Items",
"public": true,
"supports": ["title", "editor", "thumbnail"],
"has_archive": true,
"menu_icon": "dashicons-portfolio"
}

반환값 { "success": true, "slug": "portfolio" }


list_post_types

agent가 등록한 모든 사용자 정의 글 유형을 반환합니다.

매개변수 — 없음

반환값

{
"post_types": [
{
"slug": "portfolio",
"singular_label": "Portfolio Item",
"plural_label": "Portfolio Items",
"public": true
}
]
}

delete_post_type

agent가 이전에 등록한 사용자 정의 글 유형의 등록을 해제합니다. 해당 유형의 기존 글은 database에 남아 있지만 더 이상 글 유형을 통해 접근할 수 없습니다.

매개변수

ParameterTypeRequiredDescription
slugstringYes제거할 글 유형 키

반환값 { "success": true, "slug": "portfolio" }


사용자 정의 분류

이 abilities는 사용자 정의 분류를 관리합니다. CPT와 마찬가지로 분류 등록 정보도 유지됩니다.

register_taxonomy

새 사용자 정의 분류를 등록합니다.

매개변수

ParameterTypeRequiredDescription
slugstringYes분류 키(최대 32자)
singular_labelstringYes사람이 읽을 수 있는 단수 이름, 예: Project Category
plural_labelstringYes사람이 읽을 수 있는 복수 이름, 예: Project Categories
post_typesarrayYes이 분류가 연결되어야 하는 글 유형 slug
hierarchicalbooleanNo카테고리 스타일이면 true, 태그 스타일이면 false. 기본값 true
publicbooleanNo용어를 공개적으로 접근할 수 있는지 여부. 기본값 true
rewrite_slugstringNo분류의 URL slug. 기본값은 slug

예시

{
"slug": "project-category",
"singular_label": "Project Category",
"plural_label": "Project Categories",
"post_types": ["portfolio"],
"hierarchical": true
}

반환값 { "success": true, "slug": "project-category" }


list_taxonomies

agent가 등록한 모든 사용자 정의 분류를 반환합니다.

매개변수 — 없음

반환값

{
"taxonomies": [
{
"slug": "project-category",
"singular_label": "Project Category",
"post_types": ["portfolio"],
"hierarchical": true
}
]
}

delete_taxonomy

agent가 이전에 등록한 사용자 정의 분류의 등록을 해제합니다.

매개변수

ParameterTypeRequiredDescription
slugstringYes제거할 분류 키

반환값 { "success": true, "slug": "project-category" }


디자인 시스템

디자인 시스템 abilities는 사용자 정의 CSS부터 block 패턴과 site 로고까지 WordPress site의 시각적 표현을 수정합니다.

inject_custom_css

wp_add_inline_style을 통해 site의 <head>에 CSS를 추가합니다. CSS는 gratis_ai_agent_custom_css 옵션에 저장되며 ability가 재설정될 때 깔끔하게 대기열에서 제거됩니다.

매개변수

ParameterTypeRequiredDescription
cssstringYes삽입할 유효한 CSS
labelstringNo이 CSS 블록의 사람이 읽을 수 있는 label로, debug logs에서 사용됩니다. 기본값 "agent-injected"
replacebooleanNotrue이면 이전에 삽입된 모든 CSS를 대체합니다. 기본값 false(추가)

예시

{
"css": ":root { --primary: #1a1a2e; --accent: #e94560; } body { font-family: 'Inter', sans-serif; }",
"label": "brand-colours",
"replace": false
}

반환값 { "success": true, "bytes": 96 }


add_block_pattern

WordPress 패턴 라이브러리에 재사용 가능한 block 패턴을 등록합니다.

매개변수

ParameterTypeRequiredDescription
slugstringYes패턴 식별자, 예: gratis/hero-dark
titlestringYes편집기에 표시되는 사람이 읽을 수 있는 패턴 이름
contentstringYes패턴용 직렬화된 block 마크업(HTML)
categoriesarrayNo패턴 카테고리 slug, 예: ["featured", "hero"]
descriptionstringNo패턴 선택기에 표시되는 짧은 설명
keywordsarrayNo검색 키워드

반환값 { "success": true, "slug": "gratis/hero-dark" }


list_block_patterns

agent가 등록한 모든 block 패턴을 나열합니다.

매개변수 — 없음

반환값

{
"patterns": [
{
"slug": "gratis/hero-dark",
"title": "Dark Hero",
"categories": ["hero"]
}
]
}

WordPress 사이트 로고를 지정된 첨부 파일 ID 또는 원격 이미지 URL로 설정합니다. URL이 제공되면 이미지를 다운로드하여 미디어 라이브러리로 가져옵니다.

매개변수

매개변수유형필수설명
attachment_idinteger아니요기존 미디어 라이브러리 첨부 파일의 ID
urlstring아니요가져와서 로고로 설정할 원격 이미지 URL

attachment_id 또는 url 중 하나를 제공해야 합니다.

반환값 { "success": true, "attachment_id": 42 }


apply_theme_json_preset

이름이 지정된 색상/타이포그래피 프리셋을 활성 테마의 theme.json(또는 global-styles)에 적용합니다. 프리셋은 Gratis AI Agent 팀에서 유지 관리하는 엄선된 번들입니다.

매개변수

매개변수유형필수설명
presetstring프리셋 이름, 예: minimal-dark, warm-editorial, corporate-blue
mergeboolean아니요true이면 기존 값을 교체하지 않고 병합합니다. 기본값은 false입니다

사용 가능한 프리셋

프리셋설명
minimal-dark거의 검은 배경, 흰색 텍스트, 단일 강조 색상
warm-editorial따뜻한 미색 배경, 세리프 제목, 흙빛 강조 색상
corporate-blue전문적인 타이포그래피가 적용된 네이비와 흰색 팔레트
vibrant-startup밝은 그라데이션, 둥근 모서리, 현대적인 산세리프 글꼴
classic-blog중립적인 회색, 편안한 줄 높이, 전통적인 레이아웃 간격

반환값 { "success": true, "preset": "minimal-dark" }


전역 스타일

전역 스타일 기능은 WordPress 전역 스타일 API를 통해 theme.json 값을 읽고 쓰며, 사이트 전체의 모든 블록과 템플릿에 영향을 줍니다.

get_global_styles

현재 전역 스타일 구성을 반환합니다.

매개변수

매개변수유형필수설명
pathstring아니요특정 값에 대한 JSON 포인터, 예: /color/palette 또는 /typography/fontSizes. 생략하면 전체 객체를 반환합니다.

반환값 전체 전역 스타일 객체 또는 path의 값입니다.


set_global_styles

전역 스타일 구성에서 하나 이상의 값을 업데이트합니다.

매개변수

매개변수유형필수설명
pathstring설정할 값에 대한 JSON 포인터, 예: /color/palette
valueany새 값

예시 — 팔레트에 색상 추가

{
"path": "/color/palette",
"value": [
{ "slug": "primary", "color": "#1a1a2e", "name": "Primary" },
{ "slug": "accent", "color": "#e94560", "name": "Accent" }
]
}

반환값 { "success": true, "path": "/color/palette" }


reset_global_styles

에이전트가 적용한 모든 전역 스타일 변경 사항을 초기화하여 테마 기본값을 복원합니다.

매개변수 — 없음

반환값 { "success": true }


내비게이션 메뉴 기능은 WordPress 내비게이션 메뉴와 해당 항목을 생성하고 관리합니다.

create_menu

새 WordPress 내비게이션 메뉴를 생성합니다.

매개변수

매개변수유형필수설명
namestring메뉴 이름, 예: Primary Navigation
locationstring아니요이 메뉴를 할당할 테마 위치, 예: primary

반환값 { "success": true, "menu_id": 7 }


update_menu

메뉴 이름을 변경하거나 테마 위치에 다시 할당합니다.

매개변수

매개변수유형필수설명
menu_idinteger업데이트할 메뉴의 ID
namestring아니요새 메뉴 이름
locationstring아니요할당하거나 다시 할당할 테마 위치

반환값 { "success": true, "menu_id": 7 }


add_menu_item

기존 내비게이션 메뉴에 항목을 추가합니다.

매개변수

매개변수유형필수설명
menu_idinteger대상 메뉴의 ID
typestring항목 유형: custom, post_type 또는 taxonomy
titlestring아니요메뉴 항목의 레이블(custom 유형에는 필수)
urlstring아니요custom 항목의 URL
object_idinteger아니요post_type/taxonomy 항목의 게시물 ID 또는 용어 ID
parent_idinteger아니요이 항목을 중첩할 상위 메뉴 항목 ID
positioninteger아니요메뉴에서 0부터 시작하는 위치

반환값 { "success": true, "item_id": 12 }


remove_menu_item

내비게이션 메뉴에서 항목을 제거합니다.

매개변수

매개변수유형필수설명
item_idinteger제거할 메뉴 항목 ID

반환값 { "success": true, "item_id": 12 }


list_menus

할당된 테마 위치를 포함하여 모든 WordPress 내비게이션 메뉴를 나열합니다.

매개변수 — 없음

반환값

{
"menus": [
{
"menu_id": 7,
"name": "Primary Navigation",
"location": "primary",
"item_count": 5
}
]
}

옵션 관리

옵션 기능은 get_option / update_option을 통해 WordPress 옵션을 읽고 씁니다. 기본 제공 안전 차단 목록은 중요한 설정이 실수로 수정되는 것을 방지합니다.

get_option

WordPress 옵션을 읽습니다.

매개변수

매개변수유형필수설명
option_namestring옵션 키, 예: blogname

반환값 { "option_name": "blogname", "value": "My Site" }

option_name이 안전 차단 목록에 있으면 오류를 반환합니다.


set_option

WordPress 옵션을 씁니다.

매개변수

매개변수유형필수설명
option_namestring옵션 키
valueany새 값(배열/객체의 경우 자동으로 직렬화됨)
autoloadstring아니요"yes" 또는 "no". 기본값은 기존 autoload 설정을 유지합니다

option_name이 안전 차단 목록에 있으면 오류를 반환합니다.

반환값 { "success": true, "option_name": "blogname" }


delete_option

WordPress 옵션을 삭제합니다.

매개변수

매개변수유형필수설명
option_namestring삭제할 옵션 키

option_name이 안전 차단 목록에 있으면 오류를 반환합니다.

반환값 { "success": true, "option_name": "my_custom_option" }


list_options

패턴과 일치하는 WordPress 옵션을 나열합니다.

매개변수

매개변수유형필수설명
patternstring아니요옵션 이름을 필터링할 SQL LIKE 패턴입니다. 예: gratis_%. 생략하면 모든 옵션을 반환합니다(대규모 데이터베이스에서는 주의해서 사용).
limitinteger아니요최대 결과 수입니다. 기본값 50, 최대 500

반환값

{
"options": [
{ "option_name": "gratis_ai_agent_version", "autoload": "yes" }
],
"total": 1
}

콘텐츠 관리

콘텐츠 관리 기능은 WordPress 게시물과 페이지를 만들고 편집합니다. 게시물 ID가 반환되므로 다중 기능 계획의 후속 단계에서 생성된 콘텐츠를 참조할 수 있습니다.

create_post

새 WordPress 게시물, 페이지 또는 사용자 지정 게시물 유형 항목을 만듭니다.

매개변수

매개변수유형필수설명
titlestring게시물 제목
contentstring아니요게시물 본문 — 일반 텍스트, HTML 또는 직렬화된 블록 마크업을 허용합니다
statusstring아니요draft, publish, pending, private. 기본값 draft
post_typestring아니요게시물 유형 슬러그입니다. 예: post, page 또는 등록된 모든 CPT. 기본값 post
excerptstring아니요아카이브와 검색 결과에 표시되는 짧은 요약
categoriesarray아니요할당할 카테고리 이름 또는 ID의 배열
tagsarray아니요할당할 태그 이름 또는 ID의 배열
authorinteger아니요게시물 작성자로 설정할 WordPress 사용자 ID입니다. 기본값은 현재 사용자입니다
datestring아니요ISO 8601 형식의 게시 날짜입니다. 예: 2026-05-01T09:00:00
page_templatestring아니요이 게시물 또는 페이지에 할당할 템플릿 파일입니다. 예: page-full-width.php. post_typepage이거나 페이지 템플릿을 지원하는 CPT인 경우에만 의미가 있습니다.

예시

{
"title": "Welcome to Our New Site",
"content": "<!-- wp:paragraph --><p>Hello world!</p><!-- /wp:paragraph -->",
"status": "publish",
"post_type": "page",
"page_template": "page-full-width.php"
}

반환값 { "success": true, "post_id": 42, "permalink": "https://example.com/welcome/" }


update_post

기존 WordPress 게시물 또는 페이지를 업데이트합니다.

매개변수

매개변수유형필수설명
post_idinteger업데이트할 게시물의 ID
titlestring아니요새 게시물 제목
contentstring아니요새 게시물 본문
statusstring아니요새 상태: draft, publish, pending, private
excerptstring아니요새 요약문
categoriesarray아니요전체 카테고리 목록을 이 이름 또는 ID 배열로 바꿉니다
tagsarray아니요전체 태그 목록을 이 이름 또는 ID 배열로 바꿉니다
page_templatestring아니요이 게시물 또는 페이지에 할당할 새 템플릿 파일입니다. 예: page-full-width.php. 템플릿 할당을 제거하고 theme 기본값으로 되돌리려면 빈 문자열을 전달하세요.

예시 — 생성 후 템플릿 변경

{
"post_id": 42,
"page_template": "page-full-width.php"
}

반환값 { "success": true, "post_id": 42 }


batch_create_posts

단일 기능 호출로 여러 게시물을 만들어 site 구축 또는 대량 콘텐츠 가져오기 중 왕복을 줄입니다. 게시물은 순서대로 생성되며, 하나가 실패해도 나머지는 계속 진행되고 실패는 결과 배열에 보고됩니다.

매개변수

매개변수유형필수설명
postsarray게시물 객체의 배열이며, 각 객체는 create_post와 동일한 매개변수를 허용합니다
stop_on_errorboolean아니요true이면 첫 번째 실패 후 처리를 중지합니다. 기본값 false

예시

{
"posts": [
{
"title": "About Us",
"post_type": "page",
"status": "publish",
"page_template": "page-full-width.php"
},
{
"title": "Services",
"post_type": "page",
"status": "publish"
},
{
"title": "Contact",
"post_type": "page",
"status": "publish"
}
]
}

반환값

{
"created": 3,
"failed": 0,
"results": [
{ "success": true, "post_id": 42, "title": "About Us" },
{ "success": true, "post_id": 43, "title": "Services" },
{ "success": true, "post_id": 44, "title": "Contact" }
]
}

set_featured_image

기존 게시물 또는 페이지에 대표 이미지(게시물 썸네일)를 할당합니다. 기존 Media Library 첨부 파일 ID 또는 원격 이미지 URL을 허용합니다. URL이 제공되면 이미지가 자동으로 다운로드되어 가져와집니다.

매개변수

매개변수유형필수설명
post_idinteger업데이트할 게시물 또는 페이지의 ID
attachment_idinteger아니요기존 Media Library 첨부 파일의 ID
urlstring아니요가져와서 대표 이미지로 설정할 원격 이미지 URL
alt_textstring아니요URL에서 가져온 경우 첨부 파일에 적용할 대체 텍스트

attachment_id 또는 url 중 하나를 제공해야 합니다.

반환값 { "success": true, "post_id": 42, "attachment_id": 17 }


create_contact_form

활성 form plugin(Contact Form 7, WPForms, Fluent Forms 또는 Gravity Forms, 설치된 항목에 따라 다름)을 사용하여 문의 양식을 만듭니다. 모든 게시물 또는 페이지에 삽입할 수 있는 쇼트코드를 반환합니다.

매개변수

매개변수유형필수설명
titlestring양식 plugin 관리자에 표시되는 양식 이름
fieldsarray양식 필드의 정렬된 목록(아래 Field 객체 참조)
recipientstring아니요제출 내용을 받을 이메일 주소. 기본값은 WordPress 관리자 이메일입니다
subjectstring아니요이메일 제목 줄. Contact Form 7 사용 시 [your-name][your-subject] placeholder를 지원합니다
confirmation_messagestring아니요성공적으로 제출한 후 표시되는 메시지. 기본값: "Thank you for your message. We'll be in touch soon."

Field 객체

유형필수설명
namestring내부 필드 이름 / machine key
labelstring양식에 표시되는 사람이 읽을 수 있는 label
typestringtext, email, tel, textarea, select, checkbox, radio, file, date
requiredboolean아니요제출 전에 필드를 반드시 채워야 하는지 여부. 기본값 false
optionsarray아니요select, checkbox, 및 radio 필드의 옵션
placeholderstring아니요텍스트 유형 입력을 위한 placeholder 텍스트

예시

{
"title": "Restaurant Booking Enquiry",
"fields": [
{ "name": "your-name", "label": "Name", "type": "text", "required": true },
{ "name": "your-email", "label": "Email", "type": "email", "required": true },
{ "name": "party-size", "label": "Party size", "type": "select", "options": ["1–2", "3–5", "6–10", "10+"] },
{ "name": "your-message", "label": "Special requests", "type": "textarea", "required": false }
],
"recipient": "[email protected]",
"subject": "New booking enquiry from [your-name]"
}

반환값

{
"success": true,
"form_id": 3,
"shortcode": "[contact-form-7 id=\"3\" title=\"Restaurant Booking Enquiry\"]"
}

시각적 검토

시각적 검토 기능을 통해 agent는 라이브 페이지의 스크린샷을 캡처하고 분석할 수 있어, 브라우저 확장 프로그램 없이도 자율적인 디자인 검토, 전후 비교, 시각적 회귀 검사가 가능합니다.

capture_screenshot

서버 측 헤드리스 브라우저를 사용하여 지정된 URL의 WordPress 페이지 스크린샷을 캡처합니다. 이미지는 Media Library에 저장되고 CDN URL이 반환됩니다.

매개변수

매개변수유형필수설명
urlstring스크린샷을 찍을 페이지의 전체 URL, 예: https://example.com/about/
widthinteger아니요픽셀 단위의 뷰포트 너비. 기본값 1280
heightinteger아니요픽셀 단위의 뷰포트 높이. 기본값 800
full_pageboolean아니요뷰포트만이 아니라 스크롤 가능한 전체 페이지를 캡처합니다. 기본값 false
delay_msinteger아니요캡처 전 페이지 로드 후 대기할 밀리초로, 애니메이션 콘텐츠에 유용합니다. 기본값 500
labelstring아니요Media Library에서 첨부 파일과 함께 저장되는 사람이 읽을 수 있는 label

반환값

{
"success": true,
"attachment_id": 88,
"url": "https://example.com/wp-content/uploads/2026/04/screenshot-about.png",
"width": 1280,
"height": 800
}

compare_screenshots

두 개의 스크린샷을 받아 시각적 차이 점수와 변경된 영역을 강조 표시한 차이 이미지를 반환합니다. 디자인 변경이 예상한 결과를 냈는지 확인하거나 의도하지 않은 회귀를 감지하는 데 유용합니다.

매개변수

매개변수유형필수설명
before_urlstring"이전" 상태로 캡처할 페이지의 URL
after_urlstring"이후" 상태로 캡처할 페이지의 URL. 시간 차이를 두고 비교하는 경우 같은 URL일 수 있습니다
widthinteger아니요두 캡처 모두에 사용할 뷰포트 너비. 기본값 1280
thresholdfloat아니요픽셀 차이 임계값(0.0–1.0). 이 허용 범위 내의 픽셀은 변경되지 않은 것으로 간주됩니다. 기본값 0.1

반환값

{
"success": true,
"diff_score": 0.04,
"changed_pixels": 2340,
"total_pixels": 1024000,
"diff_attachment_id": 91,
"diff_url": "https://example.com/wp-content/uploads/2026/04/diff-about.png"
}

diff_score0.0이면 보이는 변경 사항이 없음을 의미하고, 1.0이면 모든 픽셀이 변경되었음을 의미합니다.


review_page_design

페이지의 스크린샷을 캡처하여 시각적 분석을 위해 언어 모델로 보냅니다. 레이아웃, 타이포그래피, 색상 사용, 접근성 문제를 다루는 구조화된 평가를 반환합니다.

매개변수

매개변수유형필수설명
urlstring검토할 페이지의 전체 URL
focusstring아니요강조할 검토 영역의 쉼표로 구분된 목록: layout, typography, colour, accessibility, mobile. 기본값: 모든 영역
widthinteger아니요뷰포트 너비. 기본값 1280

반환값

{
"success": true,
"screenshot_url": "https://example.com/wp-content/uploads/2026/04/review-about.png",
"assessment": {
"overall": "The page structure is clean and readable. Two accessibility issues detected.",
"layout": "Good visual hierarchy. Hero section is prominent.",
"typography": "Body text is 15px — consider increasing to 16px for readability.",
"colour": "Contrast ratio on the CTA button (#fff on #4a90e2) is 3.1:1 — below the WCAG AA threshold of 4.5:1.",
"accessibility": ["Low contrast on CTA button", "Missing alt text on hero image"],
"suggestions": ["Darken the CTA button to #1a5cb0 to pass WCAG AA", "Add descriptive alt text to the hero image"]
}
}

설치 가능한 기능

설치 가능한 기능 Registry를 사용하면 WordPress plugin으로 배포되는 추가 기능 팩으로 agent를 확장할 수 있습니다. 각 팩은 표준 기능 API를 사용하여 하나 이상의 기능을 등록합니다.

list_available_abilities

Registry에서 설치 가능한 기능 팩의 카탈로그를 반환합니다.

매개변수

매개변수유형필수설명
categorystring아니요카테고리별 필터링: ecommerce, seo, media, social, developer

반환값

{
"packs": [
{
"slug": "gratis-ai-agent-woocommerce",
"name": "WooCommerce Abilities",
"category": "ecommerce",
"version": "1.0.0",
"abilities": ["create_product", "update_pricing", "manage_inventory"],
"installed": false
}
]
}

install_ability

레지스트리에서 능력 팩을 다운로드하고 활성화합니다.

매개변수

매개변수유형필수설명
slugstring능력 팩 plugin slug

반환값 { "success": true, "slug": "gratis-ai-agent-woocommerce", "abilities_added": 3 }


recommend_plugin

설명된 사용 사례에 가장 적합한 plugin을 찾기 위해 능력 레지스트리를 쿼리하고, 선택적으로 설치합니다.

매개변수

매개변수유형필수설명
descriptionstring원하는 기능에 대한 자연어 설명
installboolean아니요true이면 추천된 plugin을 즉시 설치합니다. 기본값은 false입니다

예시

{
"description": "I need a contact form with file upload support and spam protection",
"install": false
}

반환값

{
"recommendation": {
"slug": "contact-form-7",
"name": "Contact Form 7",
"reason": "Widely adopted, supports file uploads, and integrates with Akismet for spam filtering.",
"alternatives": ["wpforms-lite", "fluent-forms"]
}
}