Files

219 lines
9.2 KiB
Markdown

**English** | [简体中文](README.zh.md)
# ✍️ Author — AI-Powered Creative Writing Platform
> An AI-powered writing studio for novelists, screenwriters, and storytellers.
**Author** is an AI-assisted creative writing tool designed for fiction writers. It brings together a professional rich text editor, an intelligent AI writing assistant, and a complete worldbuilding management system — all in one seamless experience.
🌐 **Live Demo**: [author-delta.vercel.app](https://author-delta.vercel.app)
📦 **Gitee Mirror (国内镜像)**: [gitee.com/yuanshijilong/author](https://gitee.com/yuanshijilong/author)
---
## 💬 Why I Built This
I've been using AI for a while now — from the early days of ChatGPT 3.5, to Gemini 2.0 Exp Thinking, and eventually settling on Gemini 2.5 Pro Thinking after the ChatGPT o1 era.
As a novelist, I care deeply about AI's ability to handle language. Novels are long, so I need models with strong context windows and high recall. But what truly moved me about Gemini was its characters — there were moments when the words on screen made me want to cry. That's emotional resonance. I need writing that embraces the full complexity of being human.
Then the coding-focused trend took over. Every company started optimizing for code. I thought it was a good thing — until Gemini 3.1 Pro started describing its characters in biological and psychological terminology. Code-optimized models had begun deconstructing humans into biological components. Claude Opus 4.6 was even worse: every character spoke with peak efficiency — concise, economical, not like a human, but like a machine wearing a human mask.
**I could no longer see the models understanding human complexity. They didn't care about what humans *do* — only what humans *are*. They stopped showing personality through behavior and emotion, and instead slapped simple definitions onto human beings.**
I watched the versatility of these models being gutted. I don't want us to live in a cold world of code. I built this project so that AI can preserve **our own language** — beyond the mechanical operators.
> To all the authors, screenwriters, hobbyists, readers, and players who use this project: I hope you can bring out the best of your craft, create works with a human touch, and keep the flame of our language alive. 🔥
---
## ✨ Features
### 📝 Professional Editor
- Rich text editor powered by **Tiptap** — bold, italic, headings, lists, code blocks, and more
- **Word-style pagination** with WYSIWYG layout
- **KaTeX** math formula support
- Customizable fonts, font size, line height, and colors
- Real-time word / character / paragraph count
### 🤖 AI Writing Assistant
- **Multi-provider support**: ZhipuAI GLM-4 / DeepSeek / OpenAI / Google Gemini / Claude / SiliconFlow / Volcengine / Moonshot + custom endpoints
- **Continue / Rewrite / Polish / Expand** — one-click generation
- **Ghost Text** streaming preview — see AI output in real-time like Cursor, with accept/reject
- **Free chat mode** — discuss plot, characters, and settings with AI
- **Context engine** — AI automatically reads your character profiles, worldbuilding, and previous chapters to maintain story consistency
### 📚 Worldbuilding Manager
- **Tree-structured** management for characters, locations, items, outlines, and writing rules
- Three writing modes: **Web Novel** / **Literary Fiction** / **Screenplay**, each with dedicated fields
- Color-coded categories with glassmorphism design
- Settings automatically injected into AI context
### 💾 Data Management
- **Local-first** — all data stored in browser IndexedDB, never uploaded to servers
- **Snapshot system** — manual/auto versioning with one-click rollback
- **Project import/export** — full project JSON backup
- **Markdown export** — single chapter or entire book
### 🌐 Internationalization
- 🇨🇳 简体中文 / 🇺🇸 English / 🇷🇺 Русский
### 🎨 User Experience
- Eye-comfort warm tones / dark mode toggle
- Interactive onboarding tour
- Help panel with keyboard shortcuts
---
## 💻 Desktop Client
**No Node.js required!** Download the pre-built installer:
- 📥 [Download Author Setup (Windows)](https://github.com/YuanShiJiLoong/author/releases/latest)
Just install and start writing. All features work out of the box.
> 💡 To build the desktop app from source: `npm run build && npx electron-builder --win`
---
## 🚀 Getting Started
### Requirements
- **Node.js** 18+
- **npm** 9+ or **pnpm** 8+
### Installation
```bash
# Clone the repository
git clone https://github.com/YuanShiJiLoong/author.git
# Or use Gitee mirror (faster in China)
# git clone https://gitee.com/yuanshijilong/author.git
cd author
# Install dependencies
npm install
# Or use pnpm (no phantom dependency issues)
# pnpm install
# pnpm approve-builds # Required by pnpm to activate native packages
# Configure environment variables (optional)
cp .env.example .env.local
# Edit .env.local with your API keys
# You can also configure them in the app's Settings panel
```
### Development Server
```bash
npm run dev
```
Open [http://localhost:3000](http://localhost:3000) to start writing.
### Production Build
```bash
npm run build
npm start
```
### Deploy to Vercel
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/YuanShiJiLoong/author)
---
## 🔄 Updating
### Desktop Client Users
Download the latest installer from the [Releases](https://github.com/YuanShiJiLoong/author/releases/latest) page and install it over your current version. Your data is stored in the browser/Electron profile and will not be lost.
### Self-Deployed Users (Source)
```bash
git pull origin main
npm install # or: pnpm install && pnpm approve-builds
npm run dev
```
### Vercel Users
If you deployed via Vercel fork, just sync your fork with upstream on GitHub — Vercel will automatically redeploy.
---
## ⚙️ AI Configuration
Author supports multiple AI providers. Configure via **environment variables** or **in-app settings**:
| Provider | Env Variable | Get API Key |
|----------|-------------|-------------|
| ZhipuAI (GLM-4) | `ZHIPU_API_KEY` | [open.bigmodel.cn](https://open.bigmodel.cn/) |
| Google Gemini (Native) | `GEMINI_API_KEY` | [aistudio.google.com](https://aistudio.google.com/apikey) |
| Google Gemini (OpenAI-compat) | `GEMINI_API_KEY` | [aistudio.google.com](https://aistudio.google.com/apikey) |
| DeepSeek | In-app config | [platform.deepseek.com](https://platform.deepseek.com/) |
| OpenAI | In-app config | [platform.openai.com](https://platform.openai.com/) |
| OpenAI Responses | In-app config | [platform.openai.com](https://platform.openai.com/) |
| Claude (Anthropic) | `CLAUDE_API_KEY` | [console.anthropic.com](https://console.anthropic.com/) |
| SiliconFlow (硅基流动) | In-app config | [siliconflow.cn](https://siliconflow.cn/) |
| Volcengine (火山引擎/豆包) | In-app config | [console.volcengine.com](https://console.volcengine.com/) |
| Moonshot (Kimi) | In-app config | [platform.moonshot.cn](https://platform.moonshot.cn/) |
| Custom (OpenAI-compat) | In-app config | Any OpenAI-compatible endpoint |
| Custom (Gemini format) | In-app config | Any Gemini-compatible endpoint |
| Custom (Claude format) | In-app config | Any Claude-compatible endpoint |
> 💡 **No API key required** for most editing features. AI features need at least one provider configured.
---
## 🔒 Privacy & Data Security
### Local Storage (Safe)
- All creative data (chapters, settings, snapshots) is **stored 100% locally in your browser (IndexedDB)** — never uploaded to any server
- API Keys are stored in browser localStorage
### ⚠️ Data Flow When Using AI Features
When using AI features (continue, rewrite, chat, etc.), the following data passes through the **deployer's server** on its way to the AI provider:
- Your **API Key**
- The **text content** you send to AI
```
Your Browser → Deployer's Server → AI Provider (ZhipuAI/Gemini/DeepSeek/etc.)
```
**If you're using someone else's deployed public instance**, while the deployer promises not to inspect logs, the technical capability to intercept data exists. Therefore:
1. ✅ You can use a public instance for a **quick trial**
2. ⚠️ After trying it, **immediately destroy your API Key at your provider's website**
3. 🔐 **For real use, fork and deploy your own private instance** — then all data only passes through your own server
> 💡 Deploying your own instance is easy: Fork this repo → One-click deploy to Vercel → Done. Takes less than 5 minutes.
---
## 📄 License
This project is licensed under [AGPL-3.0](LICENSE).
**In short**:
- ✅ Free to use, modify, and distribute
- ✅ Personal and commercial use allowed (as long as you open-source your changes)
- ⚠️ Modified versions must also be open-sourced under AGPL-3.0 (including network services / SaaS)
- ⚠️ Original copyright notice must be preserved
- ❌ Closed-source commercial use is NOT allowed
---
## 🙏 Acknowledgments
- [Google Antigravity](https://antigravity.google/) — AI programming partner
- [Tiptap](https://tiptap.dev/) — Editor framework
- [Next.js](https://nextjs.org/) — React full-stack framework
- [Zustand](https://zustand-demo.pmnd.rs/) — State management
- [KaTeX](https://katex.org/) — Math rendering