@opendirectory.dev/skills 0.1.42 → 0.1.44
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 +16 -0
- package/skills/competitor-pr-finder/.env.example +13 -0
- package/skills/competitor-pr-finder/README.md +127 -0
- package/skills/competitor-pr-finder/SKILL.md +767 -0
- package/skills/competitor-pr-finder/evals/evals.json +120 -0
- package/skills/competitor-pr-finder/references/pitch-guide.md +119 -0
- package/skills/competitor-pr-finder/references/pr-channel-types.md +81 -0
- package/skills/competitor-pr-finder/references/tier-scoring.md +91 -0
- package/skills/competitor-pr-finder/scripts/research.py +292 -0
- package/skills/pricing-finder/.env.example +15 -0
- package/skills/pricing-finder/README.md +142 -0
- package/skills/pricing-finder/SKILL.md +748 -0
- package/skills/pricing-finder/evals/evals.json +124 -0
- package/skills/pricing-finder/references/extraction-guide.md +156 -0
- package/skills/pricing-finder/references/positioning-guide.md +114 -0
- package/skills/pricing-finder/references/pricing-models.md +113 -0
- package/skills/pricing-finder/requirements.txt +8 -0
- package/skills/pricing-finder/scripts/research.py +449 -0
package/package.json
CHANGED
package/registry.json
CHANGED
|
@@ -40,6 +40,14 @@
|
|
|
40
40
|
"version": "0.0.1",
|
|
41
41
|
"path": "skills/cold-email-verifier"
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
"name": "competitor-pr-finder",
|
|
45
|
+
"description": "Give it your product URL or description.",
|
|
46
|
+
"tags": [],
|
|
47
|
+
"author": "opendirectory",
|
|
48
|
+
"version": "0.0.1",
|
|
49
|
+
"path": "skills/competitor-pr-finder"
|
|
50
|
+
},
|
|
43
51
|
{
|
|
44
52
|
"name": "cook-the-blog",
|
|
45
53
|
"description": "Generate high-converting, deep-dive growth case studies in MDX format.",
|
|
@@ -242,6 +250,14 @@
|
|
|
242
250
|
"version": "1.0.0",
|
|
243
251
|
"path": "skills/pr-description-writer"
|
|
244
252
|
},
|
|
253
|
+
{
|
|
254
|
+
"name": "pricing-finder",
|
|
255
|
+
"description": "Tell it what your product is (URL or description) and it finds 5 competitors globally, fetches their actual pricing pages, extracts every tier and...",
|
|
256
|
+
"tags": [],
|
|
257
|
+
"author": "opendirectory",
|
|
258
|
+
"version": "0.0.1",
|
|
259
|
+
"path": "skills/pricing-finder"
|
|
260
|
+
},
|
|
245
261
|
{
|
|
246
262
|
"name": "pricing-page-psychology-audit",
|
|
247
263
|
"description": "Audits any SaaS pricing page URL against 12 pricing psychology principles and outputs a ranked improvement report with specific rewrite suggestions...",
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# competitor-pr-finder -- environment variables
|
|
2
|
+
# Copy this file to .env and fill in your keys.
|
|
3
|
+
|
|
4
|
+
# Required: Tavily API key for competitor discovery, PR research, and journalist lookup
|
|
5
|
+
# Get it at: https://app.tavily.com
|
|
6
|
+
# Free tier: 1000 credits/month (~40 full runs at ~25 searches/run)
|
|
7
|
+
TAVILY_API_KEY=your_tavily_api_key_here
|
|
8
|
+
|
|
9
|
+
# Optional: Firecrawl API key for fetching JS-rendered product pages
|
|
10
|
+
# If not set, Tavily extract is used as a fallback (slightly less reliable for heavy JS sites)
|
|
11
|
+
# Get it at: https://firecrawl.dev
|
|
12
|
+
# Free tier: 500 credits/month
|
|
13
|
+
FIRECRAWL_API_KEY=your_firecrawl_api_key_here
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# competitor-pr-finder
|
|
2
|
+
|
|
3
|
+
Give it your product URL. It finds your top 5 competitors, researches every press mention, podcast appearance, and community post across all of them, and tells you exactly which channels to pitch -- with the journalist's name, the angle that got your competitors featured, and a ready-to-send cold pitch for your product.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
1. Fetches your product page (Firecrawl or Tavily extract)
|
|
8
|
+
2. Analyzes your product: taxonomy, differentiators, ICP
|
|
9
|
+
3. Discovers 5 competitor companies via Tavily search
|
|
10
|
+
4. **Asks you to confirm the competitor list** before running research
|
|
11
|
+
5. Runs three-track PR research across all 5 competitors:
|
|
12
|
+
- **Track A (Editorial):** News articles, feature pieces, funded announcements
|
|
13
|
+
- **Track B (Podcasts):** Founder interviews, guest appearances, episode mentions
|
|
14
|
+
- **Track C (Communities):** Reddit threads, HN posts, ProductHunt launches
|
|
15
|
+
6. Tiers channels by how many competitors appeared in each (Tier 1 = 3+ competitors)
|
|
16
|
+
7. Looks up the journalist or host name for each Tier 1 channel
|
|
17
|
+
8. Generates a cold pitch draft per Tier 1 channel: subject line + 3-4 sentence body
|
|
18
|
+
|
|
19
|
+
## Output
|
|
20
|
+
|
|
21
|
+
A PR intel report saved to `docs/pr-intel/[product-slug]-[date].md` containing:
|
|
22
|
+
|
|
23
|
+
- **Tier 1 channels** (proven beats for your space) with journalist name, story angle, and cold pitch draft
|
|
24
|
+
- **Tier 2 channels** (quick hits table -- channels that covered 2 of 5 competitors)
|
|
25
|
+
- **Tier 3 channels** (discovery list -- one mention only)
|
|
26
|
+
- **3 bonus hooks** -- pitch angles none of your competitors have used
|
|
27
|
+
|
|
28
|
+
## Requirements
|
|
29
|
+
|
|
30
|
+
| Tool | Required | Purpose | Free Tier |
|
|
31
|
+
|---|---|---|---|
|
|
32
|
+
| Tavily API | Yes | Competitor discovery, PR research, journalist lookup | 1000 credits/month (~40 runs) |
|
|
33
|
+
| Firecrawl API | No | Fetch JS-rendered product pages | 500 credits/month |
|
|
34
|
+
|
|
35
|
+
If Firecrawl is not set, Tavily extract is used as a fallback.
|
|
36
|
+
|
|
37
|
+
## Install
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npx "@opendirectory.dev/skills" install competitor-pr-finder --target claude
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Video Tutorial
|
|
44
|
+
Watch this quick video to see how it's done:
|
|
45
|
+
|
|
46
|
+
https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
47
|
+
|
|
48
|
+
### Step 1: Download the skill from GitHub
|
|
49
|
+
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
50
|
+
2. Go to [download-directory.github.io](https://download-directory.github.io/).
|
|
51
|
+
3. Paste the URL and click **Enter** to download.
|
|
52
|
+
|
|
53
|
+
### Step 2: Install the Skill in Claude
|
|
54
|
+
1. Open your **Claude desktop app**.
|
|
55
|
+
2. Go to the sidebar on the left side and click on the **Customize** section.
|
|
56
|
+
3. Click on the **Skills** tab, then click on the **+** (plus) icon button to create a new skill.
|
|
57
|
+
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).
|
|
58
|
+
|
|
59
|
+
> **Note:** For some skills (like `position-me`), the `SKILL.md` file might be located inside a subfolder. Always make sure you are uploading the specific folder that contains the `SKILL.md` file!
|
|
60
|
+
|
|
61
|
+
## Setup
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
cp .env.example .env
|
|
65
|
+
# Add TAVILY_API_KEY (required) and FIRECRAWL_API_KEY (optional)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Usage
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Find my PR targets: https://yourstartup.com
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Or paste a description if you don't have a live URL:
|
|
75
|
+
```
|
|
76
|
+
Find PR targets for my startup. We build [what you do] for [who]. [Stage], [geography].
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Cost
|
|
80
|
+
|
|
81
|
+
| Operation | Searches | Cost |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| Product page fetch | 1 Firecrawl or Tavily extract | ~$0.001 |
|
|
84
|
+
| Competitor discovery | 2 Tavily searches | ~$0.02 |
|
|
85
|
+
| 3-track PR research (5 competitors) | 15 Tavily searches | ~$0.15 |
|
|
86
|
+
| Journalist lookup (up to 7 Tier 1 channels) | ~6 Tavily searches | ~$0.06 |
|
|
87
|
+
| **Total** | **~23-24 searches** | **~$0.23/run** |
|
|
88
|
+
|
|
89
|
+
## Zero-Hallucination Policy
|
|
90
|
+
|
|
91
|
+
Every channel name in the output traces to a URL in the search results. Every journalist name traces to a search result snippet. Story angles are extracted from article titles found by Tavily -- not inferred from AI training knowledge. Fields that could not be sourced are labeled "not found in search data."
|
|
92
|
+
|
|
93
|
+
## Project Structure
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
competitor-pr-finder/
|
|
97
|
+
├── SKILL.md -- 10-step workflow for Claude Code
|
|
98
|
+
├── README.md -- this file
|
|
99
|
+
├── .env.example -- environment variable template
|
|
100
|
+
├── scripts/
|
|
101
|
+
│ └── research.py -- two-phase Tavily data collector
|
|
102
|
+
├── evals/
|
|
103
|
+
│ └── evals.json -- 5 test cases
|
|
104
|
+
└── references/
|
|
105
|
+
├── pr-channel-types.md -- how to identify editorial, podcast, community channels
|
|
106
|
+
├── pitch-guide.md -- cold pitch structure, forbidden phrases, angle extraction
|
|
107
|
+
└── tier-scoring.md -- channel tiering rules and frequency map construction
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Standalone Script Usage
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Phase 1: competitor discovery
|
|
114
|
+
python3 scripts/research.py \
|
|
115
|
+
--phase discover \
|
|
116
|
+
--product-analysis /tmp/cprf-product-analysis.json \
|
|
117
|
+
--tavily-key "$TAVILY_API_KEY" \
|
|
118
|
+
--output /tmp/cprf-competitors-raw.json
|
|
119
|
+
|
|
120
|
+
# Phase 2: PR research on confirmed competitors
|
|
121
|
+
python3 scripts/research.py \
|
|
122
|
+
--phase pr-research \
|
|
123
|
+
--competitors /tmp/cprf-competitors-confirmed.json \
|
|
124
|
+
--product-analysis /tmp/cprf-product-analysis.json \
|
|
125
|
+
--tavily-key "$TAVILY_API_KEY" \
|
|
126
|
+
--output /tmp/cprf-pr-raw.json
|
|
127
|
+
```
|