UNPKG

story-weaver-ai

Version:

A narrative development system for AI-driven storytelling with Jungian psychology

504 lines (351 loc) 15.6 kB
# Story Weaver ### by [@seanpavlak](https://github.com/seanpavlak) - Reimagined with Jungian psychology A story writing management system for creative storytelling with Jungian psychology influences, designed to work seamlessly with Cursor AI. ## Overview Story Weaver helps writers develop rich, psychologically complex narratives by breaking down story concepts into elements infused with Jungian archetypes, symbols, and psychological patterns. The tool assists in: - Parsing story concepts and generating structured narrative elements - Maintaining structured archetypes, themes, and psychological motifs - Tracking dependencies between narrative components - Expanding story elements with Jungian-inspired subelements - Providing psychological analysis and archetypal interpretation ## Requirements - Node.js 14.0.0 or higher - Anthropic API key (Claude API) - Anthropic SDK version 0.39.0 or higher - OpenAI SDK (for Perplexity API integration, optional for research) ## Configuration The script can be configured through environment variables in a `.env` file at the root of the project: ### Required Configuration - `ANTHROPIC_API_KEY`: Your Anthropic API key for Claude ### Optional Configuration - `MODEL`: Specify which Claude model to use (default: "claude-3-7-sonnet-20250219") - `MAX_TOKENS`: Maximum tokens for model responses (default: 4000) - `TEMPERATURE`: Temperature for model responses (default: 0.7) - `PERPLEXITY_API_KEY`: Your Perplexity API key for research-backed subelement generation - `PERPLEXITY_MODEL`: Specify which Perplexity model to use (default: "sonar-medium-online") - `DEBUG`: Enable debug logging (default: false) - `LOG_LEVEL`: Log level - debug, info, warn, error (default: info) - `DEFAULT_SUBELEMENTS`: Default number of subelements when expanding (default: 3) - `DEFAULT_PRIORITY`: Default priority for generated elements (default: medium) - `STORY_NAME`: Override default story name in elements.json - `STORY_VERSION`: Override default version in elements.json ## Installation ```bash npm install -g story-weaver-ai ``` ### Troubleshooting Installation If you encounter permission errors when installing globally (`EACCES` error), you have two options: #### Option 1: Use sudo (quick but not recommended) ```bash sudo npm install -g story-weaver-ai ``` #### Option 2: Fix npm permissions (recommended) Change npm's default directory to one you own: ```bash mkdir ~/.npm-global npm config set prefix '~/.npm-global' export PATH=~/.npm-global/bin:$PATH ``` Add the export line to your shell profile (~/.bash_profile, ~/.zshrc, etc.) to make it permanent. ### Initialize a new story project ```bash # If installed globally story-weaver init # If installed locally npx story-weaver-init ``` This will prompt you for project details and set up a new story project with the necessary files and structure. ### Important Notes 1. This package uses ES modules. Your package.json should include `"type": "module"`. 2. The Anthropic SDK version should be 0.39.0 or higher. ## Quick Start with Global Commands After installing the package globally, you can use these CLI commands from any directory: ```bash # Initialize a new story project story-weaver init # Parse a story concept and generate elements story-weaver parse-concept your-concept.txt # List all story elements story-weaver list # Show the next element to develop story-weaver next # Generate element files story-weaver generate ``` ## Jungian Psychology in Storytelling Story Weaver incorporates key concepts from Jungian psychology to enrich your storytelling: ### Core Archetypes - **Hero/Heroine**: The protagonist on a journey of growth and transformation - **Shadow**: The dark, rejected aspects of the self that must be confronted - **Anima/Animus**: The feminine/masculine aspects within the psyche - **Mentor/Wise Old Man/Woman**: Guide who provides wisdom and support - **Trickster**: Agent of chaos and transformation who challenges assumptions - **Mother/Father**: Nurturing or authoritative archetypal influences - **Child**: Innocence, vulnerability, and potential for growth - **Persona**: The social mask we present to the world - **Self**: The integrated whole, representing psychological completeness ### Psychological Concepts - **Collective Unconscious**: Shared reservoir of archetypal images and patterns - **Individuation**: The psychological process of integrating the unconscious with consciousness - **Shadow Integration**: Confronting and accepting the repressed aspects of the self - **Synchronicity**: Meaningful coincidences that aren't causally connected - **Dream Analysis**: Using dreams as a window into the unconscious - **Symbolism**: Unconscious expression through symbolic patterns and images ## Story Element Structure Elements in elements.json have the following structure: - `id`: Unique identifier for the element (Example: `1`) - `title`: Brief, descriptive title of the element (Example: `"The Protagonist's Shadow"`) - `description`: Concise description of what the element involves (Example: `"The protagonist confronts their repressed rage"`) - `status`: Current state of the element (Example: `"draft"`, `"developing"`, `"complete"`) - `dependencies`: IDs of elements that must be developed before this element (Example: `[1, 2]`) - `archetypes`: Jungian archetypes involved in this element (Example: `["Hero", "Shadow"]`) - `themes`: Psychological themes or motifs (Example: `["Rebirth", "Integration"]`) - `priority`: Importance level of the element (Example: `"high"`, `"medium"`, `"low"`) - `details`: In-depth narrative development (Example: `"In a dream sequence, the protagonist faces their dark impulses..."`) - `criticalAnalysis`: Jungian psychological interpretation (Example: `"This represents the shadow integration phase..."`) - `subelements`: List of smaller, more specific narrative components (Example: `[{"id": 1, "title": "Dream Confrontation", ...}]`) ## Integrating with Cursor AI Story Weaver is designed to work seamlessly with [Cursor AI](https://www.cursor.so/), providing a structured workflow for AI-assisted story development. ### Setup with Cursor 1. After initializing your project, open it in Cursor 2. The `.cursor/rules/workflow.mdc` file is automatically loaded by Cursor, providing the AI with knowledge about the story management system 3. Place your concept document in the `scripts/` directory (e.g., `scripts/concept.txt`) 4. Open Cursor's AI chat and switch to Agent mode ### Initial Element Generation In Cursor's AI chat, instruct the agent to generate elements from your concept: ``` Please use the story-weaver parse-concept command to generate elements from my story concept. The concept is located at scripts/concept.txt. ``` The agent will execute: ```bash story-weaver parse-concept scripts/concept.txt ``` This will: - Parse your concept document - Generate a structured `elements.json` file with elements, archetypes, themes, and psychological analysis - The agent will understand this process due to the Cursor rules ### Generate Individual Element Files Next, ask the agent to generate individual element files: ``` Please generate individual element files from elements.json ``` The agent will execute: ```bash story-weaver generate ``` This creates individual element files in the `elements/` directory (e.g., `element_001.md`, `element_002.md`), making it easier to reference specific narrative elements. ## AI-Driven Story Development Workflow The Cursor agent is pre-configured (via the rules file) to follow this workflow: ### 1. Element Discovery and Selection Ask the agent to list available elements: ``` What story elements are available to work on next? ``` The agent will: - Run `story-weaver list` to see all elements - Run `story-weaver next` to determine the next element to develop - Analyze dependencies to determine which elements are ready to be worked on - Prioritize elements based on priority level and ID order - Suggest the next element(s) to develop ### 2. Element Development When developing an element, the agent will: - Reference the element's details section for narrative guidance - Consider dependencies on previous elements - Incorporate the appropriate Jungian archetypes and themes - Create psychologically rich content based on the element's criticalAnalysis You can ask: ``` Let's develop element 3. What does it involve? ``` ### 3. Element Verification Before marking an element as complete, verify it according to: - The element's psychological themes and archetypes - Consistency with the overall narrative - Integration with previous elements ### 4. Element Completion When an element is completed, tell the agent: ``` Element 3 is now complete. Please update its status. ``` The agent will execute: ```bash story-weaver set-status --id=3 --status=complete ``` ### 5. Handling Narrative Evolution If during development, you discover that: - The current narrative differs significantly from what was planned - Future elements need to be modified due to current development choices - New psychological themes or archetypes have emerged Tell the agent: ``` We've changed our approach. The protagonist is now embodying the Trickster rather than the Hero archetype. Please update all future elements to reflect this change. ``` The agent will execute: ```bash story-weaver update --from=4 --prompt="Protagonist now embodies the Trickster archetype instead of the Hero." ``` This will rewrite or re-scope subsequent elements while preserving completed work. ### 6. Breaking Down Complex Elements For complex elements that need more granularity: ``` Element 5 seems complex. Can you break it down into subelements? ``` The agent will execute: ```bash story-weaver expand --id=5 --num=3 ``` You can provide additional context: ``` Please break down element 5 with a focus on shadow integration. ``` The agent will execute: ```bash story-weaver expand --id=5 --prompt="Focus on shadow integration aspects" ``` For research-backed subelement generation using Perplexity AI: ``` Please break down element 5 using research-backed generation. ``` The agent will execute: ```bash story-weaver expand --id=5 --research ``` ## Command Reference Here's a comprehensive reference of all available commands: ### Parse Concept ```bash # Parse a concept file and generate story elements story-weaver parse-concept <concept-file.txt> # Limit the number of elements generated story-weaver parse-concept <concept-file.txt> --num-elements=10 ``` ### List Elements ```bash # List all elements story-weaver list # List elements with a specific status story-weaver list --status=<status> # List elements with subelements story-weaver list --with-subelements # List elements with a specific status and include subelements story-weaver list --status=<status> --with-subelements ``` ### Show Next Element ```bash # Show the next element to work on based on dependencies and status story-weaver next ``` ### Show Specific Element ```bash # Show details of a specific element story-weaver show <id> # or story-weaver show --id=<id> # View a specific subelement (e.g., subelement 2 of element 1) story-weaver show 1.2 ``` ### Update Elements ```bash # Update elements from a specific ID and provide context story-weaver update --from=<id> --prompt="<prompt>" ``` ### Generate Element Files ```bash # Generate individual element files from elements.json story-weaver generate ``` ### Set Element Status ```bash # Set status of a single element story-weaver set-status --id=<id> --status=<status> # Set status for multiple elements story-weaver set-status --id=1,2,3 --status=<status> # Set status for subelements story-weaver set-status --id=1.1,1.2 --status=<status> ``` When marking an element as "complete", all of its subelements will automatically be marked as "complete" as well. ### Expand Elements ```bash # Expand a specific element with subelements story-weaver expand --id=<id> --num=<number> # Expand with additional context story-weaver expand --id=<id> --prompt="<context>" # Expand all draft elements story-weaver expand --all # Use research-backed expansion (requires Perplexity API) story-weaver expand --id=<id> --research ``` ### Add New Element ```bash # Add a new story element story-weaver add --title="<title>" --description="<description>" # Add with archetypes and themes story-weaver add --title="<title>" --description="<description>" --archetypes="Hero,Shadow" --themes="Rebirth,Journey" ``` ### Analyze Psychological Complexity ```bash # Analyze the psychological complexity of all elements story-weaver complexity # Analyze specific elements story-weaver complexity --id=1,2,3 ``` ## Example: Creating a Story with Jungian Elements 1. **Initialize a new project**: ```bash story-weaver init ``` 2. **Create a concept file** (scripts/concept.txt): ``` <concept> # Story World A modern city with hidden supernatural elements that manifest through dreams. # Characters - Protagonist: A therapist who starts experiencing their patients' dreams (Hero/Wise Person) - Antagonist: A dream entity that feeds on unresolved trauma (Shadow) - Supporting character: An elderly dream walker who guides the protagonist (Mentor) # Plot Elements - Inciting incident: Protagonist wakes up in a patient's nightmare - Major conflicts: Confronting personal trauma, navigating the dream world - Climax: Facing the shadow entity in the collective unconscious - Resolution: Integration of the protagonist's fragmented psyche # Symbolic System - Dream sequences that reflect unconscious fears - Mirrors as symbols of self-reflection - Water imagery representing the unconscious - Animal guides symbolizing aspects of the psyche # Psychological Journey - Starting state: Professional detachment, refusal to face personal wounds - Shadow elements: Repressed grief, denial of empathic abilities - Integration: Acceptance of intuitive powers and emotional vulnerability - Transformed state: Reconciliation of rational/intuitive, conscious/unconscious </concept> ``` 3. **Generate story elements**: ```bash story-weaver parse-concept scripts/concept.txt ``` 4. **View generated elements**: ```bash story-weaver list ``` 5. **Expand a specific element**: ```bash story-weaver expand --id=1 --prompt="Focus on the hero's reluctance to begin the journey" ``` 6. **Set element status as you develop your story**: ```bash story-weaver set-status --id=1 --status=complete ``` 7. **Get the next element to work on**: ```bash story-weaver next ``` By following this workflow, you'll create a psychologically rich narrative with Jungian depth and meaningful character arcs. ## Troubleshooting - **If the model seems to ignore Jungian psychology**: Try providing more explicit archetypal references in your concept document - **For deeper psychological analysis**: Use the `--research` flag with the expand command - **If you need to reset**: Delete the elements.json file and start fresh with parse-concept ## Additional Resources - [Jung's Archetypes and the Collective Unconscious](https://www.goodreads.com/book/show/67891.The_Archetypes_and_the_Collective_Unconscious) - [Man and His Symbols by Carl Jung](https://www.goodreads.com/book/show/123632.Man_and_His_Symbols) - [The Hero with a Thousand Faces by Joseph Campbell](https://www.goodreads.com/book/show/588138.The_Hero_With_a_Thousand_Faces)