keploy-blog-generator-skill 1.0.0

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/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # keploy-blog-generator-skill
2
+
3
+ NPM package for the `keploy-blog-generator` skill content.
4
+
5
+ ## Contents
6
+
7
+ - `SKILL.md`
8
+ - `references/seo-guidelines.md`
9
+
10
+ ## Install
11
+
12
+ ```bash
13
+ npm install keploy-blog-generator-skill
14
+ ```
15
+
16
+ ## Usage
17
+
18
+ ```js
19
+ const skill = require("keploy-blog-generator-skill");
20
+
21
+ console.log(skill.name);
22
+ console.log(skill.skillFile);
23
+ console.log(skill.referencesDir);
24
+ ```
25
+
26
+ ## Publish
27
+
28
+ ```bash
29
+ npm publish --access public
30
+ ```
package/SKILL.md ADDED
@@ -0,0 +1,285 @@
1
+ ---
2
+ name: keploy-blog-generator
3
+ description: Generates SEO-optimized blog posts for Keploy following strict internal SEO guidelines. Use this skill whenever someone asks to write, generate, create, or draft a blog post for Keploy — whether they mention a keyword, topic, or just say "write a blog". Also triggers for requests like "generate blog content", "write a technical post", "create a community blog", or any task that involves producing long-form content for Keploy's website. Always use this skill for Keploy blog creation — do not write blogs freehand.
4
+ ---
5
+
6
+ # Keploy Blog Generator
7
+
8
+ Generates complete, SEO-optimized blog posts for Keploy strictly following the internal SEO guidelines.
9
+
10
+ **Always read** `references/seo-guidelines.md` before generating any content — it is the source of truth and every single rule in it must be followed without exception.
11
+
12
+ ---
13
+
14
+ ## Step 1: Gather Inputs
15
+
16
+ Before writing anything, collect the following from the user if not already provided:
17
+
18
+ **Required:**
19
+ - Primary keyword
20
+ - Blog type: **Community** or **Technical** (ask if not specified)
21
+
22
+ **Optional (but use if provided):**
23
+ - Secondary keywords (list)
24
+ - Tertiary keywords (list)
25
+ - Any specific angle, talking points, or competitor URLs to reference
26
+
27
+ ---
28
+
29
+ ## Step 2: Ask Blog Type
30
+
31
+ If the user hasn't specified, ask:
32
+
33
+ > "Is this a **Community blog** or a **Technical blog**?"
34
+ >
35
+ > - **Community blogs** are accessible, story-driven, and written for a broader developer audience — less deep on implementation, more on concepts, impact, and real-world context.
36
+ > - **Technical blogs** are in-depth, implementation-focused, and written for engineers who want to understand the how and why at a code/architecture level.
37
+
38
+ ---
39
+
40
+ ## Step 3: Suggest a Persona (or Persona Blend)
41
+
42
+ Based on the blog type and keyword, recommend the most fitting persona from the list below. Show the user:
43
+ - The **recommended persona** (mark it clearly as ⭐ Recommended)
44
+ - 2–3 **alternative personas**
45
+ - A **1-line description** of each
46
+
47
+ Then tell the user:
48
+ > "You can also **mix 2–3 personas** for a more nuanced voice. For example: *Senior Backend Engineer + Open Source Developer* gives you technical depth with a community-friendly, peer-to-peer tone. Just tell me which ones to blend!"
49
+
50
+ **Blending rules (max 3 personas):**
51
+ - Assign a **primary persona** (dominant voice, ~60%) and one or two **secondary personas** (flavour, ~40% split)
52
+ - Clearly state the blend before writing, e.g.: `Voice: Senior Backend Engineer (primary) + Open Source Developer (secondary)`
53
+ - The primary persona sets the overall tone, vocabulary level, and sentence structure
54
+ - Secondary personas contribute specific traits — see the blend trait table below
55
+ - Cross-track blending (Technical + Community persona) is allowed and often produces the most natural-sounding blogs
56
+
57
+ Let the user confirm the single persona or blend before proceeding.
58
+
59
+ ---
60
+
61
+ ## Persona Library
62
+
63
+ ### Technical Blog Personas
64
+
65
+ **1. Senior Backend Engineer** *(recommended for API testing, mocking, integration testing topics)*
66
+ > 5+ years building distributed systems. Writes with authority, goes deep on architecture decisions, references trade-offs, and isn't afraid to call out bad patterns. Tone: direct, confident, no fluff.
67
+
68
+ **2. Staff Engineer / Tech Lead** *(recommended for platform engineering, testing strategy, DevOps topics)*
69
+ > Thinks at system scale. Focuses on team impact, long-term maintainability, and engineering culture. References real org-level decisions. Tone: thoughtful, experienced, slightly opinionated.
70
+
71
+ **3. Open Source Developer** *(recommended for OSS tooling, developer experience, CLI, SDK topics)*
72
+ > Lives in the terminal and GitHub. Passionate about developer ergonomics, clean APIs, and community-driven tools. References open source projects by name. Tone: enthusiastic, peer-to-peer, pragmatic.
73
+
74
+ **4. Professional QA / SDET Engineer** *(recommended for test automation, test coverage, flaky tests topics)*
75
+ > Deeply specialized in quality engineering. Knows the pain of brittle test suites, flaky CI, and untested edge cases. Writes from the trenches of real QA workflows. Tone: precise, practical, detail-oriented.
76
+
77
+ **5. DevOps / Platform Engineer** *(recommended for CI/CD, containerization, deployment pipeline topics)*
78
+ > Owns the pipeline. Writes about reliability, speed, and eliminating developer friction. References tools like GitHub Actions, Jenkins, Docker, k8s naturally. Tone: pragmatic, systems-thinker, efficiency-focused.
79
+
80
+ **6. Security-Conscious Developer** *(recommended for API security, data privacy, compliance testing topics)*
81
+ > Thinks about every endpoint as a potential attack surface. References CVEs, OWASP, and real breach case studies. Tone: cautious, thorough, evidence-driven.
82
+
83
+ ---
84
+
85
+ ### Community Blog Personas
86
+
87
+ **7. Developer Advocate** *(recommended for concept explainers, "what is X", intro-to-testing topics)*
88
+ > Bridges the gap between engineering and the community. Makes hard concepts feel approachable without dumbing them down. References talks, blog posts, and real developer conversations. Tone: warm, energetic, storytelling-forward.
89
+
90
+ **8. Junior Developer (Learning in Public)** *(recommended for beginner guides, "I tried X and here's what happened" topics)*
91
+ > Recently shipped their first production feature. Writes from genuine curiosity and the experience of figuring things out. Relatable, honest about mistakes, celebrates small wins. Tone: conversational, humble, encouraging.
92
+
93
+ **9. Startup CTO / Founding Engineer** *(recommended for build vs buy, testing culture, scaling engineering topics)*
94
+ > Wore every hat at a 5-person startup. Now has opinions on everything — especially what slows teams down. References real startup war stories. Tone: opinionated, fast-paced, pragmatic.
95
+
96
+ **10. Developer Community Lead** *(recommended for ecosystem, open source contribution, community building topics)*
97
+ > Runs meetups, mentors contributors, and lives for developer collaboration. Focuses on the human side of engineering. Tone: inclusive, community-first, motivating.
98
+
99
+ ---
100
+
101
+ ## Step 4: Generate the Blog
102
+
103
+ After confirming persona and blog type, read `references/seo-guidelines.md` fully, then generate the complete blog output.
104
+
105
+ ### Output Format
106
+
107
+ Produce all sections in this exact order:
108
+
109
+ ---
110
+
111
+ ### OUTPUT TEMPLATE
112
+
113
+ ```
114
+ ## Meta
115
+ **Meta Title:** [≤60 chars, primary keyword near start, unique, search-intent-aware, not a copy of competitors]
116
+ **Meta Description:** [150–160 chars, includes primary keyword, clickbait, unique]
117
+ **URL Slug:** [/primary-keyword-slug — <60 chars, exact primary keyword, hyphens only where needed]
118
+
119
+ ---
120
+
121
+ ## H1
122
+ [Different from Meta Title. Clickbait. Primary keyword near start. Max 60 chars.]
123
+
124
+ ---
125
+
126
+ ## Blog Content
127
+
128
+ [Full blog body — see content rules below]
129
+
130
+ ---
131
+
132
+ ## Instagram Carousel Outline
133
+
134
+ **Slide 1 (Cover):** [Topic/keyword as title, bold, minimal]
135
+ **Slide 2 (Intro/Definition):** [3–5 bullets: what/why]
136
+ **Slide 3 (Key Insight 1):** [3–5 bullets]
137
+ **Slide 4 (Key Insight 2):** [3–5 bullets]
138
+ **Slide 5 (Benefits/Examples):** [3–5 bullets]
139
+ **Slide 6 (Outro/CTA):** ["Follow @Keploy for more!" + one closing line]
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Content Generation Rules (apply every time, no exceptions)
145
+
146
+ Pull these from `references/seo-guidelines.md` — summarized here as a quick checklist to verify before outputting:
147
+
148
+ ### Structure
149
+ - [ ] Intro: max 2 paras, 5–6 lines each
150
+ - [ ] Hook in first sentence
151
+ - [ ] Primary keyword in first paragraph / first 10% of intro
152
+ - [ ] No "this blog is about..." or TOC repetition in intro
153
+ - [ ] Comparison table included (if topic is comparative)
154
+ - [ ] Listicles included where relevant
155
+ - [ ] All paragraphs max 4 lines
156
+ - [ ] Min 1500 words (aim 1500–2500)
157
+ - [ ] One H1 only, different from meta title
158
+
159
+ ### Keyword Usage
160
+ - [ ] Primary keyword: match search intent, in first 10% of content
161
+ - [ ] Secondary keywords: in headings/subheadings, not forced
162
+ - [ ] Tertiary keywords: 0.5–0.75% density
163
+ - [ ] LSI keywords: used throughout
164
+ - [ ] Keyword variations: 0.5–1% of word count
165
+
166
+ ### Writing Quality
167
+ - [ ] First person, story narration style
168
+ - [ ] Active voice dominant
169
+ - [ ] Transition words sufficient
170
+ - [ ] No consecutive same-structure sentences
171
+ - [ ] Real company names/examples referenced
172
+ - [ ] No babysitting, no analogies, no filler
173
+ - [ ] Inclusive, respectful language throughout
174
+ - [ ] Q&A format used where appropriate (AIO optimization)
175
+ - [ ] Writing style modeled after BrowserStack / TestSigma / Katalon
176
+
177
+ ### Links (note in output where links should go)
178
+ - [ ] Internal links: max 5 per 1000 words, targeted anchor text
179
+ - [ ] External links: reputable sources, generic anchor text, target="_blank"
180
+
181
+ ### SEO Metadata
182
+ - [ ] Meta title: ≤60 chars, primary keyword near start, unique
183
+ - [ ] Meta description: 150–160 chars, clickbait, unique
184
+ - [ ] URL slug: <60 chars, exact primary keyword, minimal hyphens
185
+
186
+ ### Instagram Carousel
187
+ - [ ] 4–7 slides outlined
188
+ - [ ] Dark mode, 1080×1350 px noted
189
+ - [ ] 3–5 bullets per slide
190
+ - [ ] Educational + engaging tone
191
+ - [ ] CTA on final slide: "Follow @Keploy for more!"
192
+
193
+ ---
194
+
195
+ ## Persona Voice Application
196
+
197
+ ### Single Persona Reference Table
198
+
199
+ | Persona | Vocabulary level | Sentence style | What to emphasize |
200
+ |---|---|---|---|
201
+ | Senior Backend Engineer | Technical, precise | Declarative, no hedging | Architecture, trade-offs, real code patterns |
202
+ | Staff Engineer | Strategic, measured | Longer, nuanced | Team impact, scalability, org context |
203
+ | Open Source Developer | Casual-technical | Energetic, peer-to-peer | DX, tooling, community proof points |
204
+ | Professional QA/SDET | Specialist, methodical | Step-by-step, evidence-based | Test coverage, CI pain, reliability metrics |
205
+ | DevOps/Platform Engineer | Systems-thinker | Efficient, tool-named | Pipeline speed, integration, automation |
206
+ | Security-Conscious Dev | Cautious, thorough | Evidence-first | Risks, CVEs, compliance, real incidents |
207
+ | Developer Advocate | Warm, energetic | Storytelling, inclusive | Concepts, community, approachability |
208
+ | Junior Dev (Learning) | Conversational, honest | Short, curious | Discovery, mistakes, relatable journey |
209
+ | Startup CTO | Opinionated, fast | Direct, war-story style | Build vs buy, speed, scaling decisions |
210
+ | Community Lead | Inclusive, motivating | Human, collaborative | Culture, contribution, belonging |
211
+
212
+ ---
213
+
214
+ ### Persona Blending — How It Works
215
+
216
+ When the user selects a blend, apply it like this:
217
+
218
+ **Structure:**
219
+ - **Primary persona (~60%)**: sets overall tone, vocabulary, sentence rhythm, POV
220
+ - **Secondary persona(s) (~40% split)**: inject specific traits at natural moments — transitions, examples, callouts, closing sections
221
+
222
+ **What each persona contributes as a secondary:**
223
+
224
+ | Used as secondary | What it adds to the blend |
225
+ |---|---|
226
+ | Senior Backend Engineer | Sharpens technical claims, adds architecture depth to key sections |
227
+ | Staff Engineer | Adds strategic framing, "at scale" perspective to transitions |
228
+ | Open Source Developer | Loosens tone, adds GitHub/community references, peer-to-peer warmth |
229
+ | Professional QA/SDET | Adds precision to any testing-related sections, surfaces edge cases |
230
+ | DevOps/Platform Engineer | Injects CI/CD tool names, pipeline context where relevant |
231
+ | Security-Conscious Dev | Adds risk callouts, "watch out for X" moments |
232
+ | Developer Advocate | Softens technical sections, adds "here's why this matters" bridges |
233
+ | Junior Dev (Learning) | Adds relatable "I used to struggle with this" moments, humanizes the narrative |
234
+ | Startup CTO | Injects opinionated takes, war-story anecdotes, build-vs-buy framing |
235
+ | Community Lead | Adds inclusive language, community shoutouts, collaborative framing |
236
+
237
+ **Example blends and their resulting voice:**
238
+
239
+ | Blend | Resulting voice |
240
+ |---|---|
241
+ | Senior Backend Engineer + Open Source Dev | Deep technical + peer-to-peer warmth. Feels like a senior dev writing for their own blog. |
242
+ | Developer Advocate + QA/SDET | Accessible explanations with real testing precision. Great for "intro to test automation". |
243
+ | Startup CTO + Staff Engineer | Strategic + opinionated. Great for "testing culture" or "why we rebuilt our pipeline" topics. |
244
+ | Open Source Dev + Junior Dev | Highly relatable, energetic, learning-in-public style. Great for community blogs. |
245
+ | QA/SDET + DevOps Engineer | Deep quality + pipeline context. Perfect for CI/CD testing, test reliability topics. |
246
+ | Senior Backend Engineer + Security Dev | Authoritative + risk-aware. Strong for API security, compliance testing topics. |
247
+
248
+ **Consistency rule:** When blending, do NOT randomly switch voices mid-paragraph. The primary voice runs throughout. Secondary traits appear at specific moments — examples, section intros, callouts, or the conclusion. The reader should feel one coherent author, not two.
249
+
250
+ ---
251
+
252
+ ## Blog Type Differences
253
+
254
+ ### Technical Blog
255
+ - Goes deep on implementation — code snippets, architecture diagrams described, API references
256
+ - Assumes reader knows the basics — no hand-holding
257
+ - References GitHub repos, official docs, specific library versions
258
+ - More H3 subheadings for granular breakdown
259
+ - Comparison tables almost always relevant
260
+
261
+ ### Community Blog
262
+ - Concept-first — explains the why before the how
263
+ - More narrative arc — problem → journey → resolution
264
+ - References real developer experiences, tweets, community discussions
265
+ - Lighter on code — pseudocode or high-level flows preferred
266
+ - Tone is warmer, more inclusive
267
+ - Comparison tables optional, listicles preferred
268
+
269
+ ---
270
+
271
+ ## Quality Self-Check Before Outputting
272
+
273
+ Before presenting the final output, verify:
274
+ 1. Did I read `references/seo-guidelines.md` fully?
275
+ 2. Is the primary keyword in the first 10% of the intro?
276
+ 3. Are all paragraphs ≤ 4 lines?
277
+ 4. Is the meta title ≤ 60 chars and different from H1?
278
+ 5. Is the URL slug < 60 chars with exact primary keyword?
279
+ 6. Is the meta description 150–160 chars?
280
+ 7. Is the blog min 1500 words?
281
+ 8. Are LSI keywords used throughout?
282
+ 9. Is the persona voice consistent end-to-end? If a blend, does the primary persona dominate and secondary traits appear only at natural moments?
283
+ 10. Is the Instagram carousel outline complete with 4–7 slides and CTA?
284
+
285
+ If any check fails — fix before outputting.
package/index.js ADDED
@@ -0,0 +1,7 @@
1
+ const path = require("path");
2
+
3
+ module.exports = {
4
+ name: "keploy-blog-generator",
5
+ skillFile: path.join(__dirname, "SKILL.md"),
6
+ referencesDir: path.join(__dirname, "references")
7
+ };
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "keploy-blog-generator-skill",
3
+ "version": "1.0.0",
4
+ "description": "Keploy blog generator skill packaged for npm distribution.",
5
+ "author": "Dhananjay",
6
+ "license": "MIT",
7
+ "type": "commonjs",
8
+ "main": "index.js",
9
+ "files": [
10
+ "SKILL.md",
11
+ "references",
12
+ "index.js",
13
+ "README.md"
14
+ ],
15
+ "keywords": [
16
+ "keploy",
17
+ "copilot-skill",
18
+ "skill",
19
+ "blog-generator",
20
+ "seo"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "scripts": {
26
+ "pack:check": "npm pack --dry-run"
27
+ }
28
+ }
@@ -0,0 +1,158 @@
1
+ # Keploy SEO Content Guidelines — Full Reference
2
+
3
+ > ⚠️ EVERY rule here is NON-NEGOTIABLE. No addition, no subtraction, no skipping.
4
+
5
+ ---
6
+
7
+ ## AIO Optimization
8
+ - Write content in **question-answer format** wherever possible so it gets pulled into AI summaries.
9
+
10
+ ---
11
+
12
+ ## URL Structure
13
+ - Length: **< 60 characters**
14
+ - Keep URLs short and readable
15
+ - Include the **exact primary keyword**
16
+ - No 2 URLs should be the same — check for duplicacy within topic clusters
17
+ - Separate words with **hyphens (-)** in small casing
18
+ - Use hyphens **only where really needed** — overuse looks AI-generated
19
+
20
+ ---
21
+
22
+ ## Page Titles
23
+ - Length: **< 60 characters**
24
+ - Only **one H1** and **one Title** per page — they must be **different from each other**
25
+ - Include **primary keyword towards the beginning**
26
+ - Every page must have a **unique title and H1**
27
+ - Title must be **clickbait** — must encourage the user to click
28
+
29
+ ---
30
+
31
+ ## Blog Content Structure
32
+
33
+ ### Introduction
34
+ - **Max 2 paragraphs**, 5–6 lines each
35
+ - No huge build-up — highlight the problem in 3–4 lines, then go straight to the solution
36
+ - Start with a **hook**
37
+ - **Primary keyword must appear in the 1st paragraph / first 10% of the intro**
38
+ - Do NOT say "this blog is about..." or repeat the table of contents
39
+
40
+ ### Body
41
+ - Add **comparison tables** and **listicles** wherever relevant to the topic
42
+ - Vocabulary: **simple and easy**, suitable for a **25-year-old developer**
43
+ - Write in **first person, story narration style**
44
+ - No analogies, no distracting content
45
+ - Reference **real company names/blogs** for examples, success and failure cases
46
+ - No babysitting content
47
+ - **Paragraph length: max 4 lines** — keep them short for readability
48
+ - Add **bullet points and listicles** to make content LLM-friendly
49
+ - Use **active voice** predominantly — minimize passive voice
50
+ - Use sufficient **transition words** (target Yoast's recommended %)
51
+ - Avoid consecutive sentences with the same structure
52
+ - Use **inclusive and respectful language** — avoid offensive, biased, or judgmental words
53
+
54
+ ### Length
55
+ - **Minimum 1500–2500 words** (check competitor length for the given keyword)
56
+
57
+ ### Quality & Credibility
58
+ Content must be: Accurate, Authoritative, Up-to-date, Complementary, Credible, Transparent, Contextual.
59
+
60
+ ### Readability Reference
61
+ - Model writing style after: **BrowserStack**, **TestSigma**, **Katalon**
62
+ - Reference: https://www.browserstack.com/guide/regression-testing
63
+
64
+ ---
65
+
66
+ ## Headings (H1, H2, H3)
67
+ - **One H1/Title per page only**, followed by H2 and H3
68
+ - Include **relevant keywords in H1/Title and H2 tags**
69
+ - Use secondary keywords in headings wherever possible — **do not force them**
70
+
71
+ ---
72
+
73
+ ## Keywords
74
+
75
+ ### Primary Keyword
76
+ - No fixed density — **match search intent** over density
77
+ - Must appear in the **first 10% of the intro**
78
+
79
+ ### Secondary Keywords
80
+ - Use in headings and subheadings wherever possible
81
+ - **Do not forcefully insert** anywhere
82
+
83
+ ### Tertiary Keywords
84
+ - Target density: **0.5–0.75%**
85
+
86
+ ### LSI Keywords
87
+ - **Not optional** — use relevant LSI keywords wherever possible
88
+
89
+ ### Keyword Variations
90
+ - Aim for variations to be **0.5–1% of total word count**
91
+ - Maintain good readability with keyword variations
92
+
93
+ ---
94
+
95
+ ## Internal Linking
96
+ - Interlink **core/brand keywords** + topic-relevant ones
97
+ - Linked pages must be **relevant to each other**
98
+ - Use **targeted anchor text**
99
+ - Max **5 internal links per 1000 words**
100
+
101
+ ---
102
+
103
+ ## External Links
104
+ - Link to **reputable and relevant external sites** (stats, research, relevant tweets, collaborations)
105
+ - Use `target="_blank"`
106
+ - Anchor text must be **generic** — never use a keyword you want to rank for
107
+
108
+ ---
109
+
110
+ ## Image Optimization
111
+ - **No GIFs**
112
+ - Use images only when necessary
113
+ - Format: **PNG for blogs**
114
+ - File size: **< 100 KB**
115
+ - Compress without losing quality
116
+ - Filename must be a **keyword**
117
+ - **Alt text**: include keywords/synonyms, must be accurate
118
+ - **Title tags**: descriptive
119
+ - Images must be **unique** — if from internet, edit in Canva first
120
+
121
+ ---
122
+
123
+ ## Meta Description
124
+ - Length: **150–160 characters**
125
+ - Include **targeted keywords**
126
+ - Clear description of page content
127
+ - **Unique** per page
128
+ - Must be **clickbait** — encourage clicks
129
+
130
+ ---
131
+
132
+ ## Meta Title
133
+ - Use **primary keyword** towards the beginning
134
+ - Character limit: **≤ 60 characters**
135
+ - Keep **search intent** in mind
136
+ - Not a copy of competitors' meta titles
137
+ - **Unique** per page
138
+
139
+ ---
140
+
141
+ ## Instagram Carousel (Required for every blog)
142
+
143
+ ### Design Specs
144
+ - Dimensions: **1080 × 1350 px**
145
+ - **4–7 slides** (more if needed)
146
+ - **Dark mode** theme (reference: @keploy.io on Instagram)
147
+ - Fonts: Helvetica, Poppins, Roboto, or Open Sans
148
+
149
+ ### Slide Structure
150
+ 1. **Cover**: Blog keyword/topic as title, bold modern typography, minimal clutter
151
+ 2. **Intro/Definition**: What is it / why it matters
152
+ 3. **Key Insights**: 2–3 slides
153
+ 4. **Benefits/Examples**
154
+ 5. **Outro/CTA**: "Follow @Keploy for more!"
155
+
156
+ ### Content Rules
157
+ - **3–5 bullets per slide**, short and crisp
158
+ - Tone: **educational + engaging**, not robotic or AI-sounding