@opendirectory.dev/skills 0.1.70 → 0.1.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/registry.json +8 -0
- package/skills/domain-expired-opportunity-finder/.env.example +21 -0
- package/skills/domain-expired-opportunity-finder/README.md +198 -0
- package/skills/domain-expired-opportunity-finder/SKILL.md +540 -0
- package/skills/domain-expired-opportunity-finder/evals/evals.json +58 -0
- package/skills/domain-expired-opportunity-finder/references/guardrails.md +125 -0
- package/skills/domain-expired-opportunity-finder/references/output-format.md +200 -0
- package/skills/domain-expired-opportunity-finder/references/risk-flags.md +135 -0
- package/skills/domain-expired-opportunity-finder/references/scoring-model.md +198 -0
- package/skills/vid-sizzle-reel/SKILL.md +3 -3
package/package.json
CHANGED
package/registry.json
CHANGED
|
@@ -73,6 +73,14 @@
|
|
|
73
73
|
"version": "1.0.0",
|
|
74
74
|
"path": "skills/docs-from-code"
|
|
75
75
|
},
|
|
76
|
+
{
|
|
77
|
+
"name": "domain-expired-opportunity-finder",
|
|
78
|
+
"description": "Evaluates expired domain candidates against a target niche, scores them by topical relevance, historical activity level, and history cleanliness, t...",
|
|
79
|
+
"tags": [],
|
|
80
|
+
"author": "ajaycodesitbetter",
|
|
81
|
+
"version": "1.0.0",
|
|
82
|
+
"path": "skills/domain-expired-opportunity-finder"
|
|
83
|
+
},
|
|
76
84
|
{
|
|
77
85
|
"name": "email-newsletter",
|
|
78
86
|
"description": "Drafts and designs a complete HTML email newsletter from a topic or content brief.",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# domain-expired-opportunity-finder — Environment Variables
|
|
2
|
+
#
|
|
3
|
+
# OPTIONAL: LLM API key for enhanced niche-relevance scoring.
|
|
4
|
+
# Without this, the skill uses rule-based scoring only (still functional).
|
|
5
|
+
# The skill's LLM integration is designed for the Gemini API (generateContent format).
|
|
6
|
+
# It is NOT drop-in compatible with OpenAI-style endpoints without modifying
|
|
7
|
+
# the request body and response parsing in SKILL.md Step 4e.
|
|
8
|
+
#
|
|
9
|
+
# Default configuration uses Gemini API (free tier at aistudio.google.com):
|
|
10
|
+
LLM_API_KEY=your_api_key_here
|
|
11
|
+
LLM_API_ENDPOINT=https://generativelanguage.googleapis.com/v1beta
|
|
12
|
+
LLM_MODEL=gemini-2.0-flash
|
|
13
|
+
#
|
|
14
|
+
# To use a different provider, you must update the endpoint, model, AND
|
|
15
|
+
# adapt the request/response format in SKILL.md Step 4e:
|
|
16
|
+
# LLM_API_ENDPOINT=https://api.openai.com/v1
|
|
17
|
+
# LLM_MODEL=gpt-4o-mini
|
|
18
|
+
#
|
|
19
|
+
# Note: The skill works without any LLM key. Rule-based scoring uses
|
|
20
|
+
# domain string analysis and Wayback CDX data for niche-relevance
|
|
21
|
+
# assessment. LLM scoring adds deeper contextual analysis.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# domain-expired-opportunity-finder
|
|
2
|
+
|
|
3
|
+
Evaluate expired domain candidates against your niche. Get a conservative,
|
|
4
|
+
explainable shortlist with risk flags — not another noisy domain list.
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npx "@opendirectory.dev/skills" install domain-expired-opportunity-finder --target claude
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Installation in Claude Desktop App
|
|
13
|
+
|
|
14
|
+
#### Video Tutorial
|
|
15
|
+
Watch this quick video to see how it's done:
|
|
16
|
+
|
|
17
|
+
https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
18
|
+
|
|
19
|
+
#### Step 1: Download the skill from GitHub
|
|
20
|
+
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
21
|
+
2. Go to [download-directory.github.io](https://download-directory.github.io/).
|
|
22
|
+
3. Paste the URL and click **Enter** to download.
|
|
23
|
+
|
|
24
|
+
#### Step 2: Install the Skill in Claude
|
|
25
|
+
1. Open your **Claude desktop app**.
|
|
26
|
+
2. Go to the sidebar on the left side and click on the **Customize** section.
|
|
27
|
+
3. Click on the **Skills** tab, then click on the **+** (plus) icon button to create a new skill.
|
|
28
|
+
4. Choose the option to **Upload a skill**, and drag and drop the `.zip` file (or you can extract it and drop the folder, both work).
|
|
29
|
+
|
|
30
|
+
## What It Does
|
|
31
|
+
|
|
32
|
+
- Accepts a target niche and a set of expired domain candidates
|
|
33
|
+
- Collects signals from free public sources (Wayback Machine, WHOIS, domain analysis)
|
|
34
|
+
- Scores each candidate across 6 transparent dimensions: topical relevance, historical activity level, historical content quality, history cleanliness, redirect suitability, and signal completeness.
|
|
35
|
+
- This skill acts as a **Level 1 Triage** filter. It automatically pulls historical data, runs a strict 6-dimension scoring model (penalizing topic mismatches and spammy histories), and outputs a highly readable shortlist for your team.
|
|
36
|
+
- *Note: This tool uses public historical data (Wayback/RDAP) to infer domain legitimacy. It is designed to filter out junk before you spend paid Ahrefs/Majestic API credits on the remaining candidates.*
|
|
37
|
+
- Flags risks explicitly (spam content risk, topic mismatch, unclear history, possible deindex)
|
|
38
|
+
- Outputs a ranked shortlist where every domain has a `why_selected` AND `why_risky` explanation
|
|
39
|
+
- Saves structured JSON output to `docs/expired-domain-intel/YYYY-MM-DD.json`
|
|
40
|
+
|
|
41
|
+
## What It Does NOT Do
|
|
42
|
+
|
|
43
|
+
- Does not automate domain buying, bidding, or registration
|
|
44
|
+
- Does not promise rankings or guarantee SEO outcomes
|
|
45
|
+
- Does not encourage PBN construction or deceptive redirects
|
|
46
|
+
- Does not replace commercial tools like Ahrefs or DomCop for bulk discovery
|
|
47
|
+
- Does not produce black-box scores — every recommendation is auditable
|
|
48
|
+
|
|
49
|
+
## Requirements
|
|
50
|
+
|
|
51
|
+
| Requirement | Purpose | How to Set Up |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| Python 3.10+ | Signal collection and scoring | python.org |
|
|
54
|
+
| curl | API calls to Wayback Machine | Pre-installed on most systems |
|
|
55
|
+
| whois CLI | Domain registration checks | `apt install whois` or `brew install whois` |
|
|
56
|
+
| LLM API key (optional) | Enhanced niche-relevance scoring | See .env.example |
|
|
57
|
+
|
|
58
|
+
The skill works without an LLM API key. Rule-based scoring uses domain string
|
|
59
|
+
analysis and Wayback CDX data. Adding an LLM key enables deeper contextual
|
|
60
|
+
niche-relevance assessment.
|
|
61
|
+
|
|
62
|
+
## Setup
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
cp .env.example .env
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Fill in `LLM_API_KEY` if you want LLM-enhanced scoring (optional).
|
|
69
|
+
|
|
70
|
+
## How to Use
|
|
71
|
+
|
|
72
|
+
Basic usage:
|
|
73
|
+
```
|
|
74
|
+
"Find expired domain opportunities in the developer tools niche"
|
|
75
|
+
"Evaluate these expired domains for my cybersecurity blog"
|
|
76
|
+
"Triage this list of expired domains for AI SaaS redirect potential"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
With specific candidates:
|
|
80
|
+
```
|
|
81
|
+
"Evaluate these expired domains for the fintech niche: paymentsdaily.com, fintechweekly.io, cheaploans247.net"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
With options:
|
|
85
|
+
```
|
|
86
|
+
"Find expired domain opportunities in developer tools. Minimum 20 referring domains. Only show low-risk candidates. Focus on rebuild potential."
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Run with the built-in demo set:
|
|
90
|
+
```
|
|
91
|
+
"Run the expired domain finder with the example set"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Inputs
|
|
95
|
+
|
|
96
|
+
| Input | Type | Required | Description |
|
|
97
|
+
|---|---|---|---|
|
|
98
|
+
| `target_niche` | string | Yes | Core niche to evaluate against (e.g., "developer tools") |
|
|
99
|
+
| `seed_keywords` | array | No | Keywords for refined matching (e.g., ["devops", "CI/CD"]) |
|
|
100
|
+
| `candidate_domains` | array | No | Domains to evaluate (prompted if not provided) |
|
|
101
|
+
| `discovery_source` | string | No | Where candidates came from |
|
|
102
|
+
| `min_ref_domains` | integer | No | Minimum referring-domain threshold (default: 10) |
|
|
103
|
+
| `max_risk_level` | string | No | `low`, `medium`, `high` — controls filtering aggressiveness |
|
|
104
|
+
| `intended_use` | string | No | `rebuild`, `redirect`, or `either` (default: `either`) |
|
|
105
|
+
|
|
106
|
+
## Output Example
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"skill": "domain-expired-opportunity-finder",
|
|
111
|
+
"target_niche": "developer tools",
|
|
112
|
+
"shortlist": [
|
|
113
|
+
{
|
|
114
|
+
"domain": "devtoolsweekly.com",
|
|
115
|
+
"opportunity_score": 86,
|
|
116
|
+
"confidence": "high",
|
|
117
|
+
"recommended_action": "high-priority-review",
|
|
118
|
+
"redirect_suitability": "high",
|
|
119
|
+
"topical_fit_summary": "Domain name contains 'devtools'. Wayback snapshots confirm it was a weekly newsletter covering developer tools and IDE plugins from 2019 to 2024.",
|
|
120
|
+
"activity_level_summary": "High snapshot frequency across 6 consecutive years, indicating sustained active use.",
|
|
121
|
+
"content_quality_summary": "Historical page titles are predominantly branded ('DevTools Weekly') and natural. No keyword stuffing detected.",
|
|
122
|
+
"history_summary": "6 years of consistent Wayback snapshots (2019–2024). All snapshots show real content. No parking pages or sudden drop-offs.",
|
|
123
|
+
"risk_flags": [],
|
|
124
|
+
"why_selected": "Strong topical match with healthy activity level and clean 6-year history.",
|
|
125
|
+
"why_risky": "No significant risk signals. Standard due diligence recommended."
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Scoring Overview
|
|
132
|
+
|
|
133
|
+
The skill uses a transparent weighted model (no black-box ranking):
|
|
134
|
+
|
|
135
|
+
| Dimension | Weight | Signals Analyzed |
|
|
136
|
+
| :--- | :--- | :--- |
|
|
137
|
+
| **Topical Relevance** | 30% | Keyword match, Wayback titles, LLM classification |
|
|
138
|
+
| **Historical Activity Level** | 25% | Snapshot frequency and long-term continuity |
|
|
139
|
+
| **Historical Content Quality** | 15% | Title keyword stuffing, natural phrasing |
|
|
140
|
+
| **History Cleanliness** | 15% | Years active, parking pages, 200 vs 404 ratio |
|
|
141
|
+
| **Redirect Suitability** | 10% | Niche overlap, content format consistency |
|
|
142
|
+
| **Signal Completeness** | 5% | Availability of Wayback and RDAP data |
|
|
143
|
+
|
|
144
|
+
Full scoring details: `references/scoring-model.md`
|
|
145
|
+
|
|
146
|
+
## Risk Flags
|
|
147
|
+
|
|
148
|
+
| Flag | Severity | Effect |
|
|
149
|
+
| :--- | :--- | :--- |
|
|
150
|
+
| `topic_mismatch` | High | Caps score. Domain is in a completely unrelated niche. |
|
|
151
|
+
| `spam_content_risk` | High | Caps score. Heavy exact-match money keywords in titles. |
|
|
152
|
+
| `possible_deindex` | High | Caps score. Sudden drop-off in Wayback captures. |
|
|
153
|
+
| `redirect_mismatch` | High | Caps redirect suitability. Not safe for 301. |
|
|
154
|
+
| `unclear_history` | Medium | Reduces score. <3 Wayback captures or mostly parking pages. |
|
|
155
|
+
| `short_history` | Medium | Reduces score. Domain active < 1 year before expiry. |
|
|
156
|
+
| `weak_historical_activity` | Medium | Reduces score. Snapshots below threshold. |
|
|
157
|
+
| `suspicious_registrar` | Medium | Known spam-associated registrar |
|
|
158
|
+
|
|
159
|
+
Full flag definitions: `references/risk-flags.md`
|
|
160
|
+
|
|
161
|
+
## Recommendation Labels
|
|
162
|
+
|
|
163
|
+
| Label | Meaning |
|
|
164
|
+
|---|---|
|
|
165
|
+
| `high-priority-review` | Strong match, low risk — review first |
|
|
166
|
+
| `review` | Worth investigating, mixed or incomplete evidence |
|
|
167
|
+
| `rebuild-only-review` | Good for rebuild, not suitable for redirect |
|
|
168
|
+
| `reject` | Does not meet quality or relevance threshold |
|
|
169
|
+
|
|
170
|
+
## Guardrails
|
|
171
|
+
|
|
172
|
+
This skill is a research and triage tool. It:
|
|
173
|
+
- Frames all results as recommendations, not guarantees
|
|
174
|
+
- Requires topic continuity for redirect recommendations
|
|
175
|
+
- Flags manipulative patterns instead of optimizing for them
|
|
176
|
+
- Includes a disclaimer on every output
|
|
177
|
+
|
|
178
|
+
Full guardrails policy: `references/guardrails.md`
|
|
179
|
+
|
|
180
|
+
## Project Structure
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
domain-expired-opportunity-finder/
|
|
184
|
+
├── SKILL.md # Agent workflow instructions
|
|
185
|
+
├── README.md # This file
|
|
186
|
+
├── .env.example # API key template (optional)
|
|
187
|
+
├── evals/
|
|
188
|
+
│ └── evals.json # 5 test scenarios
|
|
189
|
+
└── references/
|
|
190
|
+
├── scoring-model.md # Transparent scoring dimensions
|
|
191
|
+
├── output-format.md # JSON output schema
|
|
192
|
+
├── risk-flags.md # Risk flag definitions
|
|
193
|
+
└── guardrails.md # Anti-abuse policy
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## License
|
|
197
|
+
|
|
198
|
+
MIT
|