แปลงนิยาย public-domain เป็น lorebook มีโครงสร้าง — fast, deterministic, MCP-native. Extract deep structured lorebooks from novels via 26 MCP tools.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport — counts 30 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
acquire_by_id
1
-
acquire_by_title
1
-
acquire_epub
1
-
analyze_architect
Phase 4 Pass 1.1
-
analyze_chronicler
Phase 4 Pass 1.3
-
analyze_profiler
Phase 4 Pass 1.2
-
analyze_youtube_playlist
สแกน YouTube playlist ว่ามี subtitle หรือไม่
-
assemble_lorebook_tool
14
-
auto_verify_names
3
-
build_entity_registry_tool
10
-
extract_global_lore
Phase 3
-
generate_hybrid_notes_tool
9
-
generate_storyboard_tool
สร้างภาพผ่าน OpenRouter
-
merge_micro_facts
5
-
open_dashboard_tool
เปิด world explorer dashboard ที่ localhost:8000
-
query_knowledge_graph
11
-
query_lore_semantic_tool
13
-
query_past_lore_tool
RAG ค้นหาข้อมูลจากตอนก่อนหน้า
-
query_saga_rag
ค้นหาข้ามเล่มผ่าน semantic search
-
render_map_tool
7
-
render_production_tool
6
-
render_relationships_tool
8
-
render_timeline_tool
12
-
run_full_pipeline
5–14
-
run_saga_assembly
ประกอบ saga lorebook หลายเล่ม
-
run_youtube_acquisition
ดึง transcript/STT จาก YouTube (Whisper)
-
sa_combined
Phase 4 2-Pass
-
sa_lore
Phase 4 2-Pass
-
save_global_lore
3
-
split_into_chapters
2
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 94c580e · analyzer v18 · 2h ago
skills & prompt files 7
- prompt-filemgprona-MennzLore-94c580e/prompts/pass11_architect_prompt.md
- prompt-filemgprona-MennzLore-94c580e/prompts/pass12_profiler_prompt.md
- prompt-filemgprona-MennzLore-94c580e/prompts/pass13_chronicler_prompt.md
- prompt-filemgprona-MennzLore-94c580e/prompts/pass2_sliding_window_prompt.md
- prompt-filemgprona-MennzLore-94c580e/prompts/phase3_global_lore_prompt.md
- prompt-filemgprona-MennzLore-94c580e/prompts/sa_combined_prompt.md
- prompt-filemgprona-MennzLore-94c580e/prompts/sa_lore_prompt.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
filesystem 30
- fs mgprona-MennzLore-94c580e/engine/acquire_se.py :22
import shutil - fs mgprona-MennzLore-94c580e/engine/assemble_generic.py :306
with open(prompt_path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/assemble_production_generic.py :189
with open(path, encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/chart_render_generic.py :33
with open(_GAZETTEER_PATH, encoding="utf-8") as _f: - fs mgprona-MennzLore-94c580e/engine/dashboard_server.py :16
from pathlib import Path - fs mgprona-MennzLore-94c580e/engine/entity_registry.py :196
with open(gl_path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/fetch_epub.py :20
from pathlib import Path - fs mgprona-MennzLore-94c580e/engine/fetch_raw.py :179
with open(raw_path, "wb") as f: - fs mgprona-MennzLore-94c580e/engine/generate_schemas.py :23
with open(filepath, "w", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/hybrid_notes.py :96
with open(path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/image_generator.py :99
with open(dest_path, "wb") as f: - fs mgprona-MennzLore-94c580e/engine/knowledge_graph.py :132
with open(gl_path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/merge_to_micro_facts.py :197
with open(clean_chapter_path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/phase3_auto_verify.py :33
with open(path, encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/phase3_global_lore.py :132
with open(p, encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/pipeline_state.py :36
with open(self.path, encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/rag_memory.py :36
with open(fpath, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/relationship_graph.py :231
with open(fpath, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/saga_assembler.py :223
with open(out_path, "w", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/saga_rag_memory.py :42
with open(fpath, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/split_chapters.py :198
with open(raw_path, encoding="utf-8", errors="replace") as f: - fs mgprona-MennzLore-94c580e/engine/timeline_render.py :39
with open(path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/translate_raw.py :204
with open(fpath, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/utils.py :12
with open(file_path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/vector_rag.py :228
with open(fpath, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/verify_names.py :42
with open(name_map_path, "r", encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/engine/youtube_acquire.py :212
with open(mp3_path, "rb") as f: - fs mgprona-MennzLore-94c580e/install.py :27
import shutil - fs mgprona-MennzLore-94c580e/mcp_server/server.py :48
with open(cache_path, encoding="utf-8") as f: - fs mgprona-MennzLore-94c580e/scripts/compare_baseline.py :4
from pathlib import Path
shell / exec 4
- shell mgprona-MennzLore-94c580e/engine/acquire_se.py :23
import subprocess - shell mgprona-MennzLore-94c580e/engine/youtube_acquire.py :13
import subprocess - shell mgprona-MennzLore-94c580e/install.py :28
import subprocess - shell mgprona-MennzLore-94c580e/mcp_server/server.py :13
import subprocess
network 8
- net mgprona-MennzLore-94c580e/engine/acquire_se.py :56
import urllib.request - net mgprona-MennzLore-94c580e/engine/dashboard_server.py :14
import urllib.parse - net mgprona-MennzLore-94c580e/engine/fetch_epub.py :21
import urllib.parse - net mgprona-MennzLore-94c580e/engine/fetch_raw.py :21
import urllib.parse - net mgprona-MennzLore-94c580e/engine/image_generator.py :12
import requests - net mgprona-MennzLore-94c580e/engine/translate_raw.py :29
import requests - net mgprona-MennzLore-94c580e/engine/youtube_acquire.py :14
import requests - net mgprona-MennzLore-94c580e/mcp_server/server.py :14
import socket
secrets 6
- secrets mgprona-MennzLore-94c580e/engine/assemble_generic.py :949
api_key = os.environ.get("OPENROUTER_API_KEY") - secrets mgprona-MennzLore-94c580e/engine/image_generator.py :115
api_key = os.environ.get("OPENROUTER_API_KEY") - secrets mgprona-MennzLore-94c580e/engine/translate_raw.py :423
api_key = os.environ.get("OPENROUTER_API_KEY") - secrets mgprona-MennzLore-94c580e/engine/youtube_acquire.py :306
api_key = os.environ.get("OPENROUTER_API_KEY") - secrets mgprona-MennzLore-94c580e/install.py :659
env_key = os.environ.get("OPENROUTER_API_KEY") - secrets mgprona-MennzLore-94c580e/mcp_server/server.py :690
if not os.environ.get("OPENAI_API_KEY"):
database 1
- db mgprona-MennzLore-94c580e/engine/knowledge_graph.py :32
import sqlite3
tool registrations 27
- verify_character_names mgprona-MennzLore-94c580e/mcp_server/server.py :127
- merge_micro_facts mgprona-MennzLore-94c580e/mcp_server/server.py :142
- assemble_lorebook_tool mgprona-MennzLore-94c580e/mcp_server/server.py :160
- render_production_tool mgprona-MennzLore-94c580e/mcp_server/server.py :177
- render_map_tool mgprona-MennzLore-94c580e/mcp_server/server.py :195
- open_dashboard_tool mgprona-MennzLore-94c580e/mcp_server/server.py :213
- query_past_lore_tool mgprona-MennzLore-94c580e/mcp_server/server.py :240
- render_relationships_tool mgprona-MennzLore-94c580e/mcp_server/server.py :257
- generate_hybrid_notes_tool mgprona-MennzLore-94c580e/mcp_server/server.py :275
- build_entity_registry_tool mgprona-MennzLore-94c580e/mcp_server/server.py :295
- query_knowledge_graph mgprona-MennzLore-94c580e/mcp_server/server.py :314
- render_timeline_tool mgprona-MennzLore-94c580e/mcp_server/server.py :366
- query_lore_semantic_tool mgprona-MennzLore-94c580e/mcp_server/server.py :385
- generate_storyboard_tool mgprona-MennzLore-94c580e/mcp_server/server.py :406
- analyze_youtube_playlist mgprona-MennzLore-94c580e/mcp_server/server.py :429
- run_youtube_acquisition mgprona-MennzLore-94c580e/mcp_server/server.py :461
- acquire_epub mgprona-MennzLore-94c580e/mcp_server/server.py :480
- acquire_by_id mgprona-MennzLore-94c580e/mcp_server/server.py :508
- acquire_se mgprona-MennzLore-94c580e/mcp_server/server.py :527
- acquire_by_title mgprona-MennzLore-94c580e/mcp_server/server.py :560
- split_into_chapters mgprona-MennzLore-94c580e/mcp_server/server.py :593
- save_global_lore mgprona-MennzLore-94c580e/mcp_server/server.py :634
- run_global_lore mgprona-MennzLore-94c580e/mcp_server/server.py :675
- auto_verify_names mgprona-MennzLore-94c580e/mcp_server/server.py :704
- run_saga_assembly mgprona-MennzLore-94c580e/mcp_server/server.py :724
- query_saga_rag mgprona-MennzLore-94c580e/mcp_server/server.py :748
- run_full_pipeline mgprona-MennzLore-94c580e/mcp_server/server.py :841
declared dependencies 6
- pydantic@>=2.0,<3.0
- fastmcp@>=0.1.0,<1.0
- requests@>=2.31.0,<3.0
- pyyaml@>=6.0,<7.0
- yt-dlp@>=2023.0.0
- youtube-transcript-api@>=0.6.0