@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.
Files changed (2) hide show
  1. package/dist/index.js +34 -85
  2. 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.5.5',
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 research checklist and strategy guide to prepare for screenshot generation. Call this BEFORE generate-screenshots to know what to look for in the codebase. Free no API call or credits needed.
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 codebase research checklist (file patterns to search for each tech stack)
675
- - Story flow recommendations by app category
676
- - Tips for writing compelling screenshot headlines
677
- - The codebase_context schema to fill in
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
- This tool helps you gather the right information so generate-screenshots produces the best possible output on the first try.`,
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 if known — e.g. fitness, finance, social, productivity, developer-tools'),
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
- // Story flow recommendations
759
- const storyFlows = [
760
- '',
761
- '---',
762
- '',
763
- '# Story Flow Recommendations',
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
- else {
832
- storyFlows.push('**General recommendations by app type:**', '');
833
- for (const [, lines] of Object.entries(categoryRecommendations)) {
834
- storyFlows.push(...lines, '');
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: [...checklist, ...storyFlows, ...headlineTips, ...deviceTips, ...schemaReminder].join('\n'),
853
+ text: [...categoryBlock, ...checklist, ...headlineTips, ...deviceTips, ...schemaReminder].join('\n'),
905
854
  }],
906
855
  };
907
856
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appscreenshotstudio/mcp",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "MCP server for generating App Store screenshots via AppScreenshotStudio",
5
5
  "type": "module",
6
6
  "license": "MIT",