@opendirectory.dev/skills 0.1.42 → 0.1.43

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendirectory.dev/skills",
3
- "version": "0.1.42",
3
+ "version": "0.1.43",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "bin": {
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.",
@@ -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
+ ```