parent
d7e898586a
commit
7deaff47c9
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: /github sponsors profile
|
||||
subtitle: Improve your GitHub Sponsors profile with AI-powered prompts
|
||||
hide_platform_selector: true
|
||||
hide_extension_link: true
|
||||
hide_tone_selector: true
|
||||
subpage: true
|
||||
body_class: sponsors
|
||||
---
|
||||
|
||||
<script src="script.js"></script>
|
@ -0,0 +1,142 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"category": "Crafting a Compelling Bio",
|
||||
"title": "Create a Professional Bio",
|
||||
"prompt": "Write a GitHub Sponsors bio for my profile that highlights my experience in [your field], the impact of my open source work, and my commitment to community growth.",
|
||||
"tags": ["bio", "profile", "introduction"]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"category": "Crafting a Compelling Bio",
|
||||
"title": "Showcase Top Repositories",
|
||||
"prompt": "Summarize my top three repositories ([repo1], [repo2], [repo3]) in a way that inspires potential sponsors to support my work.",
|
||||
"tags": ["bio", "repositories", "showcase"]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"category": "Explaining Why Funding Matters",
|
||||
"title": "Explain Funding Impact",
|
||||
"prompt": "Create a section for my Sponsors page that explains how funding will help me dedicate more time to [project/topics], support new contributors, and ensure the sustainability of my open source work.",
|
||||
"tags": ["funding", "impact", "sustainability"]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"category": "Explaining Why Funding Matters",
|
||||
"title": "Show Direct Impact",
|
||||
"prompt": "Write a paragraph that shows sponsors the direct impact their funding will have on my projects and the wider community.",
|
||||
"tags": ["funding", "impact", "community"]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"category": "Unlocking New Pricing Tiers",
|
||||
"title": "Suggest Pricing Tiers",
|
||||
"prompt": "Suggest ideas for pricing tiers on GitHub Sponsors, including unique benefits at each level for individuals and companies.",
|
||||
"tags": ["pricing", "tiers", "benefits"]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"category": "Unlocking New Pricing Tiers",
|
||||
"title": "Write Tier Descriptions",
|
||||
"prompt": "Write descriptions for three GitHub Sponsors tiers ($5, $25, $100) that offer increasing value and recognition to supporters.",
|
||||
"tags": ["pricing", "tiers", "descriptions"]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"category": "Spotlighting Your Project",
|
||||
"title": "Create Project Spotlight",
|
||||
"prompt": "Draft a brief 'Project Spotlight' section for my Sponsors page, showcasing the goals, achievements, and roadmap of [project name].",
|
||||
"tags": ["project", "spotlight", "roadmap"]
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"category": "Spotlighting Your Project",
|
||||
"title": "Announce Milestone",
|
||||
"prompt": "Write an announcement for my Sponsors page about a new milestone or feature in [project], encouraging new and existing sponsors to get involved.",
|
||||
"tags": ["project", "milestone", "announcement"]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"category": "Enhancing Community Engagement",
|
||||
"title": "Recognize Sponsors",
|
||||
"prompt": "List ways I can recognize or involve sponsors in my project's community (e.g., special Discord roles, early feature access, private Q&A sessions).",
|
||||
"tags": ["community", "engagement", "recognition"]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"category": "Enhancing Community Engagement",
|
||||
"title": "Creative Perks",
|
||||
"prompt": "Suggest creative perks or acknowledgments for sponsors to foster a sense of belonging and appreciation.",
|
||||
"tags": ["community", "perks", "appreciation"]
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"category": "Crafting a Compelling Bio",
|
||||
"title": "Tell Your Story",
|
||||
"prompt": "Write a personal story about why I started contributing to open source, what drives me, and how sponsorship helps me continue this journey in [field/technology].",
|
||||
"tags": ["bio", "story", "personal"]
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"category": "Explaining Why Funding Matters",
|
||||
"title": "Break Down Costs",
|
||||
"prompt": "Create a transparent breakdown of how sponsor funds will be used (e.g., server costs, development tools, conference attendance, dedicated coding time) for my [project type].",
|
||||
"tags": ["funding", "transparency", "costs"]
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"category": "Unlocking New Pricing Tiers",
|
||||
"title": "Enterprise Sponsorship",
|
||||
"prompt": "Design enterprise-level sponsorship tiers ($500, $1000, $5000) with benefits like priority support, custom features, and brand visibility for my [project].",
|
||||
"tags": ["pricing", "enterprise", "tiers"]
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"category": "Spotlighting Your Project",
|
||||
"title": "Impact Metrics",
|
||||
"prompt": "Create a compelling data-driven section showing the impact of [project name]: downloads, users helped, issues resolved, and community growth statistics.",
|
||||
"tags": ["project", "metrics", "impact"]
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"category": "Enhancing Community Engagement",
|
||||
"title": "Sponsor Hall of Fame",
|
||||
"prompt": "Design a 'Sponsor Hall of Fame' section for my README and Sponsors page that creatively showcases and thanks all contributors at different tiers.",
|
||||
"tags": ["community", "recognition", "readme"]
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"category": "Crafting a Compelling Bio",
|
||||
"title": "Future Vision",
|
||||
"prompt": "Write a compelling vision statement about where I see [project/work] going in the next 2-3 years and how sponsors can be part of that journey.",
|
||||
"tags": ["bio", "vision", "future"]
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"category": "Explaining Why Funding Matters",
|
||||
"title": "Time Commitment",
|
||||
"prompt": "Explain how sponsorship would allow me to dedicate [X hours/days] per week/month to open source, comparing current volunteer time vs. potential sponsored time.",
|
||||
"tags": ["funding", "time", "commitment"]
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"category": "Unlocking New Pricing Tiers",
|
||||
"title": "Student Tier",
|
||||
"prompt": "Create a special $1-2 student sponsorship tier with meaningful benefits that acknowledges their support while respecting their budget.",
|
||||
"tags": ["pricing", "students", "accessibility"]
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"category": "Spotlighting Your Project",
|
||||
"title": "Success Stories",
|
||||
"prompt": "Write 3-5 brief success stories or testimonials from users who have benefited from [project name], showing real-world impact.",
|
||||
"tags": ["project", "testimonials", "success"]
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"category": "Enhancing Community Engagement",
|
||||
"title": "Monthly Updates",
|
||||
"prompt": "Create a template for monthly sponsor updates that includes progress, challenges, wins, and upcoming features for [project].",
|
||||
"tags": ["community", "updates", "communication"]
|
||||
}
|
||||
]
|
@ -0,0 +1,208 @@
|
||||
// GitHub Sponsors Profile Improver Script
|
||||
|
||||
// Dark mode functionality (global scope for onclick handler)
|
||||
window.toggleDarkMode = function() {
|
||||
const body = document.body;
|
||||
const toggle = document.querySelector(".dark-mode-toggle");
|
||||
const sunIcon = toggle.querySelector(".sun-icon");
|
||||
const moonIcon = toggle.querySelector(".moon-icon");
|
||||
|
||||
body.classList.toggle("dark-mode");
|
||||
const isDarkMode = body.classList.contains("dark-mode");
|
||||
|
||||
localStorage.setItem("dark-mode", isDarkMode);
|
||||
sunIcon.style.display = isDarkMode ? "none" : "block";
|
||||
moonIcon.style.display = isDarkMode ? "block" : "none";
|
||||
};
|
||||
|
||||
(function() {
|
||||
let sponsorPrompts = [];
|
||||
|
||||
// Load prompts from JSON file
|
||||
async function loadSponsorsPrompts() {
|
||||
try {
|
||||
const response = await fetch('/sponsors/prompts.json');
|
||||
sponsorPrompts = await response.json();
|
||||
renderSponsorsPrompts();
|
||||
renderSidebarPrompts();
|
||||
} catch (error) {
|
||||
console.error('Error loading prompts:', error);
|
||||
const container = document.querySelector('#promptContent');
|
||||
if (container) {
|
||||
container.innerHTML = '<p style="text-align: center; padding: 2rem; color: var(--text-secondary);">Error loading prompts. Please try again later.</p>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Copy prompt to clipboard
|
||||
window.copySponsorPrompt = function(button, promptText) {
|
||||
navigator.clipboard.writeText(promptText).then(() => {
|
||||
const originalHTML = button.innerHTML;
|
||||
button.innerHTML = `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="20 6 9 17 4 12"></polyline>
|
||||
</svg>
|
||||
`;
|
||||
button.style.background = '#10b981';
|
||||
|
||||
setTimeout(() => {
|
||||
button.innerHTML = originalHTML;
|
||||
button.style.background = '';
|
||||
}, 2000);
|
||||
}).catch(err => {
|
||||
console.error('Failed to copy:', err);
|
||||
});
|
||||
}
|
||||
|
||||
// Open prompt in GitHub Copilot
|
||||
window.openInCopilot = function(promptText) {
|
||||
const encodedPrompt = encodeURIComponent(promptText);
|
||||
const copilotUrl = `https://github.com/copilot?prompt=${encodedPrompt}`;
|
||||
window.open(copilotUrl, '_blank');
|
||||
}
|
||||
|
||||
// Render prompts in the sidebar
|
||||
function renderSidebarPrompts() {
|
||||
const searchResults = document.getElementById('searchResults');
|
||||
if (searchResults && sponsorPrompts.length > 0) {
|
||||
searchResults.innerHTML = sponsorPrompts.map(prompt => `
|
||||
<li class="search-result-item" onclick="scrollToPrompt('${prompt.title.replace(/'/g, "\\'")}')">${prompt.title}</li>
|
||||
`).join('');
|
||||
}
|
||||
}
|
||||
|
||||
// Scroll to prompt card function
|
||||
window.scrollToPrompt = function(title) {
|
||||
const cards = document.querySelectorAll('.prompt-card');
|
||||
const targetCard = Array.from(cards).find(card => {
|
||||
const cardTitle = card.querySelector('.prompt-title')?.textContent?.trim();
|
||||
return cardTitle && cardTitle.includes(title);
|
||||
});
|
||||
|
||||
if (targetCard) {
|
||||
targetCard.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
targetCard.style.transform = 'scale(1.02)';
|
||||
targetCard.style.boxShadow = '0 8px 16px rgba(16, 185, 129, 0.2)';
|
||||
targetCard.style.borderColor = '#10b981';
|
||||
|
||||
setTimeout(() => {
|
||||
targetCard.style.transform = '';
|
||||
targetCard.style.boxShadow = '';
|
||||
targetCard.style.borderColor = '';
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
|
||||
// Render prompts in the main content area
|
||||
function renderSponsorsPrompts() {
|
||||
const container = document.querySelector('#promptContent');
|
||||
if (!container) return;
|
||||
|
||||
let html = '<div class="prompts-grid">';
|
||||
|
||||
// Add a contribute card first (matching main site style)
|
||||
html += `
|
||||
<div class="prompt-card contribute-card">
|
||||
<a href="https://github.com/f/awesome-chatgpt-prompts/blob/main/sponsors/prompts.json" target="_blank" style="text-decoration: none; color: inherit; height: 100%; display: flex; flex-direction: column;">
|
||||
<div class="prompt-title" style="display: flex; align-items: center; gap: 8px;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="10"></circle>
|
||||
<line x1="12" y1="8" x2="12" y2="16"></line>
|
||||
<line x1="8" y1="12" x2="16" y2="12"></line>
|
||||
</svg>
|
||||
Add Your Sponsors Prompt
|
||||
</div>
|
||||
<p class="prompt-content" style="flex-grow: 1;">
|
||||
Have a great prompt for improving GitHub Sponsors profiles? Contribute to <code>sponsors/prompts.json</code> in our repository!
|
||||
</p>
|
||||
<span class="contributor-badge">Contribute Now</span>
|
||||
</a>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Add all prompts
|
||||
sponsorPrompts.forEach(prompt => {
|
||||
html += `
|
||||
<div class="prompt-card">
|
||||
<div class="prompt-title">
|
||||
${prompt.title}
|
||||
<div class="action-buttons">
|
||||
<button class="copy-button" title="Copy prompt" onclick="copySponsorPrompt(this, \`${prompt.prompt.replace(/`/g, '\\`')}\`)">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path>
|
||||
<rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect>
|
||||
</svg>
|
||||
</button>
|
||||
<button class="copy-button" title="Try in GitHub Copilot" onclick="openInCopilot(\`${prompt.prompt.replace(/`/g, '\\`')}\`)">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<p class="prompt-content">${prompt.prompt}</p>
|
||||
<div class="card-footer">
|
||||
<div class="techstack-badges">
|
||||
${prompt.tags.map(tag => `<span class="tech-badge">${tag}</span>`).join('')}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
});
|
||||
|
||||
html += '</div>';
|
||||
container.innerHTML = html;
|
||||
|
||||
// Update prompt count
|
||||
const countElement = document.getElementById('promptCount');
|
||||
if (countElement) {
|
||||
const countNumber = countElement.querySelector('.count-number');
|
||||
if (countNumber) {
|
||||
countNumber.textContent = sponsorPrompts.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch GitHub stars
|
||||
async function fetchGitHubStars() {
|
||||
try {
|
||||
const response = await fetch('https://api.github.com/repos/f/awesome-chatgpt-prompts');
|
||||
const data = await response.json();
|
||||
const starCount = document.getElementById('starCount');
|
||||
if (starCount) {
|
||||
starCount.textContent = data.stargazers_count.toLocaleString();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error fetching GitHub stars:', error);
|
||||
const starCount = document.getElementById('starCount');
|
||||
if (starCount) {
|
||||
starCount.textContent = '110k+'; // Fallback value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize when DOM is ready
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Check if we're on the sponsors page
|
||||
if (document.body.classList.contains('sponsors')) {
|
||||
loadSponsorsPrompts();
|
||||
fetchGitHubStars();
|
||||
|
||||
// Hide cursor badge on sponsors page
|
||||
const cursorLogo = document.querySelector('.cursor-logo');
|
||||
if (cursorLogo) {
|
||||
cursorLogo.style.display = 'none';
|
||||
}
|
||||
|
||||
// Apply dark mode preference
|
||||
const isDarkMode = localStorage.getItem("dark-mode") === "true";
|
||||
if (isDarkMode) {
|
||||
document.body.classList.add("dark-mode");
|
||||
const sunIcon = document.querySelector(".sun-icon");
|
||||
const moonIcon = document.querySelector(".moon-icon");
|
||||
if (sunIcon) sunIcon.style.display = "none";
|
||||
if (moonIcon) moonIcon.style.display = "block";
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
Loading…
Reference in new issue