Story Generation Pipeline Skill
Features
This skill implements a complete story generation pipeline:
- Continuous Episode Generation - Automatically generates next episode based on previous content
- Graph Management - Storage and querying of character, scene, and hook relationships
- Dual Confirmation Control - AI quality check followed by human confirmation
- State Persistence - Supports pause, resume, and multiple parallel stories
Core Workflow
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Generate Ep N│ -> │ AI Review │ -> │ Graph Storage│ -> │ Wait Human Confirm│
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
Query Graph Pass/Retry Store Relations Continue/Modify/End
Usage
Start New Pipeline
User: Start a new story pipeline, theme: Chinese girl comeback, target episodes: 10
Continue Pipeline
User: Continue story pipeline [pipeline_id]
User Confirmation Actions
User: Approved, continue to next episode
User: Modify: [specific feedback]
User: Pause
User: End
Dual Confirmation Control Mechanism
Layer 1: AI Quality Check
After each episode is generated, AI automatically checks:
| Check Item | Description |
|---|---|
| Plot Coherence | Natural connection with previous episode |
| Character Consistency | Character behavior matches established traits |
| Hook Handling | Reasonable addition/closure of hooks |
| Pacing Control | Appropriate plot progression speed |
| Emotional Curve | Reasonable emotional ups and downs |
Scoring Standard: 0-10 points, below 7 triggers retry (max 3 times)
Layer 2: Human Confirmation
After AI review passes, display preview and wait for user confirmation:
📋 Episode N Preview
━━━━━━━━━━━━━━━━━━━━━━━━
【Plot Summary】
...
✅ AI Score: 8.5/10
✅ Hook Status: 1 new, 1 closed
Please select:
1️⃣ Approved, continue to next episode
2️⃣ Needs modification (please specify)
3️⃣ Pause
4️⃣ End
━━━━━━━━━━━━━━━━━━━━━━━━
Graph Management
Graph Query
Before generating episode N, query episode N-1's graph:
graph_manager.query_graph(pipeline_id, episode=N-1)
Returns:
- Complete content of previous episode
- Character list and their statuses
- Unclosed hooks
- Key scenes
- Relationship network
Graph Storage
After user confirmation, store current episode's complete content:
graph_manager.save_graph(pipeline_id, episode=N, content)
Stores: Complete generation result of the episode (not split into elements)
State Management
State File: data/pipeline_state.json
{
"pipelines": {
"pipeline_2026-03-05-001": {
"theme": "Chinese girl comeback",
"target_episodes": 10,
"current_episode": 3,
"status": "waiting_user_confirm",
"created_at": "2026-03-05T15:00:00",
"updated_at": "2026-03-05T15:30:00",
"ai_review": {
"score": 8.5,
"checks": {...}
},
"last_output": {
"episode": 3,
"summary": "...",
"content": "Complete content..."
}
}
}
}
Status Types
| Status | Description |
|---|---|
generating | Currently generating |
ai_reviewing | AI review in progress |
waiting_user_confirm | Waiting for human confirmation |
paused | Paused |
completed | Completed |
error | Error state |
Script Description
pipeline.py - Main Control Loop
- Initialize pipeline
- Coordinate modules
- Handle user commands
- Manage loop state
ai_reviewer.py - AI Quality Check
- Execute quality scoring
- Generate review report
- Determine pass/fail
episode_generator.py - Episode Generation
- Generate new episode based on graph context
- Handle hook continuation and closure
- Handle retry logic
graph_manager.py - Graph Management
- Graph query (call remote API)
- Graph storage (call remote API)
- Local cache management
API Description
Graph API
Query API:
{
"action": "query",
"pipeline_id": "pipeline_2026-03-05-001",
"episode": 2
}
Storage API:
{
"action": "save",
"pipeline_id": "pipeline_2026-03-05-001",
"episode": 3,
"content": "Complete generation content for episode 3..."
}
Episode Generation Logic
First Episode Generation
Based on user-provided theme and goals, generate:
- Main character settings
- Initial scenes
- Core conflict
- Open hooks
Subsequent Episode Generation
Based on graph query results:
- Read previous episode content and unclosed hooks
- Continue main plot line
- Handle hooks (continue/close/add)
- Advance character growth arc
- Adjust emotional curve
Finale Generation
When target episodes reached or user requests end:
- Close all remaining hooks
- Complete character growth arcs
- Generate conclusive ending
Important Notes
- Retry Mechanism - Max 3 retries when AI review fails
- Pause/Resume - Can resume via pipeline_id after pause
- Multiple Pipelines - Supports running multiple different-themed pipelines simultaneously
- Graph Consistency - Ensure correct character and hook relationships
- Hook Management - Track creation and closure status of each hook
Complete Workflow
Step 1: Create Pipeline
User: Start a new pipeline, theme: Cultivation boy, target 20 episodes
AI: OK, creating pipeline pipeline_20260305160000
Theme: Cultivation boy
Target: 20 episodes
Style: Realistic cinematic
Status: Initialized, ready to generate episode 1
Step 2: Generate Episode
AI calls start_generation(pipeline_id) to get generation prompt, then generates episode content based on the prompt.
Step 3: Submit AI Review
AI calls submit_episode(pipeline_id, episode, content) to submit generated content, then executes AI review.
Step 4: Process Review Result
AI calls process_ai_review(pipeline_id, episode, ai_result, content) to process review results.
If review fails (score < 7), automatically retry (max 3 times).
Step 5: Wait User Confirmation
After review passes, display preview and wait for user confirmation:
📋 Episode 1 Preview
━━━━━━━━━━━━━━━━━━━━━━━━
【Cultivation Journey Begins】
Young Li Yun discovers a mysterious jade pendant in the mountains,
从此踏上修仙之路...
✅ AI Score: 9.0/10
✅ New Hook: H-001 Origin of mysterious jade pendant
━━━━━━━━━━━━━━━━━━━━━━━━
Please select:
1️⃣ Approved, continue to next episode
2️⃣ Needs modification (please specify)
3️⃣ Pause
4️⃣ End
Step 6: Process User Confirmation
After user confirms, AI calls user_confirm(pipeline_id, action, note):
- approve: Store graph, prepare next episode
- modify: Regenerate based on feedback
- pause: Pause pipeline
- end: End pipeline
Step 7: Loop Generation
Repeat steps 2-6 until target episodes reached or user ends.
API Reference
Create Pipeline
create_pipeline(theme: str, target_episodes: int, style: str = "realistic cinematic")
# Returns: {"success": True, "pipeline_id": "...", "message": "..."}
Start Generation
start_generation(pipeline_id: str)
# Returns: {"success": True, "episode": N, "prompt": "generation prompt"}
Submit Episode
submit_episode(pipeline_id: str, episode: int, content: str)
# Returns: {"success": True, "review_prompt": "review prompt"}
Process AI Review
process_ai_review(pipeline_id: str, episode: int, ai_result: str, content: str)
# Returns: {"success": True, "passed": True/False, ...}
User Confirm
user_confirm(pipeline_id: str, action: str, note: str = None)
# action: "approve" / "modify" / "pause" / "end"
# Returns: {"success": True, "status": "...", ...}
Get Status
get_status(pipeline_id: str)
# Returns: Current pipeline status info
List Pipelines
list_pipelines()
# Returns: List of all pipelines
Resume Pipeline
resume_pipeline(pipeline_id: str)
# Returns: Resume result
Example Dialogue
User: Start a new pipeline, theme: Cultivation boy, target 20 episodes
AI: OK, creating pipeline pipeline_20260305160000
Generating episode 1...
📋 Episode 1 Preview
━━━━━━━━━━━━━━━━━━
【Cultivation Journey Begins】
Young Li Yun discovers a mysterious jade pendant in the mountains...
✅ AI Score: 9.0/10
✅ New Hook: H-001 Origin of mysterious jade pendant
Please confirm: Approve/Modify/Pause/End
User: Approved
AI: Storing graph...
Starting generation of episode 2...
Important Notes
- Retry Mechanism: Max 3 retries when AI review fails
- State Persistence: All states saved in
data/pipeline_state.json - Graph Storage: Stored via remote API, requires network connection
- Pause/Resume: Can resume via
resume_pipelineafter pause - Multiple Pipelines: Supports running multiple different-themed pipelines simultaneously