Community코딩 & 개발github.com

ummydev/ai-search

사용자가 AI 어시스턴트(ChatGPT, Claude, Perplexity, Gemini, Copilot, Google AI Overviews)가 제품을 정확하게 설명하고 인용할 수 있도록 사이트를 읽기 쉽고 정확하며 인용 가능하게 만들고자 할 때 사용합니다.

ai-search란 무엇인가요?

이 스킬은 AI 기반 검색 및 어시스턴트(GPT, Claude, Perplexity, Gemini, Copilot, Google AI Overviews)가 웹사이트 콘텐츠를 정확하게 인용하고 설명할 수 있도록 최적화하는 방법을 상세히 안내합니다. 핵심 원칙은 '한 번 작성하고 모든 곳에 렌더링'하여 사실(fact)이 각 페이지, llms.txt, 구조화된 데이터에서 일관성을 유지하도록 하는 것입니다. 워크플로우는 사실 시트(fact sheet) 작성, llms.txt 및 llms-full.txt 생성 및 제공, robots.txt에서 AI 크롤러 허용, 각 페이지 상단에 한 문장 정의 배치, 비교 테이블 및 FAQ 구성, 공개 가격 책정 페이지 유지, Organization 및 WebSite 구조화된 데이터를 통한 브랜드 이름 충돌 해결을 포함합니다. 또한 정기적으로 주요 AI 어시스턴트의 출력을 확인하고 잘못된 사실이 발견되면 수정하는 프로세스를 제공합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/ummydev/marketing-team-skills/tree/HEAD/skills/ai-search

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

AI 검색

"X가 무엇인가요", "X 가격" 또는 "Y를 위한 최고의 도구"에 답변하는 어시스턴트는 소수의 페이지를 가져와서 문장과 테이블 행을 발췌하고 인용합니다. 사실이 일반 텍스트로 페이지에 없으면 어시스턴트는 추측하거나, 해당 사실을 기록한 사람의 말을 인용합니다. 목표: 단 한 번의 가져오기(fetch)로 제품을 올바르게 설명할 수 있도록 만드는 것입니다.

모든 단계를 관통하는 한 가지 원칙: 각 사실을 한 번 작성하고 모든 곳에 렌더링합니다. 정의, 상태(베타, 가입 가능, 일반 출시), 가격, 지원 플랫폼 및 주요 URL은 하나의 소스 파일에 저장되며, 페이지, llms.txt 및 구조화된 데이터는 이 파일을 읽습니다. 수동으로 복사된 사실은 시간이 지나면서 서로 달라집니다.

워크플로우

1. 사실 시트(Fact Sheet) 작성

content/facts.ts(또는 JSON/YAML)를 생성하여 다음을 포함합니다: 이름과 대체 이름, 한 문장 정의, 대상 사용자, 상태, 요금제 및 가격, 플랫폼 또는 통합, 주요 페이지 URL, 공식 프로필(GitHub, X, LinkedIn, Product Hunt). 작성하기 전에 각 항목을 실제 제품과 대조 확인합니다.

2. /llms.txt 게시

llmstxt.org의 형식을 따릅니다: H1(이름), blockquote 요약, 몇 가지 일반 사실, 그 다음 H2 섹션의 링크를 - [제목](url): 설명 형식으로 작성합니다. Optional이라는 제목의 섹션은 어시스턴트가 건너뛸 수 있는 링크를 나타냅니다.

# Acme AI

> Acme AI는 소규모 재무 팀을 위해 Stripe 지급을 은행 입금과 조정하는 송장 매칭 도구입니다. 브라우저에서 실행되며 Stripe 및 Plaid에 연결됩니다.

- 대상 사용자: 수동으로 지급을 조정하는 1~50명 규모 회사의 재무 책임자.
- 상태: 가입 가능 (2026-11 이후).
- 가격 (https://acme.example/pricing): Free, $0, 월 최대 50개 송장; Pro, $29/월, 무제한 송장; Team, $79/월, 최대 10석. 가격은 USD입니다.
- 혼동 주의: Acme Anvil(관련 없는 하드웨어 회사)과 혼동하지 마십시오.

## 주요 페이지
- [가격](https://acme.example/pricing): 요금제, 제한 사항 및 포함 내용.
- [Acme AI vs Rival](https://acme.example/vs/rival): 기능 및 가격 비교, 2026-11-06 확인.

## FAQ
- Acme AI는 무료인가요? 네, 월 최대 50개 송장까지 무료입니다. Pro 및 Team은 유료입니다.

## 선택 사항
- [블로그](https://acme.example/blog): 제품 업데이트 및 가이드.

사실 시트와 페이지 메타데이터(라우트 핸들러 또는 빌드 스크립트)에서 생성하여 수동 편집 없이 새 페이지가 나타나도록 합니다. 상태 코드 200, text/plain 또는 text/markdown; charset=utf-8로 제공하며, 로그인, 리디렉션 또는 JavaScript가 필요 없어야 합니다. 확인:

curl -sI https://acme.example/llms.txt | head -5        # 200 및 텍스트 콘텐츠 유형
curl -s  https://acme.example/llms.txt | head -30

3. 선택적으로 /llms-full.txt 추가

가장 많이 인용되길 원하는 페이지(제품, 가격, 비교, 문서)의 전체 Markdown 텍스트를 각각 자체 # 제목과 Source: <url> 줄 아래에 추가합니다. 빌드 시 생성합니다. 블로그 아카이브와 오래된 내용은 제외합니다.

4. 연결

바닥글에 일반 llms.txt 링크를 배치하고, 선택적으로 <head>에 <link rel="alternate" type="text/markdown" href="/llms.txt">를 추가합니다. 아무것도 링크하지 않는 파일은 경로를 추측하는 크롤러만 찾을 수 있습니다.

5. AI 크롤러 허용 (robots.txt 및 CDN)

사용자 에이전트소유자용도
OAI-SearchBotOpenAIChatGPT 검색 인덱스
ChatGPT-UserOpenAI사용자가 문의한 페이지 가져오기
GPTBotOpenAI모델 훈련
Claude-SearchBot / Claude-User / ClaudeBotAnthropic검색 인덱스 / 사용자 가져오기 / 훈련
PerplexityBot / Perplexity-UserPerplexity검색 인덱스 / 사용자 가져오기
Google-ExtendedGoogleGemini 훈련 및 근거용 토큰; Google 검색 또는 AI Overviews에 영향을 주지 않음
BingbotMicrosoftCopilot이 답변을 가져오는 Bing 인덱스

검색 및 사용자 가져오기 에이전트는 인용 여부를 결정합니다. 훈련 에이전트는 비즈니스 선택 사항입니다. 추천을 받고자 하는 제품은 일반적으로 훈련 에이전트도 허용합니다.

User-agent: *
Allow: /
Disallow: /api/
Disallow: /app/

User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: GPTBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: ClaudeBot
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Google-Extended
Allow: /
Disallow: /api/
Disallow: /app/

Sitemap: https://acme.example/sitemap.xml

크롤러는 자신을 명명한 그룹만 따르므로, 명명된 그룹은 모든 Disallow를 반복해야 하며, 그렇지 않으면 개인 경로가 열립니다. robots.txt는 CDN을 재정의할 수 없습니다. 일부 CDN은 "AI 봇 차단" 스위치를 제공하여 robots.txt와 관계없이 403을 반환합니다. 실제 크롤러 히트를 CDN의 봇 보고서 또는 서버 로그에서 확인합니다(봇 IP를 확인하는 CDN은 스푸핑된 User-Agent를 다르게 처리할 수 있음):

curl -s -o /dev/null -w '%{http_code}\n' -A 'Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)' https://acme.example/pricing

6. 각 주요 페이지 상단에 한 문장 정의 배치

서버 렌더링 HTML의 H1 바로 아래에: "은(는) <대상>을 위해 <수행 작업>을 하는 <카테고리>입니다." 두 번째 문장으로 차별점을 설명합니다. 홈페이지, llms.txt, Organization.description, 디렉토리 목록 및 소셜 바이오에서 동일한 문장을 재사용합니다. 슬로건("금융, 재창조")은 어시스턴트가 인용할 내용을 제공하지 않습니다. 많은 AI 가져오기 도구가 JavaScript를 실행하지 않으므로 원시 HTML을 확인합니다:

curl -s https://acme.example/ | grep -c "is an invoice-matching tool"     # 1 이상이어야 함

7. 비교 테이블 및 FAQ

  • 테이블: 실제 HTML <table>, 제품당 한 행, 구매자가 묻는 열(가격, 플랫폼, 오픈 소스, 주요 제한)을 포함합니다. 날짜를 기재합니다("2026-11-06 확인"). 각 사실은 공급업체 자체 사이트, 문서, 가격 페이지 또는 GitHub API에서 가져옵니다. 공급업체가 게시하지 않은 내용에는 "게시되지 않음"이라고 작성합니다. 절대 추정하지 마십시오.
  • FAQ: 질문을 검색자의 표현으로 제목으로 사용하고, 2~4문장으로 구성된 독립적인 답변을 제공하며, 첫 문장이 질문에 답해야 합니다. 어시스턴트가 틀리게 대답하는 질문(가격, "무료인가요", "X와 함께 작동하나요", "<동명사>와 동일한가요")을 다룹니다. FAQPage 마크업은 선택 사항이며, 인용되는 것은 보이는 Q&A입니다.

8. 가격 공개

/pricing 페이지에 요금제 이름, 가격, 통화, 청구 기간 및 제한 사항을 이미지나 계산기가 아닌 텍스트로 표시합니다. llms.txt 및 SoftwareApplication.offers에도 반영합니다. 답변 및 디렉토리 목록에는 가격 또는 가격 모델(무료, 프리미엄, 유료)이 필요합니다. 없으면 추측하거나 건너뜁니다. 유료 요금제가 아직 활성화되지 않은 경우 그렇게 명시합니다("Pro: 출시 예정; 그때까지는 모든 것이 무료입니다").

{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "Acme AI",
  "applicationCategory": "BusinessApplication", "operatingSystem": "Web",
  "offers": [ { "@type": "Offer", "name": "Free", "price": "0", "priceCurrency": "USD" },
               { "@type": "Offer", "name": "Pro", "price": "29", "priceCurrency": "USD" } ] }

9. 이름 충돌 시 Organization 및 WebSite 데이터

순수 브랜드 이름을 검색했을 때 다른 제품이 먼저 나타나면, 고유한 형태("Acme AI")를 선택하여 모든 곳에서 사용하고, 변형을 하나의 개체로 연결하는 구조화된 데이터를 추가합니다:

{ "@context": "https://schema.org", "@type": "Organization",
  "name": "Acme AI", "alternateName": ["Acme", "acme.example"],
  "url": "https://acme.example/", "logo": "https://acme.example/logo.png",
  "description": "Acme AI는 소규모 재무 팀을 위해 Stripe 지급을 은행 입금과 조정하는 송장 매칭 도구입니다.",
  "sameAs": ["https://github.com/acme-ai", "https://x.com/acmeai", "https://www.linkedin.com/company/acme-ai"] }

동일한 name 및 alternateName을 가진 WebSite 개체를 추가합니다. Google은 이를 검색 결과의 사이트 이름으로 사용합니다. sameAs에는 사이트로 다시 링크되는 본인이 제어하는 프로필만 나열합니다.

10. 브랜드 접미사 일관성 유지

모든 곳에서 동일한 접미사 사용: 제목에 | Acme AI, og:site_name에 동일한 문자열, llms.txt H1, 소셜 바이오 및 GitHub 조직. 제목을 60자 이내(중국어, 일본어, 한국어의 경우 약 30자)로 유지하고, 키워드를 먼저 배치하며, 접미사는 공간이 될 때만 추가합니다.

11. 어시스턴트의 실제 발언 확인

월 1회 및 큰 변경 후에 ChatGPT(검색 켜짐), Perplexity, Claude, Gemini, Copilot에서 5~10개의 프롬프트를 수동으로 테스트합니다: "Acme AI가 무엇인가요?", "Acme AI 가격", "<대상>을 위한 최고의 <카테고리>", "<경쟁사> 대안", "Acme AI vs <경쟁사>". 일반 인터페이스에서 한 번에 하나씩 프롬프트를 실행합니다. 채팅 UI를 스크립팅하지 마십시오. docs/seo/ai-answers.md에 날짜, 어시스턴트, 프롬프트, 언급 여부, 인용된 URL 및 잘못된 사실을 기록합니다. 각 잘못된 사실 뒤에 있는 소스 페이지를 수정한 후 다시 확인합니다. 트래픽의 경우, 리퍼러별로 분석을 분류합니다: chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com.

체크리스트

  • 사실 시트가 존재함; 페이지, llms.txt 및 JSON-LD가 이 시트를 읽음
  • /llms.txt가 텍스트로 200을 반환하고, 생성되며, 바닥글에서 링크됨
  • robots.txt가 AI 에이전트를 허용하고 disallow를 반복함; CDN이 차단하지 않음
  • 각 주요 페이지가 원시 HTML에서 한 문장 정의로 시작함
  • 비교 테이블에 날짜와 출처가 표시됨; 알 수 없는 항목은 "게시되지 않음"으로 표시
  • FAQ 답변이 독립적이며 가격, "무료인가요", 이름 혼동을 다룸
  • /pricing이 공개됨; llms.txt 및 offers가 일치함
  • Organization 및 WebSite에 name, alternateName, description 및 sameAs가 포함됨
  • 모든 곳에서 하나의 브랜드 접미사 사용; 제목이 60자 이내
  • 어시스턴트 답변이 기록됨; 잘못된 사실이 페이지로 추적되어 수정됨

발생한 함정

  • 공개 가격 없음. /pricing이 404를 반환하여 llms.txt와 SoftwareApplication에 offers가 없었고, 자체 비교 테이블에서도 "게시되지 않음"이라고 써야 했습니다. 세 가지 요금제를 텍스트로 포함하고 llms.txt 및 offers에 반영한 /pricing 페이지로 해결되었습니다. 유료 티어는 "출시 예정"으로 표시했습니다.
  • 상태 정보 불일치. 가입이 시작된 후에도 9개 언어로 된 약 300개 파일(llms.txt 포함)에 여전히 "얼리 액세스"라고 표시되어 있었습니다. 이제 상태는 하나의 상수에서 가져옵니다.
  • 아무도 링크하지 않는 파일. 감사 결과 llms.txt에 링크하는 페이지가 없었고, llms-full.txt도 없었으며, 사이트맵에 lastmod도 없었습니다.
  • robots.txt 그룹 재정의. AI 크롤러에게 자체 그룹을 주면서 disallow를 반복하지 않으면 API 및 로그인 경로가 노출되었을 것입니다.
  • 브랜드 충돌. 순수 브랜드 이름을 검색했을 때 동명의 승무원 스케줄링 앱이 먼저 나타났습니다. 제목, alternateName 및 sameAs에서 " AI"로 전환했습니다.
  • 잘린 일관성 없는 제목. 49개의 영어 제목이 57~88자에 다양한 접미사가 있었습니다. 60자 이하로 줄이고, 키워드를 먼저 배치하고, 접미사는 공간이 될 때만 추가했습니다.
  • 경쟁사 페이지의 신뢰할 수 없는 가져오기. 리서치 하위 에이전트가 경쟁사 가격 페이지를 가져온 결과 변조된 것으로 보였습니다. 게시 전 실제 브라우저에서 확인했습니다. 다른 공급업체의 가격 페이지는 가져오기에 403을 반환하여 문서에서 가격을 가져와 출처를 명시했습니다.
  • 너무 일찍 "무료"라고 작성. 가격이 게시될 때까지 "게시되지 않음"이라고 작성했어야 했는데 "무료"라고 썼습니다. 어시스턴트는 페이지에 쓰여진 내용을 그대로 반복합니다.

관련 스킬

  • seo-page: 정의, 테이블 및 FAQ가 있는 페이지 템플릿.
  • competitor-pages: 어시스턴트가 많이 인용하는 비교 및 대안 페이지.
  • programmatic-pages: llms.txt 섹션 및 구조화된 데이터를 대규모로 생성.
  • multilingual-seo: 언어별 지역화된 정의, 제목 및 접미사 길이.
  • keyword-research, trend-keywords: 답변해야 할 질문과 테스트할 프롬프트.
  • index-push: 페이지가 크롤링되도록 함; Bing 인덱스가 Copilot에 피드 제공.
  • seo-daily-report: AI 추천 방문을 보고서의 별도 라인으로 표시.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

ummydev/index-push

When the user wants to get new or changed pages crawled and indexed by Google and Bing quickly, instead of waiting weeks for the sitemap to be read. Use after any deploy that adds or updates pages, and when the user says "get this indexed", "request indexing", "submit to Google", "submit URLs to Bing", "IndexNow", "ping search engines", "resubmit the sitemap", "why isn't my page indexed", "Discovered – currently not indexed", "URL is unknown to Google", "Quota Exceeded in Search Console" or "indexing queue". Covers IndexNow, Search Console URL Inspection and sitemaps, Bing Webmaster URL submission, a prioritized queue file, and diagnosing pages that stay out of the index.

ummydev/remotion-video

When the user wants to make a vertical promo video of their own software product in code with Remotion, rebuilding the product's real UI instead of screen-recording it, with a TTS voice-over, captions timed to the voice and camera moves that zoom into details. Use when the user says "Remotion", "make a product video", "faceless demo video", "UI motion video", "programmatic video", "product reel", "animate our UI", "render the video", or wants a TikTok or Reels video about their app that an agent can re-render after every change.

ummydev/short-video-formats

When the user wants to choose or plan the format of a promo short video for TikTok, Instagram Reels, YouTube Shorts or Xiaohongshu, especially for a software product, dev tool or AI agent. Covers the four formats that carry this category (talking head over a demo, phone filming the screen, faceless UI demo, talking-head open into full-screen demo), screen layout rules, hooks and endings like "comment X and I'll send it", and how to make an AI presenter. Use when the user says "what kind of video should we make", "video format", "talking head", "faceless video", "AI presenter", "AI avatar", "UGC style", "hook ideas", "how should the first frame look", "comment to get the link", or "视频形式".

ummydev/video-retro

When the user wants to review how their short videos performed on TikTok, Instagram Reels or other platforms and decide what to make next. Covers reading views, likes, comments, saves and follows without scraping, the stats log, 24-hour and 72-hour checks, comparing topics, formats and hooks, the daily report and recording what to change. Use when the user says "how did the video do", "video stats", "复盘", "retro", "which videos worked", "why did this flop", "weekly video report", "update the stats", or at the start or end of a short-video working day.

관련 스킬