Communitygithub.com

Varnan-Tech/opendirectory

만료된 도메인 후보를 대상 틈새시장에 대해 평가하고, 주제 관련성, 과거 활동 수준, 이력 청결도를 기준으로 점수를 매긴 후, 설명 가능한 근거와 위험 플래그가 포함된 순위 리스트를 출력합니다.

opendirectory란 무엇인가요?

이 스킬은 만료된 도메인 후보를 특정 틈새시장(niche)에 맞게 평가하여, 최적의 도메인을 선별하는 AI 기반 도구입니다. 개발자 도구, AI SaaS, 사이버보안 등 다양한 분야에 활용 가능하며, 수동으로 입력하거나 예시 데이터를 통해 도메인을 평가할 수 있습니다. 주제 적합성, 과거 활동 수준, 이력 청결도, 리다이렉트 적합성 등을 6가지 차원으로 점수화하고, 보수적인 기준으로 위험 플래그를 적용하여 신뢰할 수 있는 추천을 제공합니다. LLM API 키가 설정된 경우 LLM 기반 심층 평가가 가능하고, 그렇지 않은 경우 규칙 기반 평가가 진행됩니다. 모든 추천에는 선택 이유와 위험 요소가 함께 제공되어, 사용자가 최종 결정을 내리기 전에 충분한 정보를 얻을 수 있도록 합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Varnan-Tech/opendirectory/tree/main/skills/domain-expired-opportunity-finder

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

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

문서

만료된 도메인 기회 찾기

특정 틈새시장에 대한 만료된 도메인 후보를 평가합니다. 주제 적합성, 과거 활동 수준, 이력 청결도, 리다이렉트 적합성에 따라 점수를 매깁니다. 인간의 검토를 위해 보수적이고 설명 가능한 후보 목록을 출력합니다.


중요 규칙: 모든 추천에는 긍정적인 근거(why_selected)와 주의 근거(why_risky)가 모두 포함되어야 합니다. 설명 없이 점수만 출력하지 마십시오.

보수적 기본 원칙: 신호가 불완전하거나 모순될 경우, 신뢰 수준을 낮춥니다. 모호한 후보를 강력한 기회로 표시하지 마십시오. 데이터가 부족하면 신뢰도가 낮아지며, 절대 부풀려지지 않습니다.

남용 방지 규칙: 과거 주제가 대상 틈새시장과 일치하지 않는 경우, 관련 없는 리다이렉트, PBN 구축, 도메인 용도 변경을 절대 장려하지 마십시오. 전체 남용 방지 정책은 references/guardrails.md를 참조하세요.


단계 1: 설정 확인

다른 작업을 하기 전에 환경을 확인합니다.

curl과 python3(또는 python)이 사용 가능한지 확인합니다:

curl --version > /dev/null 2>&1 && echo "curl: 사용 가능" || echo "curl: 없음"
python3 --version 2>/dev/null || python --version 2>/dev/null || echo "python: 없음"

향상된 틈새시장 관련성 점수 매기기를 위한 선택적 LLM API 키를 확인합니다:

echo "LLM_API_KEY: ${LLM_API_KEY:+설정됨}"

curl 또는 python이 없는 경우: 중단합니다. 사용자에게 다음 메시지를 표시합니다: "이 스킬은 curl과 Python 3.10+가 필요합니다. 설치 후 다시 시도해 주세요."

LLM_API_KEY가 설정되지 않은 경우: 계속 진행합니다. 이 스킬은 규칙 기반 점수 매기기(도메인 문자열 매칭, Wayback 제목 분석, 키워드 중복)만 사용합니다. 사용자에게 다음 메시지를 알립니다: "규칙 기반 전용 모드로 실행 중입니다. 향상된 틈새시장 관련성 점수 매기기를 위해 LLM_API_KEY를 설정하세요."

LLM_API_KEY가 설정된 경우: 이 스킬은 주제 관련성 분석을 위해 LLM 기반 점수 매기기를 사용합니다. 이를 통해 틈새시장 적합성에 대한 더 깊은 맥락적 평가가 가능합니다.

QA: 점수 매기기 모드(llm-향상 또는 규칙-기반-전용)를 명시하고 도구 사용 가능 여부를 확인합니다.


단계 2: 입력 수집

사용자로부터 필수 및 선택적 입력을 수집합니다.

필수:

  • target_niche (문자열): 평가할 핵심 틈새시장. 예: "developer tools", "AI SaaS", "cybersecurity", "fintech".

선택적(제공되지 않은 경우에만 질문):

  • seed_keywords (배열): 주제 매칭을 구체화할 키워드. 제공되지 않으면, 틈새시장 이름에서 자동으로 3-5개의 키워드를 추출합니다.
  • candidate_domains (배열): 평가할 특정 도메인. 제공되지 않으면 사용자에게 요청합니다.
  • discovery_source (문자열): 후보가 유래된 출처 — manual, expireddomains-net, external-feed.
  • min_snapshots (정수): 최소 과거 스냅샷 임계값. 기본값: 10.
  • max_risk_level (문자열): low, medium, 또는 high. 위험한 후보를 얼마나 적극적으로 필터링할지 제어합니다. 기본값: medium.
  • intended_use (문자열): rebuild, redirect, 또는 either. 기본값: either.

candidate_domains가 제공되지 않은 경우: 질문: "평가할 만료된 도메인 후보 목록을 제공해 주세요. 다음 중 하나를 선택할 수 있습니다:

  1. 도메인 이름 붙여넣기 (줄당 하나 또는 쉼표로 구분)
  2. 줄당 하나의 도메인이 포함된 텍스트 파일 경로 제공
  3. 'example' 입력하여 'developer tools' 틈새시장에 대한 내장 데모 세트로 실행"

사용자가 'example'을 입력한 경우: 다음 데모 세트를 사용합니다:

devtoolsweekly.com
codeshipnews.io
stackforgeapp.com
quickseorank.net
bestcheaphosting247.com
cloudbuildpro.dev
reactwidgetlib.com
megadealsshop.xyz

모든 입력을 수집한 후, 다음을 확인합니다: "대상 틈새시장: [niche]. [N]개의 후보 도메인을 평가합니다. 점수 매기기 모드: [mode]. 의도된 용도: [use]."


단계 3: 후보 정규화

점수 매기기 전에 후보 목록을 정리하고 검증합니다.

python3 -c "
import sys, re

domains = '''CANDIDATE_LIST_HERE'''.strip().split('\n')
seen = set()
valid = []
invalid = []

for d in domains:
    d = d.strip().lower()
    # 프로토콜 및 경로 제거
    d = re.sub(r'^https?://', '', d)
    d = d.split('/')[0]
    d = d.strip('.')

    if not d:
        continue

    # 기본 TLD 검증
    if '.' not in d or len(d) < 4:
        invalid.append(d)
        continue

    # 중복 제거
    if d in seen:
        continue
    seen.add(d)
    valid.append(d)

print(f'유효한 후보: {len(valid)}')
print(f'제거됨(유효하지 않음/중복): {len(invalid)}')
for v in valid:
    print(f'  ✓ {v}')
for i in invalid:
    print(f'  ✗ {i} (잘못된 형식)')
"

CANDIDATE_LIST_HERE를 단계 2의 실제 도메인 목록으로 바꿉니다.

상태: "정규화 후 [N]개의 유효한 후보. [M]개 제거됨(유효하지 않음/중복)."

0개의 유효한 후보가 남으면 중단하고 사용자에게 다음 메시지를 표시합니다: "유효한 도메인 후보를 찾을 수 없습니다. 'example.com' 형식으로 도메인 이름을 제공해 주세요."


단계 4: 신호 수집

각 유효한 후보에 대해 무료 공개 소스에서 신호를 수집합니다. 도메인별로 순차적으로 다음 확인을 실행합니다.

4a: Wayback CDX API — 기록 스냅샷

Wayback Machine에서 모든 과거 스냅샷을 쿼리합니다. limit=100000을 사용하고 from/to 매개변수를 의도적으로 생략하여 CDX가 도메인의 전체 수명 기간 동안 스냅샷을 반환하도록 합니다. 결과는 타임스탬프 기준 오름차순(가장 오래된 것 먼저)으로 정렬되므로 first_capture 및 last_capture가 정확합니다:

curl -s "https://web.archive.org/cdx/search/cdx?url=DOMAIN_HERE&output=json&fl=timestamp,statuscode&collapse=timestamp:6&limit=100000" \
  | python3 -c "
import sys, json

try:
    data = json.load(sys.stdin)
    if len(data) <= 1:
        print(json.dumps({'domain': 'DOMAIN_HERE', 'snapshots': 0, 'first_capture': None, 'last_capture': None, 'status_codes': {}, 'years_active': 0}))
    else:
        rows = data[1:]  # 헤더 행 건너뛰기
        timestamps = [r[0] for r in rows]  # 이미 오름차순 (가장 오래된 것 먼저)
        statuses = [r[1] for r in rows]
        status_counts = {}
        for s in statuses:
            status_counts[s] = status_counts.get(s, 0) + 1
        first_year = int(timestamps[0][:4])
        last_year = int(timestamps[-1][:4])
        print(json.dumps({
            'domain': 'DOMAIN_HERE',
            'snapshots': len(rows),
            'first_capture': timestamps[0],
            'last_capture': timestamps[-1],
            'status_codes': status_counts,
            'years_active': last_year - first_year + 1
        }))
except:
    print(json.dumps({'domain': 'DOMAIN_HERE', 'snapshots': 0, 'error': 'wayback_api_failed'}))
"

속도 제한: 서비스에 예의를 갖추기 위해 Wayback API 호출 사이에 2초를 기다립니다.

4b: Wayback 콘텐츠 샘플링 — 과거 페이지 제목

스냅샷이 0개보다 많은 후보의 경우 가장 최근 스냅샷을 가져와 페이지 제목(주제 관련성 점수 매기에 사용됨)을 추출합니다:

curl -s -L "https://web.archive.org/web/LATEST_TIMESTAMP/http://DOMAIN_HERE" \
  | python3 -c "
import sys, re
html = sys.stdin.read()[:50000]
title_match = re.search(r'<title[^>]*>(.*?)</title>', html, re.IGNORECASE | re.DOTALL)
title = title_match.group(1).strip() if title_match else 'no title found'
# 메타 설명도 추출
meta_match = re.search(r'<meta[^>]*name=[\"']description[\"'][^>]*content=[\"'](.*?)[\"']', html, re.IGNORECASE)
desc = meta_match.group(1).strip() if meta_match else 'no description found'
print(f'Title: {title}')
print(f'Description: {desc}')
"

LATEST_TIMESTAMP를 단계 4a의 가장 최근 타임스탬프로 바꿉니다.

4c: RDAP 조회 — 등록 상태

OS 종속 WHOIS를 대체하는 크로스 플랫폼 HTTP 기반 RDAP 표준을 사용합니다. RDAP에서 HTTP 404는 도메인이 등록되지 않았음을 의미합니다(즉, 진정으로 사용 가능하거나 추적되지 않음). 이는 네트워크 오류와 구별됩니다. 두 경우를 모두 명시적으로 처리합니다:

python3 -c "
import urllib.request, urllib.error, json

domain = 'DOMAIN_HERE'
try:
    req = urllib.request.Request(
        f'https://rdap.org/domain/{domain}',
        headers={'User-Agent': 'Mozilla/5.0'}
    )
    with urllib.request.urlopen(req, timeout=10) as response:
        data = json.loads(response.read().decode())

    registrar = 'unknown'
    created = 'unknown'

    for entity in data.get('entities', []):
        if 'registrar' in entity.get('roles', []):
            try:
                registrar = entity.get('vcardArray', [[]])[1][0][3]
            except Exception:
                pass

    for event in data.get('events', []):
        if event.get('eventAction') == 'registration':
            created = event.get('eventDate', 'unknown')

    print(json.dumps({
        'domain': domain,
        'status': 'registered',
        'registrar': registrar,
        'created': created
    }))
except urllib.error.HTTPError as e:
    if e.code == 404:
        # 도메인에 RDAP 객체가 없음 — 등록되지 않았거나 RDAP 범위에 없음
        print(json.dumps({'domain': domain, 'status': 'unregistered_or_no_rdap_object'}))
    else:
        print(json.dumps({'domain': domain, 'error': f'rdap_http_error_{e.code}'}))
except Exception:
    print(json.dumps({'domain': domain, 'error': 'rdap_lookup_failed'}))
"

4d: 도메인 문자열 분석 — 키워드 매칭

도메인 이름과 대상 틈새시장/시드 키워드 간의 키워드 중복을 점수화합니다:

python3 -c "
import re, json

domain = 'DOMAIN_HERE'
niche = 'NICHE_HERE'
seeds = SEEDS_JSON_HERE  # 예: ['devops', 'ci/cd', 'code editor']

# 도메인에서 단어 추출
domain_base = domain.rsplit('.', 1)[0]  # TLD 제거
domain_words = re.split(r'[-_.]', domain_base.lower())

# 틈새시장 단어 확인
niche_words = niche.lower().split()
all_keywords = set(niche_words + [s.lower() for s in seeds])

matches = [w for w in domain_words if any(kw in w or w in kw for kw in all_keywords)]
match_ratio = len(matches) / max(len(domain_words), 1)

print(json.dumps({
    'domain': domain,
    'domain_words': domain_words,
    'keyword_matches': matches,
    'match_ratio': round(match_ratio, 2)
}))
"

4e: Gemini LLM 틈새시장 관련성 평가 (LLM_API_KEY가 설정된 경우)

LLM API 키가 구성된 경우, 수집된 신호와 함께 모든 후보를 배치로 처리하고 맥락적 틈새시장 관련성 평가를 요청합니다.

참고: 아래 요청/응답 형식은 Gemini API(generateContent 형식)를 사용합니다. 수정 없이 OpenAI 스타일 엔드포인트와 호환되지 않습니다. 다른 공급자를 사용하는 경우 JSON 본문과 응답 구문 분석을 조정해야 합니다.

cat > /tmp/domain-relevance-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "You are an SEO research analyst. For each expired domain candidate provided, assess its topical relevance to the specified target niche. Consider the domain name, historical page title, and meta description. For each domain, output a JSON object with: domain (string), relevance_score (integer 1-10), relevance_rationale (one sentence explaining the score), redirect_plausibility (integer 1-10), redirect_rationale (one sentence). Output only a JSON array. No commentary before or after."
    }]
  },
  "contents": [{
    "parts": [{
      "text": "DOMAIN_SIGNALS_AND_NICHE_CONTEXT_HERE"
    }]
  }],
  "generationConfig": {
    "temperature": 0.2,
    "maxOutputTokens": 2048
  }
}
ENDJSON

DOMAIN_SIGNALS_AND_NICHE_CONTEXT_HERE를 다음으로 바꿉니다:

  • 대상 틈새시장 및 시드 키워드
  • 각 후보에 대해: 도메인 이름, 과거 제목, 설명, 키워드 매칭 데이터

요청을 Gemini API로 보냅니다:

curl -s -X POST \
  "${LLM_API_ENDPOINT:-https://generativelanguage.googleapis.com/v1beta}/models/${LLM_MODEL:-gemini-2.0-flash}:generateContent?key=$LLM_API_KEY" \
  -H "Content-Type: application/json" \
  -d @/tmp/domain-relevance-request.json \
  | python3 -c "
import sys, json
try:
    d = json.load(sys.stdin)
    text = d['candidates'][0]['content']['parts'][0]['text']
    print(text)
except (KeyError, IndexError, json.JSONDecodeError) as e:
    print(json.dumps({'error': 'llm_response_parse_failed', 'detail': str(e)}))
"

LLM 호출 또는 응답 구문 분석에 실패하면 오류를 기록하고 규칙 기반 점수 매기기만으로 계속 진행합니다. 워크플로를 중단하지 마십시오.

모든 신호 수집 후 상태 표시: "[N]개의 후보에 대한 신호 수집 완료. [M]개의 Wayback 히트, [K]개의 RDAP 조회 성공."


단계 5: 점수 매기기 및 분류

전체 점수 매기기 프레임워크는 references/scoring-model.md를 참조하세요.

각 후보에 대해 6가지 차원에 걸쳐 점수를 계산합니다:

  1. 주제 관련성 (0–30): 도메인 키워드 매칭 비율, 과거 제목/설명 분석, LLM 관련성 점수(사용 가능한 경우)를 결합합니다. LLM 없음: 키워드 매칭 비율 × 15 + 제목 키워드 중복 × 15를 사용합니다. LLM 있음: LLM relevance_score × 3을 사용합니다.

  2. 과거 활동 수준 (0–25): Wayback 스냅샷 다양성 및 빈도를 기반으로 합니다. 여러 해에 걸쳐 일관되게 캡처된 더 많은 스냅샷은 지속적인 활동과 추론된 합법성을 나타냅니다.

  3. 과거 콘텐츠 품질 (0–15): 과거 페이지 제목 및 메타 설명 분석에서 파생되며, 자연스러운 표현 대 키워드 채우기를 확인합니다. LLM 없음: 정확한 일치 밀도에 따라 조정된 기본 점수 8/15.

  4. 이력 청결도 (0–15): Wayback 스냅샷 수, 활성 연도, 상태 코드 일관성 및 파킹 페이지 표시기 부재를 기반으로 합니다.

  5. 리다이렉트 적합성 (0–10): 과거 콘텐츠와 대상 틈새시장 간의 주제 연속성을 기반으로 합니다. 사용 가능한 경우 LLM redirect_plausibility 점수를 사용하고, 그렇지 않으면 키워드 중복 비율을 사용합니다.

  6. 신호 완전성 (0–5): 사용 가능한 데이터를 반환한 데이터 소스(Wayback, RDAP, 도메인 분석, LLM(구성된 경우))의 수를 계산합니다.

계산:

  • opportunity_score = 모든 차원 점수의 합계 (0–100)
  • confidence = 강력한 데이터가 있는 차원의 수를 기반으로 함 (scoring-model.md 참조)
  • recommended_action = 점수 + 신뢰도 + 위험 플래그를 기반으로 함 (단계 6 참조)

단계 6: 위험 플래그 지정 및 필터링

전체 플래그 정의는 references/risk-flags.md를 참조하세요.

각 후보에 위험 플래그를 적용합니다:

확인 사항적용된 플래그
과거 주제 중복 < 30%, 대상 틈새시장과 일치하지 않음topic_mismatch
Wayback 스냅샷 없음 또는 2개 미만no_history
등록 상태 'unregistered_or_no_rdap_object'likely_dropped
404/5xx 오류가 스냅샷의 50% 이상error_history
키워드 매칭 비율 = 0, 일치하는 단어 없음keyword_mismatch

점수에 따른 권장 조치:

opportunity_scoreconfidencerecommended_action
≥ 70높음 또는 중간strong_opportunity
50–69높음moderate_opportunity
50–69중간 또는 낮음cautious_opportunity
< 50모든 신뢰도weak_opportunity
모든 점수낮음, 위험 플래그 > 1high_risk

단계 7: 출력 생성

각 후보에 대해 JSON 객체를 생성하고 모든 후보를 순위가 매겨진 배열로 결합합니다.

[
  {
    "domain": "example.com",
    "opportunity_score": 78,
    "confidence": "high",
    "recommended_action": "strong_opportunity",
    "why_selected": "9년간의 일관된 Wayback 스냅샷, 높은 주제 관련성 (점수 27/30), 깨끗한 이력",
    "why_risky": "도메인이 2023년에 만료됨, 파킹 상태 확인 필요",
    "risk_flags": [],
    "dimension_scores": {
      "topical_relevance": 27,
      "historical_activity": 22,
      "content_quality": 12,
      "history_cleanliness": 11,
      "redirect_suitability": 4,
      "signal_completeness": 2
    }
  },
  ...
]

출력은 opportunity_score 내림차순으로 정렬됩니다.

사용자에게 표시:

  • 순위 목록의 상위 5개 후보에 대해: 도메인, 점수, 신뢰도, 권장 조치, why_selected, why_risky, 위험 플래그 요약을 표시합니다.
  • 나머지 후보에 대해: 간결한 테이블 형식으로 표시합니다.
  • 점수 매기기 모드와 평가된 총 후보 수를 알립니다.
  • 신호가 불완전한 경우(예: 일부 후보에서 Wayback 오류) 후보별 주의 사항을 포함합니다.

오류 처리 참고 사항

단계오류 시나리오핸들러 동작
1curl/Python 없음중단, 사용자에게 알림
3유효한 후보 없음중단, 사용자에게 알림
4aWayback API 시간 초과/실패단일 후보 건너뛰기, 오류 기록, 계속 진행
4bWayback 스냅샷 없음건너뛰기, 신호 불완전성 기록
4cRDAP 시간 초과/실패건너뛰기, 신호 불완전성 기록
4eLLM 호출 실패로그, 규칙 기반 점수 매기기로 대체
모든 단계JSON 구문 분석 오류오류 기록, 가능한 경우 우아하게 복구

오류가 발생해도 가차 없이 진행하십시오. 단일 후보에 대한 부분 데이터로도 작업을 완료하십시오.

Individual skills in this repo

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

Varnan-Tech/opendirectory

Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.

Varnan-Tech/opendirectory

World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.

Varnan-Tech/opendirectory

Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.

Varnan-Tech/opendirectory

Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.

Varnan-Tech/opendirectory

Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.

Varnan-Tech/opendirectory

Give it your product URL or description. It finds your top 5 competitors, runs three-track PR research across all of them (editorial, podcasts, communities), identifies which channels appear most frequently, looks up the journalist or host for each, and returns a tiered outreach list with story angles and ready-to-send cold pitch drafts tailored to your product. Use when asked to find PR opportunities, discover where competitors got featured, build a media outreach list, find which journalists cover my space, or get pitch templates for press coverage.

Varnan-Tech/opendirectory

Generate high-converting, deep-dive growth case studies in MDX format. Use this skill when asked to write a case study or blog post about a company's growth, tech stack, or product-led strategy. It handles the full pipeline (researching the company via Tavily, generating a 16:9 cover image, quality checking the draft, uploading assets to cloud storage, and pushing directly to the target repository).

Varnan-Tech/opendirectory

Scans your project for outdated npm, pip, Cargo, Go, or Ruby packages. Runs a CVE security audit. Fetches changelogs, summarizes breaking changes with Gemini, and opens one PR per risk group (patch, minor, major). Includes Diagnosis Mode for install conflicts. Use when asked to update dependencies, check for outdated packages, open dependency PRs, scan for package updates, audit for CVEs, or flag breaking changes in upgrades. Trigger when a user says "check for outdated packages", "update my dependencies", "open PRs for dependency updates", "scan for CVEs", or "which packages need upgrading".

Varnan-Tech/opendirectory

Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture. Uses graphify to build a knowledge graph first, then writes accurate docs from it. Use when asked to write docs, generate a README, document an API, update stale docs, create an API reference from code, add an architecture section, or document a project in any language. Trigger when a user says their docs are missing, outdated, or wants to document their codebase without writing it manually.

Varnan-Tech/opendirectory

Brutally honest developer-experience audit for a GitHub repo. Scores 10 DX dimensions (time-to-first-success, README clarity, visual proof, install, quick-start, docs, examples, community, trust, marketing), writes a shareable roast in the requested tone (brutal/honest/kind), produces a prioritized action plan ranked by impact × effort, and sketches an ideal README. Trigger when user says "roast my repo", "audit my README", "dx audit", "developer experience review", "score my GitHub project", "before launch checklist", or "make my repo shareable".

Varnan-Tech/opendirectory

Drafts and designs a complete HTML email newsletter from a topic or content brief. Outputs paste-ready HTML for Loops, Mailchimp, Beehiiv, Resend, or any standard email platform. Includes subject line options and plain-text fallback. Trigger when a user says "write a newsletter", "draft an email newsletter", "create an HTML email", "design an email for my subscribers", or "write a newsletter about [topic]".

Varnan-Tech/opendirectory

Takes a GitHub PR URL or the current branch and writes a plain-English explanation of what it does and why, then posts it as a PR comment. Use when asked to explain a PR, summarize a pull request, write a plain-English description of a PR, add a summary comment to a PR, or understand what a PR changes. Trigger when a user says "explain this PR", "summarize this pull request", "what does this PR do", "add a comment explaining the PR", or shares a GitHub PR URL and asks what it does.

Varnan-Tech/opendirectory

Audit how often LLMs recommend your brand vs competitors and generate a GEO action plan.

Varnan-Tech/opendirectory

Takes a competitor's public GitHub repo URL, fetches their open issues via the GitHub REST API, filters noise locally, clusters issues into 6 demand categories, computes a demand score per issue and per cluster, and outputs a ranked demand gap report with a GTM messaging brief. Use when asked to scan a competitor's GitHub issues, find what their users are begging for, turn GitHub complaints into product positioning, identify competitor feature gaps, or generate messaging from real user demand. Trigger when a user says "scan competitor issues", "what are users asking for on X repo", "find demand gaps in Y", "turn GitHub issues into messaging", or "what should I build based on competitor complaints".

Varnan-Tech/opendirectory

Find recurring confusion in your repo's GitHub Discussions, rank it by urgency, and draft the actual docs fixes and content angles — with verbatim community quotes and source links as evidence.

Varnan-Tech/opendirectory

SEO keyword research workflow for blog generation using Google Trends data. Use when writing blog posts, planning content calendars, or optimizing articles for search engines. Finds breakout keywords, builds content structure, and generates SEO-optimized blog outlines targeting tech and developer audiences.

Varnan-Tech/opendirectory

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Varnan-Tech/opendirectory

Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6. 1080×1080px default, 5 style presets, highlight annotations. Trigger when user says "create a chart", "visualize data", "make a bar chart", "line graph", "pie chart", "data visualization", "chart this data", "plot", "graph", or "visualize these numbers".

Varnan-Tech/opendirectory

Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF. 3–10 pages, 9 style presets, 11 page layout types. Trigger when user says "create an ebook", "design a lead magnet", "make a PDF guide", "build a gated content piece", "write a B2B ebook", "design a white paper", "create a nurture asset", or "make a PDF report".

Varnan-Tech/opendirectory

Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

관련 스킬