@appscreenshotstudio/mcp 0.6.0 → 0.6.1
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/dist/index.js +34 -85
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -192,7 +192,7 @@ const chatImagesSchema = z.array(z.object({
|
|
|
192
192
|
// ─── MCP Server ─────────────────────────────────────────────────────────────────
|
|
193
193
|
const server = new McpServer({
|
|
194
194
|
name: 'appscreenshotstudio',
|
|
195
|
-
version: '0.
|
|
195
|
+
version: '0.6.1',
|
|
196
196
|
});
|
|
197
197
|
// Tool 1: generate-screenshots
|
|
198
198
|
server.registerTool('generate-screenshots', {
|
|
@@ -668,18 +668,20 @@ Good prompts describe a continuous scene, not objects or text:
|
|
|
668
668
|
// Tool 8: prepare-screenshot-brief
|
|
669
669
|
server.registerTool('prepare-screenshot-brief', {
|
|
670
670
|
title: 'Prepare Screenshot Brief',
|
|
671
|
-
description: `Get a
|
|
671
|
+
description: `Get a category playbook and repo-research checklist to prepare for screenshot generation. Call this BEFORE generate-screenshots. Free (no credits).
|
|
672
|
+
|
|
673
|
+
Pass app_category to get category-specific guidance pulled live from AppScreenshotStudio: the frame-1 hook playbook (default layout, what to avoid, caption patterns), the recommended story_flow and mood, and the exact facts to dig out of THIS app's repo for its category (e.g. security and compliance signals for finance, real gameplay art for games, the outcome for fitness).
|
|
672
674
|
|
|
673
675
|
Returns:
|
|
674
|
-
- A
|
|
675
|
-
-
|
|
676
|
-
-
|
|
677
|
-
-
|
|
676
|
+
- A category playbook (frame-1 hooks + layout + arc + mood) for the app_category
|
|
677
|
+
- A category-specific repo research focus (what to grep this app for)
|
|
678
|
+
- A generic codebase research checklist (file patterns per tech stack)
|
|
679
|
+
- Headline tips + the codebase_context schema to fill in
|
|
678
680
|
|
|
679
|
-
|
|
681
|
+
The more you gather here, the better generate-screenshots does on the first try.`,
|
|
680
682
|
inputSchema: z.object({
|
|
681
683
|
app_category: z.string().optional()
|
|
682
|
-
.describe('App category
|
|
684
|
+
.describe('App category, e.g. fitness, finance, gaming, social, productivity, health, travel, wellness. Drives the category playbook this tool returns; synonyms are normalized server-side.'),
|
|
683
685
|
platform: z.enum(['ios', 'android', 'both']).default('ios')
|
|
684
686
|
.describe('Target platform'),
|
|
685
687
|
}),
|
|
@@ -755,84 +757,31 @@ This tool helps you gather the right information so generate-screenshots produce
|
|
|
755
757
|
'- Main navigation → what users do most',
|
|
756
758
|
'- Key interactions → what makes the app satisfying to use',
|
|
757
759
|
];
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
''
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
const categoryRecommendations = {
|
|
767
|
-
'fitness': [
|
|
768
|
-
'**Fitness apps → `journey` or `benefit-first`**',
|
|
769
|
-
'- Lead with transformation: "Before → After" or "Track → Improve → Achieve"',
|
|
770
|
-
'- Highlight: workout tracking, progress charts, streaks, community challenges',
|
|
771
|
-
'- Mood: energetic or bold',
|
|
772
|
-
],
|
|
773
|
-
'finance': [
|
|
774
|
-
'**Finance apps → `benefit-first` or `problem-solution`**',
|
|
775
|
-
'- Lead with outcomes: "Save $X/month" or "See all accounts in one place"',
|
|
776
|
-
'- Highlight: dashboards, charts, budgets, alerts, security',
|
|
777
|
-
'- Mood: professional or calm',
|
|
778
|
-
],
|
|
779
|
-
'social': [
|
|
780
|
-
'**Social apps → `social-proof-bookend` or `hero-intro`**',
|
|
781
|
-
'- Lead with community: "Join 1M+ users" or show vibrant UI',
|
|
782
|
-
'- Highlight: feed, messaging, profiles, discovery, sharing',
|
|
783
|
-
'- Mood: playful or energetic',
|
|
784
|
-
],
|
|
785
|
-
'productivity': [
|
|
786
|
-
'**Productivity apps → `problem-solution` or `standard`**',
|
|
787
|
-
'- Lead with pain point: "Stop juggling 5 apps" → "One place for everything"',
|
|
788
|
-
'- Highlight: task management, collaboration, integrations, speed',
|
|
789
|
-
'- Mood: minimal or professional',
|
|
790
|
-
],
|
|
791
|
-
'food': [
|
|
792
|
-
'**Food/recipe apps → `hero-intro` or `journey`**',
|
|
793
|
-
'- Lead with beautiful imagery or the discovery experience',
|
|
794
|
-
'- Highlight: recipe browsing, meal planning, grocery lists, cooking mode',
|
|
795
|
-
'- Mood: warm or playful',
|
|
796
|
-
],
|
|
797
|
-
'travel': [
|
|
798
|
-
'**Travel apps → `journey` or `hero-intro`**',
|
|
799
|
-
'- Lead with destination discovery or trip planning flow',
|
|
800
|
-
'- Highlight: search, booking, itinerary, maps, offline access',
|
|
801
|
-
'- Mood: energetic or calm',
|
|
802
|
-
],
|
|
803
|
-
'health': [
|
|
804
|
-
'**Health/wellness apps → `benefit-first` or `journey`**',
|
|
805
|
-
'- Lead with outcomes: "Sleep better", "Feel calmer", "Know your body"',
|
|
806
|
-
'- Highlight: tracking, insights, reminders, progress, professional guidance',
|
|
807
|
-
'- Mood: calm or professional',
|
|
808
|
-
],
|
|
809
|
-
'education': [
|
|
810
|
-
'**Education apps → `journey` or `hero-intro`**',
|
|
811
|
-
'- Lead with learning progression or "learn anything" hero',
|
|
812
|
-
'- Highlight: courses, progress tracking, quizzes, certificates, offline',
|
|
813
|
-
'- Mood: playful or professional',
|
|
814
|
-
],
|
|
815
|
-
'developer-tools': [
|
|
816
|
-
'**Developer tools → `problem-solution` or `benefit-first`**',
|
|
817
|
-
'- Lead with workflow pain: "Stop copy-pasting" → "One command and done"',
|
|
818
|
-
'- Highlight: CLI, integrations, speed, DX, code examples',
|
|
819
|
-
'- Mood: minimal or bold',
|
|
820
|
-
],
|
|
821
|
-
'shopping': [
|
|
822
|
-
'**Shopping/e-commerce → `social-proof-bookend` or `benefit-first`**',
|
|
823
|
-
'- Lead with deals or trust: "Trusted by 500K+ shoppers"',
|
|
824
|
-
'- Highlight: discovery, search, wishlists, checkout, tracking',
|
|
825
|
-
'- Mood: bold or energetic',
|
|
826
|
-
],
|
|
827
|
-
};
|
|
828
|
-
if (app_category && categoryRecommendations[app_category]) {
|
|
829
|
-
storyFlows.push(...categoryRecommendations[app_category]);
|
|
760
|
+
let playbook = null;
|
|
761
|
+
try {
|
|
762
|
+
const res = await fetch(`${API_BASE}/api/v1/playbook?category=${encodeURIComponent(app_category ?? '')}`);
|
|
763
|
+
if (res.ok) {
|
|
764
|
+
const json = (await res.json());
|
|
765
|
+
if (json?.data)
|
|
766
|
+
playbook = json.data;
|
|
767
|
+
}
|
|
830
768
|
}
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
769
|
+
catch {
|
|
770
|
+
// offline or endpoint unavailable: the generic checklist still stands
|
|
771
|
+
}
|
|
772
|
+
const categoryBlock = [];
|
|
773
|
+
if (playbook && playbook.depth !== 'general') {
|
|
774
|
+
categoryBlock.push(`# Category Playbook: ${playbook.label}`, '', `Recommended \`story_flow\`: \`${playbook.arc}\` | \`mood\`: \`${playbook.mood}\``, '', '## Research this app for its category', `These are what a ${playbook.label.toLowerCase()} frame 1 lives or dies on. Dig them out of the repo before generating:`, ...playbook.researchFocus.map((r) => `- ${r}`), '');
|
|
775
|
+
if (playbook.frame1) {
|
|
776
|
+
categoryBlock.push('## Frame 1 (the hook) for this category', `Default layout: \`${playbook.frame1.defaultLayout}\`. Avoid: ${playbook.frame1.avoidLayouts.map((l) => `\`${l}\``).join(', ')}.`, `Why: ${playbook.frame1.rationale}`, '', 'Pick the hook that fits the app, then write the headline from its caption pattern:', ...playbook.frame1.hooks.map((h) => `- **${h.name}** (${h.layout}): ${h.shows}. Caption: ${h.captionPattern}`), '');
|
|
777
|
+
}
|
|
778
|
+
if (playbook.patternsToAvoid && playbook.patternsToAvoid.length) {
|
|
779
|
+
categoryBlock.push('## Avoid for this category', ...playbook.patternsToAvoid.map((p) => `- ${p}`), '');
|
|
780
|
+
}
|
|
781
|
+
if (playbook.highlights && playbook.highlights.length) {
|
|
782
|
+
categoryBlock.push(`Highlights worth surfacing: ${playbook.highlights.join(', ')}.`, '');
|
|
835
783
|
}
|
|
784
|
+
categoryBlock.push('---', '');
|
|
836
785
|
}
|
|
837
786
|
// Headline tips
|
|
838
787
|
const headlineTips = [
|
|
@@ -901,7 +850,7 @@ This tool helps you gather the right information so generate-screenshots produce
|
|
|
901
850
|
return {
|
|
902
851
|
content: [{
|
|
903
852
|
type: 'text',
|
|
904
|
-
text: [...
|
|
853
|
+
text: [...categoryBlock, ...checklist, ...headlineTips, ...deviceTips, ...schemaReminder].join('\n'),
|
|
905
854
|
}],
|
|
906
855
|
};
|
|
907
856
|
});
|