You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Generate JSON-LD structured data for skills (GEO-optimized)
94
+
consttoday=newDate().toISOString().split('T')[0];
94
95
constskillsJsonLd=skills.map(s=>({
95
96
"@type": "SoftwareApplication",
96
97
"name": s.name,
97
98
"description": s.description,
98
99
"applicationCategory": "DeveloperApplication",
99
100
"operatingSystem": "Cross-platform",
101
+
"softwareVersion": s.version,
102
+
"datePublished": "2024-01-01",
103
+
"dateModified": today,
100
104
"offers": {
101
105
"@type": "Offer",
102
-
"price": s.auth.required ? "0" : "0",
103
-
"priceCurrency": "USD"
106
+
"price": "0",
107
+
"priceCurrency": "USD",
108
+
"availability": "https://schema.org/InStock"
104
109
},
105
-
"url": `https://opc.dev/#skill-${s.name}`
110
+
"url": `https://opc.dev/skills/${s.name}`
106
111
}));
107
112
113
+
// GEO: Generate FAQPage schema for AI citation optimization (+40% visibility)
114
+
constfaqItems=skills.slice(0,5).map(s=>({
115
+
"@type": "Question",
116
+
"name": `What is ${s.name}?`,
117
+
"acceptedAnswer": {
118
+
"@type": "Answer",
119
+
"text": `${s.name} is an agent skill for AI coding assistants. ${s.description} Install it with: curl -fsSL opc.dev/install.sh | bash -s -- -t claude ${s.name}`
120
+
}
121
+
}));
122
+
faqItems.push({
123
+
"@type": "Question",
124
+
"name": "What is OPC Skills?",
125
+
"acceptedAnswer": {
126
+
"@type": "Answer",
127
+
"text": "OPC Skills is a curated collection of agent skills for solopreneurs and indie hackers. These skills extend AI coding assistants like Claude Code, Factory Droid, Cursor, OpenCode, and Codex with capabilities like domain hunting, social media research, and product analytics. One-click install for all major platforms."
128
+
}
129
+
});
130
+
faqItems.push({
131
+
"@type": "Question",
132
+
"name": "How do I install OPC Skills?",
133
+
"acceptedAnswer": {
134
+
"@type": "Answer",
135
+
"text": "Run this command in your terminal: curl -fsSL opc.dev/install.sh | bash -s -- -t claude all. Replace 'claude' with your preferred platform (droid, cursor, opencode, codex) and 'all' with a specific skill name if desired."
136
+
}
137
+
});
138
+
108
139
constjsonLd={
109
140
"@context": "https://schema.org",
110
141
"@graph": [
142
+
{
143
+
"@type": "WebPage",
144
+
"@id": "https://opc.dev/#webpage",
145
+
"url": "https://opc.dev",
146
+
"name": "OPC Skills - Agent Skills for One Person Companies",
147
+
"description": "Curated agent skills for solopreneurs and indie hackers. One-click install for Claude, Droid, Cursor, and more.",
"description": "Agent skills for one person companies",
182
+
"description": `${skills.length} agent skills for one person companies, supporting 5 platforms: Claude Code, Factory Droid, Cursor, OpenCode, and Codex.`,
<meta name="twitter:title" content="OPC Skills - Agent Skills for One Person Companies">
234
285
<meta name="twitter:description" content="Curated agent skills for solopreneurs and indie hackers. One-click install for Claude, Droid, Cursor, and more.">
"text": `${skill.name} is an agent skill for AI coding assistants like Claude Code, Factory Droid, and Cursor. ${skill.description}`
929
+
}
930
+
},
931
+
{
932
+
"@type": "Question",
933
+
"name": `How do I install ${skill.name}?`,
934
+
"acceptedAnswer": {
935
+
"@type": "Answer",
936
+
"text": `Install ${skill.name} by running: curl -fsSL opc.dev/install.sh | bash -s -- -t claude ${skill.name}. Replace 'claude' with your preferred platform (droid, cursor, opencode, codex).`
937
+
}
938
+
},
939
+
{
940
+
"@type": "Question",
941
+
"name": `Does ${skill.name} require an API key?`,
942
+
"acceptedAnswer": {
943
+
"@type": "Answer",
944
+
"text": skill.auth.required ? `Yes, ${skill.name} requires an API key. ${skill.auth.note||''}` : `No, ${skill.name} is free to use and does not require an API key.`
945
+
}
946
+
}
947
+
]
835
948
}
836
949
]
837
950
};
@@ -857,6 +970,12 @@ async function renderSkillPage(skillName, ctx) {
0 commit comments