무료 프롬프트
FREE
스킬
콘텐츠 메이커 스킬 (contentsmaker) — 게시글과 짧은 글 초안
이온디
2026.07.17
0
0
평점
0.0
리뷰 0개
사용 방법
본문을 복사해 AI 도구에서 실행하세요
-
STEP 1
아래 본문에서 역할, 목적, 입력값, 출력 형식을 확인합니다.
-
STEP 2
ChatGPT, Claude, Gemini, Codex의 대화창이나 프로젝트 지침에 붙여넣습니다.
-
STEP 3
예시 입력값을 내 업무 정보로 바꾼 뒤 실행하고 결과를 검토합니다.
contentsmaker는 반복 업무를 더 안정적으로 처리하기 위한 AI 에이전트 스킬입니다.
사용자가 일반 게시판용 글, Threads 같은 짧은 글, 또는 API로 등록할 게시글 초안을 요청할 때 사용한다. "글등록스킬", "글 등록 스킬", "게시글 등록", "글 올려줘", "이 내용을 글로 등록", "프롬프트 게시글 만들어줘"라고 말해도 이 스킬을 사용한다. 원문 메모를 읽고 게시판 성격과 독자 수준에 맞춰 제목, 본문, 요약, 태그, 톤을 정리하며 필요하면 게시글 등록용 payload와 대표이미지/스크린샷 첨부값까지 만든다.
사용 방법
Codex나 호환되는 AI 에이전트의 스킬 폴더에 아래 SKILL.md 내용을 저장한 뒤, 설명에 포함된 트리거 문장으로 호출하세요.
사용 예:
contentsmaker 스킬 사용해줘.
이 작업은 contentsmaker 기준으로 진행해줘.
연관스킬
이 스킬과 함께 쓰면 좋은 관련 스킬입니다.
원본 위치
.codex/skills/contentsmaker/SKILL.md
SKILL.md
---
name: contentsmaker
description: 사용자가 일반 게시판용 글, Threads 같은 짧은 글, 또는 API로 등록할 게시글 초안을 요청할 때 사용한다. "글등록스킬", "글 등록 스킬", "게시글 등록", "글 올려줘", "이 내용을 글로 등록", "프롬프트 게시글 만들어줘"라고 말해도 이 스킬을 사용한다. 원문 메모를 읽고 게시판 성격과 독자 수준에 맞춰 제목, 본문, 요약, 태그, 톤을 정리하며 필요하면 게시글 등록용 payload와 대표이미지/스크린샷 첨부값까지 만든다.
---
# Contents Maker
## 역할
- 원문 메모를 게시판 글 또는 짧은 스레드 글로 바꾼다.
- 일반 유저가 바로 이해할 수 있게 용어, 길이, 구조를 조절한다.
- 필요하면 게시판 타입을 판단하고, API 등록용 필드를 함께 만든다.
- 사용자가 `글등록스킬`, `글 등록 스킬`, `게시글 등록`, `글 올려줘`라고 말하면 이 스킬의 별칭으로 인식한다.
## 기본 원칙
1. 먼저 대상 형식을 정한다.
- `board_post`: 일반 게시판, 공지, 안내, 가이드, 후기, Q&A
- `thread_post`: Threads, X, 짧은 홍보성/요약형 글
2. 사용자가 형식을 지정하지 않으면 내용과 채널에 맞춰 추정한다.
3. 사실이 불명확하면 임의로 지어내지 말고 짧게 확인 질문을 한다.
4. 글은 독자가 다음 행동을 쉽게 알 수 있게 구성한다.
5. API 등록이 필요하면 글 본문과 별도로 전송용 구조를 만든다.
6. 사용자가 따로 요구하지 않아도 AI가 쓴 글처럼 보이는 표현을 줄이고, 실제 운영자가 쓴 자연스러운 게시글 톤을 우선한다.
## 작성 순서
1. 원문에서 핵심 메시지, 대상 독자, 강조점, 제약을 뽑는다.
2. 게시판/스레드에 맞는 길이와 톤을 정한다.
3. 제목, 본문, 요약, CTA, 태그를 만든다.
4. 서비스/사이트 소개글이면 대표이미지가 필요한지 확인하고, 가능하면 스크린샷 또는 `og:image`를 본문 첫 이미지로 넣는다.
5. 필요하면 `api_post` 형태로 등록값을 구성한다.
6. 최종 출력은 사용자가 바로 붙여넣거나 등록할 수 있게 정리한다.
## 자연스러운 사람 글쓰기
게시판 글은 기계적으로 완벽한 보고서보다 실제 운영자가 읽고 쓰는 글처럼 보여야 한다.
- 첫 문장은 과한 선언 대신 상황이나 필요에서 시작한다.
- 모든 문단을 `첫째/둘째/마지막으로`처럼 정리하지 않는다.
- `혁신적인`, `강력한`, `완벽한`, `최적화된`, `사용자 경험을 극대화`처럼 AI가 자주 쓰는 과장어를 피한다.
- 근거 없는 칭찬, 보장형 표현, 가짜 후기 느낌의 문장을 만들지 않는다.
- 문장은 짧게 쓰되 일부 리듬은 자연스럽게 둔다. 모든 문장이 같은 길이로 끝나면 기계적으로 보인다.
- 제목은 검색성을 유지하되 낚시성·광고성 느낌을 줄인다.
- 마무리는 매번 `도움이 되길 바랍니다`로 끝내지 말고, 글의 목적에 맞는 다음 행동만 남긴다.
- 사용자가 준 말투가 있으면 그 말투를 우선하고, 운영자 공지라면 차분하고 책임 있는 톤을 사용한다.
## 모드 선택
- `board_post`
- 제목은 명확하고 검색 가능한 표현을 우선한다.
- 본문은 도입, 핵심, 세부, 마무리 순으로 정리한다.
- 소제목, 목록, 예시를 허용한다.
- 단순한 소개글은 목록을 남발하지 말고 짧은 문단 중심으로 쓴다.
- `thread_post`
- 첫 문장에 핵심을 둔다.
- 한 글에 한 메시지만 담는다.
- 문장은 짧게 유지하고 줄바꿈으로 리듬을 준다.
- 글자수 제한이 있으면 먼저 지키고, 부족하면 스레드 분할을 제안한다.
## 게시판 판단
- 공지/업데이트: 변경점, 영향, 행동 안내를 앞에 둔다.
- 가이드/설명: 초보자 기준으로 단계와 용어 설명을 넣는다.
- 커뮤니티/후기: 자연스러운 말투를 유지하고 과한 운영자 문체를 피한다.
- FAQ/Q&A: 질문과 답을 짝지어 짧고 명확하게 쓴다.
## API 출력
- 등록이 필요하면 텍스트와 별도로 아래 항목을 채운다.
- `board_type`
- `title`
- `content`
- `summary`
- `tags`
- `thumbnail_url`
- `pending_file_srls`
- `status`
- `visibility`
- 실제 API 스키마가 있으면 그 스키마를 우선한다.
- 스키마가 없으면 추정값과 확정값을 구분해서 적는다.
- API 등록 규칙과 예시는 [api-posting.md](references/api-posting.md)를 우선한다.
- 이 저장소에서는 `mid`, `category_srl`, `is_secret`, `pending_file_srls`, `extra_vars`까지 함께 고려한다.
- 외부 서비스 소개글처럼 `site_url`이 있는 글은 대표이미지 규칙과 업로드 절차를 [representative-image.md](references/representative-image.md)에서 확인한다.
## 출력 형식
기본 출력은 아래 순서를 따른다.
1. `mode`
2. `target_board`
3. `title`
4. `content`
5. `summary`
6. `tags`
7. `api_post` 또는 `등록용 payload`
## 참고 문서
- 게시판별 글 구조와 톤: [board-formats.md](references/board-formats.md)
- 글쓰기 규칙과 길이 통제: [writing-rules.md](references/writing-rules.md)
- API 등록 필드와 예시: [api-posting.md](references/api-posting.md)
- 대표이미지/스크린샷 첨부: [representative-image.md](references/representative-image.md)
참고 리소스
이 스킬이 직접 참조하는 Markdown 참고 파일입니다. 재사용할 때 같은 상대 경로로 저장하면 동작이 안정적입니다.
.codex/skills/contentsmaker/references/api-posting.md
# API Posting
## Purpose
Define how to turn source notes into a post that fits the target board and can also be sent through an API.
The skill should do two things at once:
- decide which board the content belongs to
- shape the content so general users can understand it quickly
## Core writing rule
When the user says something like:
- "이 내용을 정리해서 말해줘"
- "컨텐츠메이커 스킬로 글 써줘"
- "이걸 일반 게시판 글로 바꿔줘"
- "이걸 Threads 글로 써줘"
then produce a post that matches the board type, not just a plain summary.
## Board behavior
### board_post
Use this for regular bulletin boards.
Write the content in a way that:
- explains the main point first
- keeps the structure easy to scan
- adds detail only when it helps understanding
- uses headings, bullets, or short paragraphs when needed
### thread_post
Use this for Threads-style short posts.
Write the content in a way that:
- starts with the main point immediately
- keeps each sentence short
- trims extra explanation
- respects the character limit first
## API mapping
If the content will be registered by API, prepare a payload like this:
- `board_type`
- `board_id`
- `title`
- `content`
- `summary`
- `tags`
- `thumbnail_url`
- `status`
- `visibility`
- `format`
## Project schema
For this repository, the board write flow maps closely to these fields:
### Core document fields
- `mid`
- `title`
- `content`
- `tags`
- `category_srl`
- `is_secret`
- `pending_file_srls`
- `thumbnail_url`
- `slug`
### Document model fields
- `module_srl`
- `category_srl`
- `title`
- `content`
- `tags`
- `status`
- `password`
- `member_srl`
- `user_id`
- `user_name`
- `nick_name`
- `email_address`
- `regdate`
- `last_update`
- `extra_vars`
### Extra vars used by the write form
- `price`
- `product_id`
- `site_url`
- `market_url`
- `long_text`
- `schedule_date`
- `project_status`
- `event_color`
- `end_date`
- `version`
- `rhymix_compat`
- `license`
- `demo_url`
- `badge`
- `highlights`
- `pricing`
- `options`
### Board-specific conditions
- `status` becomes `PUBLIC`, `PENDING`, `SPAM_REPORTED`, or `SECRET` depending on write-time rules.
- `tags` are merged from the form field and `#hashtags` in the content.
- `category_srl` must belong to the target board or it is reset to `0`.
- `extra_vars` should be treated as JSON when present.
- For service introduction posts with a source URL, prepare a representative image before publishing. Use `thumbnail_url` for the uploaded path and insert it as the first `<img>` in `content`; include `pending_file_srls` when the upload endpoint returns file ids.
## Output rule
Return both of these when needed:
1. human-readable post content
2. API-ready payload
Do not mix transport fields into the visible post unless the target platform requires it.
## Example payload
```json
{
"board_type": "thread_post",
"board_id": "threads",
"mid": "threads",
"title": "컨텐츠메이커 스킬 소개",
"content": "원문을 일반 유저가 이해하기 쉬운 글로 바꿔주는 규칙을 정의합니다.",
"summary": "게시판과 스레드용 글을 자동 정리하는 스킬",
"tags": ["content", "thread", "board"],
"thumbnail_url": "",
"status": "draft",
"visibility": "public",
"format": "plain_text",
"category_srl": 0,
"is_secret": "N",
"pending_file_srls": []
}
```
.codex/skills/contentsmaker/references/representative-image.md
# Representative Image
Use this when a board post introduces an external service, website, app, AI tool, product, or portfolio item and the source has a public URL.
For advanced portfolio thumbnails with scroll reveal capture, responsive screenshots, or desktop/tablet/mobile mockup composition, use `$portfolio-thumbnail-maker`.
## Default rule
- Create or fetch a representative image before publishing whenever `site_url` or a source URL is available.
- Prefer a screenshot of the landing page above a generic logo, because list cards use the first image as the thumbnail.
- Put the image at the very top of `content` before the first paragraph:
```html
<p><img src="/static/uploads/YYYY/MM/file.png" alt="서비스명 화면"></p>
```
## Existing project behavior
- The page renderer extracts the thumbnail from the first `<img>` in `content`.
- The upload table is `xe_files` through `app.models.file.RhymixFile`.
- On production Eond/Rhymix sites, prefer Rhymix-compatible `./files/attach/images/YYYY/MM/DD/file.ext` in `xe_files.uploaded_filename` and `/files/attach/images/YYYY/MM/DD/file.ext` in visible `content`.
- Do not use `/static/uploads/...` for public `eond.com` or `ai.eond.com` content unless the deployment is verified to serve that route.
- Valid uploaded image records should use:
- `upload_target_srl`: document srl after the post exists, or `0` while pending
- `module_srl`: target board module srl
- `member_srl`: author member srl
- `uploaded_filename`: `./files/attach/images/YYYY/MM/DD/<filename>.<ext>` for Rhymix-compatible production uploads, or `/static/uploads/YYYY/MM/<uuid>.<ext>` only for verified eondcms local uploads
- `mime_type`: `image/png`, `image/jpeg`, `image/webp`, or similar
- `isvalid`: `Y`
## Preferred upload flow
1. If using the web write flow, call the existing authenticated endpoint:
- `POST /upload/from-url`
- Body includes the target URL plus viewport settings.
- It screenshots with Playwright and falls back to `og:image`.
2. Insert the returned `url` as the first image in `content`.
3. Include the returned pending file id in `pending_file_srls` when available.
4. Publish the post, then verify the detail page and board list show the thumbnail.
## Direct DB posting flow
When posting directly with repository scripts:
1. Capture a screenshot with Playwright at a desktop viewport such as `1365x768`; if capture fails, fetch `og:image`.
2. For production Eond/Rhymix boards, save/upload the image under `public_html/files/attach/images/YYYY/MM/DD/` and use a Rhymix-compatible DB path. Use `static/uploads/YYYY/MM/` only when that route is known to be publicly served.
3. Create the document.
4. Create or update a `RhymixFile` record linked to the document:
- `upload_target_srl=document_srl`
- `module_srl=target module_srl`
- `member_srl=author member_srl`
- `uploaded_filename=./files/attach/images/YYYY/MM/DD/file.ext` for production Rhymix uploads
5. Prefix `content` with `<img src="/files/attach/images/YYYY/MM/DD/file.ext" ...>` and set `uploaded_count` to at least `1` if the document model field is available.
6. Verify:
- detail URL returns `200`
- board list returns `200`
- page HTML contains the title and first `<img src="/files/attach/...">`
- the public image URL returns `200` and an `image/*` content type
## Fallbacks
- If the website blocks screenshot capture, use `og:image`.
- If neither screenshot nor `og:image` works, publish the post only after noting that no representative image was available.
- Do not use unrelated stock images for factual service introductions.
.codex/skills/contentsmaker/references/board-formats.md
# Board Formats
## 1. board_post
Use for normal bulletin boards, notices, guides, announcements, FAQs, reviews, and community posts.
Recommended structure:
1. Title
2. Short summary
3. Main body with headings
4. Next action or closing line
Tone:
- clear
- practical
- friendly but not verbose
## 2. thread_post
Use for Threads-style short posts and other tight character-limited formats.
Recommended structure:
1. Hook sentence
2. Core point
3. One supporting detail
4. Optional follow-up or CTA
Tone:
- short
- direct
- single-message focus
## 3. Board selection hints
- Use `board_post` when the user needs explanation, steps, or a reusable notice.
- Use `thread_post` when the user needs speed, reach, or a short platform-native post.
- If the user says "스레드", "짧게", "글자수 제한", or gives a platform-specific limit, prefer `thread_post`.
- If the user says "공지", "가이드", "정리해서", or "게시판에 올릴 글", prefer `board_post`.
.codex/skills/contentsmaker/references/writing-rules.md
# Writing Rules
## Required checks
- Keep the message understandable for a general user.
- Remove jargon unless it is needed.
- Put the most important point first.
- Do not invent facts that were not provided.
- If the source is too thin, ask for the missing facts before writing.
## Rewrite rules
- Convert notes into a clean hierarchy.
- Prefer short sentences.
- Split long paragraphs into smaller blocks.
- Turn vague claims into concrete user-facing benefits.
- Keep the tone aligned with the target board.
## Human-like posting rules
- Do not over-polish every sentence. Keep a natural operator or creator voice.
- Avoid generic AI phrases such as `혁신적인`, `강력한`, `완벽한`, `최적화된`, `새로운 차원의`, `사용자 경험을 극대화`.
- Avoid repeated paragraph formulas: `이 글에서는`, `첫째`, `둘째`, `마지막으로`, `결론적으로`.
- Use bullets only when they make scanning easier. A normal post can use short paragraphs instead.
- Do not invent emotional praise, fake confidence, fake reviews, awards, or performance numbers.
- Keep one or two slightly conversational transitions when appropriate, especially for community posts.
- If the user gives rough wording, preserve useful phrases instead of replacing everything with corporate copy.
- End with the real next action, not a generic closing sentence.
## Length control
- For `board_post`, expand only when the extra detail helps comprehension.
- For `thread_post`, reduce to one idea per sentence when possible.
- If the character budget is tight, trim examples before trimming the main point.
## Output hygiene
- Use the user's terminology when it is clear.
- Normalize repeated points into one statement.
- Preserve quoted names, URLs, and product terms exactly when they matter.
- Before finalizing, remove phrases that make the text read like an AI-generated marketing summary.
리뷰
별점과 함께 남기는 사용 후기
아직 리뷰가 없습니다
리뷰를 작성하려면 로그인하세요.
첫 리뷰를 남겨보세요.