RedInk README

The project's README from github.com/HisMax/RedInk. As one markdown file: README.md.

中文 | English

GitHub Stars License Docker Pulls GitHub Release

RedInk - Inspiration at Your Fingertips, Making Creation Effortless

Official Site → Redink.top

Various social media covers generated with RedInk

Various social media covers generated with RedInk - AI-powered, consistent style, accurate text


✨ Showcase

Type One Sentence, Get Complete Image & Text Posts

Step 1: Smart Outline Generation

Outline Example

Features:

  • ✏️ Edit content for each page
  • 🔄 Reorder pages (not recommended)
  • ✨ Custom description per page (highly recommended)
🎨 Step 2: Cover Page Generation

Cover Example

Cover Highlights:

  • 🎯 Matches your personal style
  • 📝 Accurate text rendering
  • 🌈 Visually consistent and coordinated
📚 Step 3: Batch Content Page Generation

Content Page Example

Generation Notes:

  • ⚡ Concurrent generation for all pages (up to 15 by default)
  • ⚠️ Disable high concurrency in settings if your API doesn't support it
  • 🔧 Regenerate individual pages you're not satisfied with

🏗️ Tech Stack

🔧 Backend

Technology Description
Language Python 3.11+
Framework Flask
Package Manager uv
Text AI Gemini 3
Image AI 🍌 Nano Banana Pro

🎨 Frontend

Technology Description
Framework Vue 3 + TypeScript
Build Tool Vite
State Management Pinia
Styling Modern CSS

📦 Deployment

The simplest way — one command to start:

docker run -d -p 12398:12398 -v ./history:/app/history -v ./output:/app/output histonemax/redink:latest

Visit http://localhost:12398 and configure your API Key in the Settings page.

Using docker-compose (optional):

Download docker-compose.yml, then:

docker-compose up -d

Docker Notes:


Option 2: Local Development

Prerequisites:

1. Clone the Repository

git clone https://github.com/HisMax/RedInk.git
cd RedInk

2. Configure API Services

Copy the config templates:

cp text_providers.yaml.example text_providers.yaml
cp image_providers.yaml.example image_providers.yaml

Edit the config files with your API Key and service settings, or configure them later via the Settings page in the web UI.

3. Install Backend Dependencies

uv sync

4. Install Frontend Dependencies

cd frontend
pnpm install

5. Start the Services

Run the start script to automatically install dependencies and launch both frontend and backend:

The browser will automatically open at http://localhost:5173

Manual Start

Start Backend:

uv run python -m backend.app

Visit: http://localhost:12398

Start Frontend:

cd frontend
pnpm dev

Visit: http://localhost:5173


🔧 Configuration

Configuration Methods

The project supports two configuration methods:

  1. Web UI (Recommended): Visual configuration via the Settings page after starting the service
  2. YAML Files: Edit config files directly

Text Generation Config

Config file: text_providers.yaml

# Active provider
active_provider: openai

providers:
  # OpenAI or compatible API
  openai:
    type: openai_compatible
    api_key: sk-xxxxxxxxxxxxxxxxxxxx
    base_url: https://api.openai.com/v1
    model: gpt-4o

  # Google Gemini (native API)
  gemini:
    type: google_gemini
    api_key: AIzaxxxxxxxxxxxxxxxxxxxxxxxxx
    model: gemini-2.0-flash

Image Generation Config

Config file: image_providers.yaml

# Active provider
active_provider: gemini

providers:
  # Google Gemini image generation
  gemini:
    type: google_genai
    api_key: AIzaxxxxxxxxxxxxxxxxxxxxxxxxx
    model: gemini-3-pro-image-preview
    high_concurrency: false

  # OpenAI compatible API
  openai_image:
    type: image_api
    api_key: sk-xxxxxxxxxxxxxxxxxxxx
    base_url: https://your-api-endpoint.com
    model: dall-e-3
    high_concurrency: false

High Concurrency Mode

⚠️ Not recommended for GCP $300 trial accounts — may trigger rate limits and cause generation failures.


⚠️ Notes

  1. API Quota Limits:

    • Be aware of Gemini and image generation API call quotas
    • GCP trial accounts should keep high concurrency disabled
  2. Generation Time:

    • Outline generation usually takes 15-30 seconds
    • Image generation takes time — please be patient (don't leave the page)

🤝 Contributing

Issues and Pull Requests are welcome!

If this project helps you, please give it a Star ⭐


Changelog

v1.4.3 (2026-06-30)

v1.4.2 (2026-03-15)

v1.4.1 (2025-12-29)

v1.4.0 (2025-11-30)

v1.3.0 (2025-11-26)

v1.2.0 (2025-11-26)


Community & Support

Contact the Author

Support the Project

Buy me a coffee

Star History

Star History Chart


📄 License

Personal Use - CC BY-NC-SA 4.0

This project is licensed under CC BY-NC-SA 4.0

You are free to:

Under the following terms:

Commercial License

If you wish to use this project for commercial purposes (including but not limited to):

Please contact the author for a commercial license:

The author will provide flexible commercial licensing options based on your specific use case.


Disclaimer

This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability.


🙏 Acknowledgments


👨‍💻 Author

Mozi (Histone) - AI Entrepreneur

"Let AI do the creative work for us"


If this project helped you, share it with others! ⭐

Questions or suggestions? Feel free to open an Issue!

RedInk (HisMax/RedInk)

flask
Searching Database…

5.6K ·GitHub
What is this?RedInk turns a single sentence into a complete Xiaohongshu (Red Note) post with matching cover image, content-page images and text, using Gemini for text and Nano Banana Pro for images.
Is this a web app I self-host, or a library I import?It is a self-hosted web app with a Python/Flask backend and a Vue 3 + TypeScript frontend, not a library.
How do I get RedInk running?Easiest way is Docker: run the official image with one command and configure your API key on the Settings page in the web UI; alternatively clone the repo and run start.sh (macOS/Linux) or start.bat (Windows) for a one-click local setup.
Do I need my own API keys for Gemini and image generation?Yes — the Docker image ships without any API keys, so you must supply your own text provider (Gemini or OpenAI-compatible) and image provider (Nano Banana Pro or compatible) keys via the Settings UI or YAML config files.
Any gotchas with the high concurrency setting?Turning on high-concurrency mode generates up to 15 images in parallel but can trigger rate limits, and the README explicitly warns against enabling it on GCP's $300 trial accounts.
Which platforms can run RedInk?It runs via Docker or local start scripts provided for macOS, Linux, and Windows.
Is my history and API key data stored anywhere?Everything runs locally/self-hosted: generated history and output images persist on your own filesystem via mounted Docker volumes, and API keys are masked in the UI rather than sent anywhere else.
What does the actual generation workflow look like?You enter one sentence, RedInk generates a smart outline you can edit page-by-page, then it creates a styled cover image, then batch-generates all content page images concurrently (up to 15 at once by default).
Can I use providers other than Google Gemini?Yes — RedInk has a unified text client that supports both Google Gemini and OpenAI-compatible APIs with auto-switching, plus image providers like Nano Banana Pro, GPT Image, or other compatible APIs.
Can I regenerate just one image if I don't like it?Yes — individual pages can be redrawn while RedInk keeps the full context (cover, outline, your original input) so the regenerated image stays visually consistent with the rest of the post.
Creator
HisMax
Size
27.4 MB
Stars
5.6K
Updated
CommitJun 30
Age
10mo
Commits · 90 Days