yuelinghuashu/story-cli
📚 story-cli
CLI для управления Markdown-контентом с нулевым развертыванием и нативным Git. Управляйте историями/статьями/заметками/уроками с помощью простых соглашений о каталогах, автоматически генерируйте README, экспортируйте EPUB, поддерживается двуязычность (китайский/английский).
✨ Возможности
Простые соглашения о каталогах — контент — это папки:
NN-название/содержитconfig.json+text.mdАвтоматическая генерация README — для каждой записи и корневого индекса (шаблонный, настраиваемый)
Группировка и сортировка серий —
series/seriesOrderуправляют порядком отображения, вставка в любом месте без перенумерацииПроверка во время выполнения — проверка конфигурации перед сборкой (обязательные поля, перечисления, форматы)
Проверка соответствия —
story validateпроверяет по спецификации Story-Repo (именование каталогов / UTF-8 / дублирующиеся номера / schema)Связанные истории —
story linkуправляет слабыми связями;story buildавтоматически предлагает кандидатов для связей в той же серииДвуязычная поддержка — китайский/английский контент + автоматическая генерация локализованных README
Главы + подсчет слов — автоматическое извлечение заголовков глав и подсчет слов с учетом языка
Экспорт в несколько форматов — EPUB (рендеринг обложки/стили макета/метаданные серии) / HTML / TXT / JSON / Markdown / embeddings, поддержка
--stdoutдля конвейеровУниверсальная контент-платформа — режим базы знаний (статьи/интервью/заметки), режим технической документации (уроки/API)
MCP Server — AI-клиенты (Claude / Cursor) могут напрямую читать и записывать контент-библиотеку
GitHub Action — CI-вход без конфигурации (
yuelinghuashu/story-cli@v1), реализация «Push → Build → Публикация» в один кликРежим Watch — автоматическая пересборка при изменении файлов
Related MCP server: obsidian-kb
🚀 Быстрый старт
# 安装(需要 Node.js >= 22)
npm install -g @yuelinghuashu/story-cli
# 创建示例仓库并查看效果
story demo
# 初始化仓库
story init
# 创建内容并编写
story new "我的新故事"
# 构建所有 README
story build
# 导出 EPUB / 统计
story epub --all
story statsmake init # 初始化
make new TITLE="我的故事" # 新建并自动构建
make commit # 构建 + 提交
make push # 构建 + 提交 + 推送
make stats # 查看创作统计
make analyze # 写作质量分析(重复短语 / 字数过期 / 章节趋势,需 jq)
Пользователи Windows также могут использовать story.ps1 (рабочий процесс PowerShell), сгенерированный story init: .\story.ps1 init / .\story.ps1 new -Title 'Моя история' / .\story.ps1 build.
🌱 Не только истории
Универсальное управление контентом — любые текстовые активы, которые можно «нормализовать», могут использовать один и тот же рабочий процесс:
Шаблонный режим | Тип контента | Типичный сценарий |
| Роман / история | Оригинальное, фанфик |
| Статья / интервью / блог / заметка | База знаний, исследовательская база |
| Урок / API-документация / журнал изменений | Технический блог, документация проекта |
story init --template=knowledge
story init --template=tech🤖 Позвольте AI управлять вашей контент-библиотекой
story-cli включает встроенный MCP Server — AI-клиенты (Claude Desktop / Cursor / VSCode Copilot Chat) могут напрямую читать и записывать вашу контент-библиотеку. AI может самостоятельно выполнить полный цикл «создание → написание → сборка → статистика» без ручного выполнения команд в терминале.
💡 Экономия токенов: инструменты MCP с самого начала проектировались с принципом экономии затрат на вызовы AI.
scan_storiesпо умолчанию выдает сокращенный вывод (просмотр каталога экономит ~80-95%),read_chapterподдерживает усечение по требованию (экономия ~95%+ при продолжении),statsполучает все данные за один вызов (~99%) — каждая деталь снижает потребление токенов для вашего AI-рабочего процесса.
Возможность | Инструмент MCP | Описание |
📖 Просмотр |
| Список библиотеки историй, чтение глав (поддержка загрузки по требованию и усечения в конце, экономия токенов) |
✍️ Написание |
| Создание новой истории, атомарная запись текста (опциональная проверка соответствия после записи) |
✅ Управление |
| Прямое изменение полей метаданных, выполнение пересборки README, проверка корректности конфигурации |
📊 Статистика |
| Получение общего количества слов / глав / прогресса серии / состояния здоровья |
# 启动 MCP Server(需在故事仓库根目录;--root 可从任意目录指定仓库)
story mcp-server💡 Подробная конфигурация и примеры в docs/mcp.md. MCP Server читает и записывает все файлы в текущем рабочем каталоге, запускайте только в доверенных репозиториях.
🎯 Подготовка данных для тонкой настройки (SFT / Embedding)
Структурированный вывод библиотеки историй естественно подходит в качестве источника данных для обучения больших моделей — config.json содержит категории, export json точно нарезает по главам, export embeddings выводит текстовые блоки. В сочетании с --stdout и инструментами Unix, одна строка конвейера превращает данные в стандартный формат для тонкой настройки:
# 导出为指令微调 JSONL(summary → instruction,正文 → output)
story export json --stdout | jq -c '.stories[] | {messages: [{role: "user", content: .summary}, {role: "assistant", content: .content}]}' > sft_data.jsonl
# 导出为 Embedding 训练格式
story export embeddings --stdout | jq -c '{text: .content, metadata: {title: .title, series: .series}}' > embedding_data.jsonl
# 快速分析数据配比(总字数/章节分布/重复短语)
story stats --json | jq '{words: .totalWords, chapters: .totalChapters, repeated: .analysis.repeated}'💡 story-cli гарантирует кодировку UTF-8 (автоматическое обнаружение и предупреждение для GBK), нарезку по главам (избегание семантических разрывов), полноту метаданных (type/series/summary естественно используются как категории). Не требуется дополнительных скриптов очистки.
🛠️ Часто используемые команды
Команда | Описание |
| Инициализация репозитория (по умолчанию режим истории/базы знаний/технической документации) |
| Создание новой записи |
| Сборка README |
| Экспорт EPUB |
| Экспорт в несколько форматов (embeddings — текстовые блоки JSONL) |
| Пакетный импорт из JSON |
| Статистика творчества |
| Проверка соответствия (спецификация Story-Repo) |
| Управление связями историй (слабые связи) |
| Запуск MCP Server (точка входа для AI) |
Псевдонимы, подкоманды, параметры и классификация всех команд в docs/commands.md (двуязычный).
Настройка пользовательских типов/статусов историй и локализованных меток:
{
"types": ["original", "fanfic", "translation"],
"statuses": ["completed", "ongoing", "planned"],
"typeLabels": { "translation": { "zh": "翻译", "en": "Translation" } }
}Встроенные перечисления уже содержат метки, повторная настройка не требуется. Удаление файла возвращает значения по умолчанию.
📚 Документация
Документ | Китайский | English | Содержание |
Философия дизайна | Философия проекта | ||
Спецификация репозитория | Спецификация данных | ||
Как добавить контент | Соглашения о каталогах | ||
Экспорт контента | Руководство по экспорту | ||
EPUB / PDF | Экспорт EPUB | ||
CI | GitHub Actions | ||
MCP Server | Руководство по подключению AI | ||
Архитектура | Проектирование модулей | ||
Справочник команд | Полный список команд | ||
Журнал изменений | Записи изменений |
⚠️ Требования к кодировке
Все файлы должны быть в кодировке UTF-8. При обнаружении GBK/GB2312 выводится предупреждение, но сборка не блокируется.
🧪 Тестирование
make test # 或 pnpm testВсе 550+ тестов пройдены. Покрытие: сканер, группировка серий, проверка, рендеринг шаблонов, подсчет слов, интернационализация, генерация README, экспорт EPUB, сквозное тестирование CLI (смоук-тесты покрывают все команды), .storyignore, протокол MCP, импорт JSON, структура GitHub Action, проверка соответствия, предложения связей, кэш инкрементальной сборки, экспорт embeddings и т.д.
☕ Поддержка
⚖️ Лицензия
🤝 Участие в разработке
Приветствуются Issue (отчеты об ошибках / предложения функций, есть шаблоны форм); желающие внести вклад в код, пожалуйста, прочитайте CONTRIBUTING.md и ознакомьтесь с позиционированием проекта в ROADMAP.md.
Maintenance
Related MCP Servers
- Flicense-qualityDmaintenanceGit-native MCP server for managing AI context across sessions. Enables LLMs to access project and feature context via markdown files, preserving decisions and constraints.1
- FlicenseCqualityDmaintenanceGit-backed MCP server for creating and maintaining an Obsidian-style markdown knowledge base with full CRUD, search, and git sync.7
- Alicense-qualityBmaintenanceA dynamic, governed memory layer for Markdown notes that serves knowledge to AI clients and humans through a secure MCP server, with scoped access, git-audited changes, and optional LLM-powered semantic search.Apache 2.0
- AlicenseBqualityAmaintenancePersonal multi-LLM memory repository using Markdown as source of truth, SQLite FTS5 for retrieval, and MCP tools for search, context, and write proposals.74Apache 2.0
Related MCP Connectors
MCP-native collaborative markdown editor with real-time AI document editing
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Generate PDFs from templates via AI chat. Works with Claude, ChatGPT, Cursor, and any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yuelinghuashu/story-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server