growth-strategy

安装量: 35
排名: #19799

安装

npx skills add https://github.com/manojbajaj95/claude-gtm-plugin --skill growth-strategy
Growth Strategy
Comprehensive growth strategy combining technical SEO/SMO/CRO implementation with strategic growth frameworks.
Quick Reference
Situation
Use This Skill For
SEO/SMO/CRO implementation
Technical Optimization
Building growth engines
Growth Loops Framework
Strategic growth planning
Strategy & Frameworks
Distribution strategy
Channel & Platform Strategy
Network effects
Product-Led Growth
Part 1: Core Principles
Foundational Truths
Growth follows product-market fit, never precedes it
Retention is the foundation; acquisition without retention is a leaky bucket
The best growth is product-driven, not marketing-driven
Compound effects beat linear efforts
Every growth channel eventually saturates
Network effects are the ultimate moat
Premature growth destroys companies
Growth Is Not Marketing
Growth is the systematic application of product, engineering, and data to create compounding user acquisition, activation, and retention. It's a mindset, not a department.
Part 2: Growth Loops Framework
Why Loops, Not Funnels
Funnels
Linear. Pour effort in, get results out, start over.
Loops
Each cycle generates fuel for the next cycle. The key shift: Move from "How do we get more users?" to "How does each user we acquire generate more users?" Loop Types Loop Type Description Content Loops Users create content → attracts more users → more content Viral Loops Users invite others → exponential spread Sales Loops Customers generate revenue → fund more acquisition Critical Patterns Pattern Insight Funnels vs Loops Funnels are linear; loops compound Paid ≠ Loop Paid acquisition doesn't compound — it's buying users Founder-Led First Can't outsource finding growth model Product Must Own Growth Can't be marketing-only function One Primary Loop Others supplement but won't save you Earned Over Paid Invest 80%+ in earned/owned channels Platform Cycles New platforms open, then close. Time your bets correctly: Early: High reach, low competition Mid: Reach peaks, competition grows Late: High competition, diminishing returns Part 3: SEO × SMO × CRO Framework SEO Checklist Page-Level — unique, 50-60 chars, primary keyword <meta name="description"> — 150-160 chars <link rel="canonical"> — self-referencing Single</dd> </dl> </dd> </dl> <h1> with primary keyword Primary keyword in first 100 words Descriptive alt text on all images Internal links to related pages Site-Level robots.txt not blocking important resources sitemap.xml up to date HTTPS everywhere; mobile-friendly Core Web Vitals passing (LCP < 2.5s, CLS < 0.1, INP < 200ms) OGP / Twitter Cards < meta property = " og:type " content = " website " > < meta property = " og:title " content = " Page Title " > < meta property = " og:description " content = " Description " > < meta property = " og:image " content = " https://example.com/og-image.png " > < meta property = " twitter:card " content = " summary_large_image " > CRO Core Pillar Goal Key Metrics SEO Be found Organic traffic, rankings SMO Be shared Social CTR, shares CRO Convert Signup rate, completion Part 4: Growth Models The LTV Equation LTV = (Average Revenue Per Customer × Average Customer Lifespan) - CAC Unit Economics LTV:CAC ratio : 3:1 minimum for sustainable growth Payback period : < 12 months preferred CAC : Cost to acquire a customer ARPU : Average revenue per user AARRR Framework Metric Definition Acquisition Users come from Activation First meaningful use Retention Users come back Referral Users invite others Revenue Users pay Part 5: Network Effects Types of Network Effects Type Description Direct More users → more value (social networks) Indirect More users → more options → more value (marketplaces) Two-sided Supply and demand sides benefit (platforms) Data More data → better product → more users Building Network Effects Cross-side presence : Ensure both sides of marketplace exist Liquidity thresholds : Hit critical mass in each segment Switching costs : Users invest in platform Platform stickiness : Integration with workflows Part 6: Product-Led Growth (PLG) PLG Core Principles Product as the main driver of acquisition Free trials and freemium models In-product virality Self-serve onboarding Usage-based expansion PLG Metrics Metric Target Activation rate > 40% Time to value < 5 minutes Weekly active ratio > 20% Expansion revenue > 20% of total Part 7: Growth Experimentation ICE Framework Factor Score (1-10) Impact Could this double growth? Confidence How sure will this work? Ease How easy to implement? Test Execution Document hypothesis clearly Define primary and guardrail metrics Calculate required sample size Wait for statistical significance (95%) Run full business cycle (1-2 weeks minimum) What NOT to Test Button colors before understanding objections Copying competitors blindly Optimizing without funnel context Part 8: Growth Team & Timing When to Hire Growth Stage Growth Focus Pre-PMF Founder-led, iterate on product Finding PMF First 100 customers, understand channels Validated PMF First growth hire, build experiments Scaling Full growth team, channel expansion Growth Team Structure Individual Contributor : Run experiments Growth Manager : Prioritize and coordinate Growth Lead : Strategy and team management Part 9: Key Frameworks Summary Andrew Chen's Wisdom Marketplace dynamics Network effects as moat Platform distribution Cold start problem Brian Balfour's Frameworks Growth loops methodology Platform cycles Paid ≠ loop insight Casey Winters' Playbooks Kindle before fire (non-scalable → scalable) Product-led sales PQA > PQL Common Mistakes Premature scaling — Growth before PMF burns cash Acquisition without retention — Leaky bucket Chasing channels — Without understanding loops Vanity metrics — Focus on leading indicators One-hit wonders — Not building compounding systems </article> <a href="/" class="back-link">← <span data-i18n="detail.backToLeaderboard">返回排行榜</span></a> </div> <aside class="sidebar"> <section class="related-skills" id="relatedSkillsSection"> <h2 class="related-title" data-i18n="detail.relatedSkills">相关 Skills</h2> <div class="related-list" id="relatedSkillsList"> <div class="skeleton-card"></div> <div class="skeleton-card"></div> <div class="skeleton-card"></div> </div> </section> </aside> </div> </div> <script src="https://unpkg.com/i18next@23.11.5/i18next.min.js" defer></script> <script src="https://unpkg.com/i18next-browser-languagedetector@7.2.1/i18nextBrowserLanguageDetector.min.js" defer></script> <script defer> // Language resources - same pattern as index page const resources = { 'zh-CN': null, 'en': null, 'ja': null, 'ko': null, 'zh-TW': null, 'es': null, 'fr': null }; // Load language files (only current + fallback for performance) async function loadLanguageResources() { const savedLang = localStorage.getItem('i18nextLng') || 'en'; const langsToLoad = new Set([savedLang, 'en']); // current + fallback await Promise.all([...langsToLoad].map(async (lang) => { try { const response = await fetch(`/locales/${lang}.json`); if (response.ok) { resources[lang] = { translation: await response.json() }; } } catch (error) { console.warn(`Failed to load ${lang} language file:`, error); } })); } // Load a single language on demand (for language switching) async function loadLanguage(lang) { if (resources[lang]) return; try { const response = await fetch(`/locales/${lang}.json`); if (response.ok) { resources[lang] = { translation: await response.json() }; i18next.addResourceBundle(lang, 'translation', resources[lang].translation); } } catch (error) { console.warn(`Failed to load ${lang} language file:`, error); } } // Initialize i18next async function initI18n() { try { await loadLanguageResources(); // Filter out null values from resources const validResources = {}; for (const [lang, data] of Object.entries(resources)) { if (data !== null) { validResources[lang] = data; } } console.log('Loaded languages:', Object.keys(validResources)); console.log('zh-CN resource:', validResources['zh-CN']); console.log('detail.home in resource:', validResources['zh-CN']?.translation?.detail?.home); // 检查是否有保存的语言偏好 const savedLang = localStorage.getItem('i18nextLng'); // 如果没有保存的语言偏好,默认使用英文 const defaultLang = savedLang && ['zh-CN', 'en', 'ja', 'ko', 'zh-TW', 'es', 'fr'].includes(savedLang) ? savedLang : 'en'; await i18next .use(i18nextBrowserLanguageDetector) .init({ lng: defaultLang, // 强制设置初始语言 fallbackLng: 'en', supportedLngs: ['zh-CN', 'en', 'ja', 'ko', 'zh-TW', 'es', 'fr'], resources: validResources, detection: { order: ['localStorage'], // 只使用 localStorage,不检测浏览器语言 caches: ['localStorage'], lookupLocalStorage: 'i18nextLng' }, interpolation: { escapeValue: false } }); console.log('i18next initialized, language:', i18next.language); console.log('Test translation:', i18next.t('detail.home')); // Set initial language in selector const langSwitcher = document.getElementById('langSwitcher'); langSwitcher.value = i18next.language; // Update page language updatePageLanguage(); // Language switch event langSwitcher.addEventListener('change', async (e) => { await loadLanguage(e.target.value); // load on demand i18next.changeLanguage(e.target.value).then(() => { updatePageLanguage(); localStorage.setItem('i18nextLng', e.target.value); }); }); } catch (error) { console.error('i18next init failed:', error); } } // Translation helper function t(key, options = {}) { return i18next.t(key, options); } // Update all translatable elements function updatePageLanguage() { // Update HTML lang attribute document.documentElement.lang = i18next.language; // Update elements with data-i18n attribute document.querySelectorAll('[data-i18n]').forEach(el => { const key = el.getAttribute('data-i18n'); el.textContent = t(key); }); } // Copy command function function copyCommand() { const command = document.getElementById('installCommand').textContent; const btn = document.getElementById('copyBtn'); navigator.clipboard.writeText(command).then(() => { btn.textContent = t('copied'); btn.classList.add('copied'); setTimeout(() => { btn.textContent = t('copy'); btn.classList.remove('copied'); }, 2000); }).catch(() => { // Fallback for non-HTTPS const textArea = document.createElement('textarea'); textArea.value = command; textArea.style.position = 'fixed'; textArea.style.left = '-9999px'; document.body.appendChild(textArea); textArea.select(); document.execCommand('copy'); document.body.removeChild(textArea); btn.textContent = t('copied'); btn.classList.add('copied'); setTimeout(() => { btn.textContent = t('copy'); btn.classList.remove('copied'); }, 2000); }); } // Initialize document.getElementById('copyBtn').addEventListener('click', copyCommand); initI18n(); // 异步加载相关 Skills async function loadRelatedSkills() { const owner = 'omer-metin'; const skillName = 'growth-strategy'; const currentLang = 'ko'; const listContainer = document.getElementById('relatedSkillsList'); const section = document.getElementById('relatedSkillsSection'); try { const response = await fetch(`/api/related-skills/${encodeURIComponent(owner)}/${encodeURIComponent(skillName)}?limit=6`); if (!response.ok) { throw new Error('Failed to load'); } const data = await response.json(); const relatedSkills = data.related_skills || []; if (relatedSkills.length === 0) { // 没有相关推荐时隐藏整个区域 section.style.display = 'none'; return; } // 渲染相关 Skills listContainer.innerHTML = relatedSkills.map(skill => { const desc = skill.description || ''; const truncatedDesc = desc.length > 60 ? desc.substring(0, 60) + '...' : desc; return ` <a href="${currentLang === 'en' ? '' : '/' + currentLang}/skill/${skill.owner}/${skill.repo}/${skill.skill_name}" class="related-card"> <div class="related-name">${escapeHtml(skill.skill_name)}</div> <div class="related-meta"> <span class="related-owner">${escapeHtml(skill.owner)}</span> <span class="related-installs">${skill.installs}</span> </div> <div class="related-desc">${escapeHtml(truncatedDesc)}</div> </a> `; }).join(''); } catch (error) { console.error('Failed to load related skills:', error); // 加载失败时显示提示或隐藏 listContainer.innerHTML = '<div class="related-empty">暂无相关推荐</div>'; } } // HTML 转义 function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } // 页面加载完成后异步加载相关 Skills if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', loadRelatedSkills); } else { loadRelatedSkills(); } </script> </body> </html>