Skip to content

quardianwolf/release-notes-ai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

App Release Notes Translator

Translate your app release notes to 80+ languages in seconds using OpenAI. Stop wasting hours manually translating "What's New" for every App Store and Play Store update.

The Problem

Every time you release an app update, you need to write "What's New" text in every language your app supports. If you support 40 languages, that's 40 translations you need to do manually. This is:

  • Time consuming (hours of work for each release)
  • Expensive (if using professional translators)
  • Error-prone (copy-paste mistakes, inconsistent tone)
  • Boring (nobody wants to do this)

The Solution

This CLI tool:

  1. Takes your English release notes
  2. Translates them to 80+ languages using GPT-4o-mini (44 for iOS, 82 for Android)
  3. Outputs files in the exact format App Store Connect and Play Store expect
  4. Lets you upload to App Store with a single Fastlane command

Total time: ~30 seconds instead of hours.

How It Works

┌─────────────────────────────────────────────────────────────┐
│  You write release notes in English                         │
│  "Bug fixes and performance improvements"                   │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│  OpenAI translates to 80+ languages in parallel             │
│  (GPT-4o-mini, ~$0.01 per translation batch)                │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│  Output files generated:                                    │
│                                                             │
│  iOS (Fastlane format):                                     │
│  └── fastlane/metadata/tr/release_notes.txt                 │
│  └── fastlane/metadata/de-DE/release_notes.txt              │
│  └── fastlane/metadata/ja/release_notes.txt                 │
│  └── ... (40 languages)                                     │
│                                                             │
│  Android (Play Store format):                               │
│  └── android/play-store-changelog.txt (direct copy-paste)  │
│  └── android/changelogs.md                                  │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│  Upload to App Store Connect with Fastlane                  │
│  $ fastlane deliver --skip_binary_upload --force            │
└─────────────────────────────────────────────────────────────┘

Supported Languages

iOS (44 languages): Arabic, Catalan, Chinese (Simplified/Traditional), Croatian, Czech, Danish, Dutch, English (US/UK/AU/CA), Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Malay, Norwegian, Polish, Portuguese (BR/PT), Romanian, Russian, Slovak, Spanish (ES/MX), Swedish, Thai, Turkish, Ukrainian, Vietnamese

Android (82 languages): All iOS languages plus: Afrikaans, Amharic, Armenian, Azerbaijani, Basque, Belarusian, Bengali, Bulgarian, Burmese, Estonian, Filipino, Galician, Georgian, Gujarati, Icelandic, Kannada, Kazakh, Khmer, Kyrgyz, Lao, Latvian, Lithuanian, Macedonian, Malayalam, Marathi, Nepali, Persian, Romansh, Serbian, Slovenian, Albanian, Swahili, Tamil, Telugu, Zulu

Installation

# Clone the repo
git clone https://github.com/quardianwolf/release-notes-ai.git
cd release-notes-ai

# Install dependencies
npm install

# Set up your OpenAI API key
cp .env.example .env
nano .env  # Add your OPENAI_API_KEY

Quick Start

# Basic usage - translate to all languages
node src/index.js "Bug fixes and performance improvements"

# That's it! Check the ./output folder

Usage Examples

Translate to All Languages

node src/index.js "Bug fixes and performance improvements"

Translate to Specific Languages Only

node src/index.js "Bug fixes" --langs en,tr,de,fr,es,ja,ko,zh-Hans

Multi-line Release Notes

node src/index.js "What's new?
- Redesigned home screen
- Dark mode support
- Performance improvements
- Bug fixes"

Interactive Mode (Opens Editor)

node src/index.js -i

iOS Only

node src/index.js "Bug fixes" --ios-only

Android Only with Version Code

node src/index.js "Bug fixes" --android-only --version-code 42

Custom Output Directory

node src/index.js "Bug fixes" --output ./my-release

List All Supported Languages

node src/index.js langs

Output Structure

After running the command, you'll get:

output/
├── fastlane/
│   ├── Deliverfile              # Fastlane config
│   └── metadata/
│       ├── en-US/
│       │   └── release_notes.txt    # "Bug fixes and performance improvements"
│       ├── tr/
│       │   └── release_notes.txt    # "Hata düzeltmeleri ve performans iyileştirmeleri"
│       ├── ja/
│       │   └── release_notes.txt    # "バグ修正とパフォーマンスの改善"
│       ├── de-DE/
│       │   └── release_notes.txt    # "Fehlerbehebungen und Leistungsverbesserungen"
│       └── ... (44 languages for iOS, 82 for Android)
│
└── android/
    ├── play-store-changelog.txt   # Direct copy-paste to Play Console
    └── changelogs.md              # All translations in Markdown format

Uploading to App Store Connect

Step 1: Install Fastlane

brew install fastlane

Step 2: Create App Store Connect API Key

  1. Go to App Store Connect
  2. Navigate to Users and AccessIntegrationsApp Store Connect API
  3. Click "+" to generate a new key
  4. Choose "App Manager" or "Admin" role
  5. Download the .p8 file (you can only download it once!)
  6. Note the Key ID and Issuer ID shown on the page

Step 3: Configure Fastlane

Create output/fastlane/api_key.json:

{
  "key_id": "XXXXXXXXXX",
  "issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "key": "-----BEGIN PRIVATE KEY-----\nYOUR_P8_FILE_CONTENT_HERE\n-----END PRIVATE KEY-----",
  "in_house": false
}

Tip: Copy the content of your .p8 file and replace newlines with \n

Update output/fastlane/Deliverfile:

api_key_path "./api_key.json"
app_identifier "com.yourcompany.yourapp"

metadata_path "./metadata"
skip_binary_upload true
skip_screenshots true
submit_for_review false

Step 4: Upload

cd output/fastlane
fastlane deliver --skip_binary_upload --skip_screenshots --force

Done! Check App Store Connect - your release notes are now in 44 languages.

Uploading to Google Play Console

For Android, we generate a play-store-changelog.txt file in the exact format Play Console expects:

<en-US>
Bug fixes and performance improvements
</en-US>
<tr-TR>
Hata düzeltmeleri ve performans iyileştirmeleri
</tr-TR>
...

Steps:

  1. Open output/android/play-store-changelog.txt
  2. Copy the entire content
  3. Paste into Play Console under ReleaseRelease notesCopy from another release → paste

Or use Fastlane Supply for automation:

cd output/fastlane
fastlane supply --skip_upload_apk --skip_upload_aab --skip_upload_images --skip_upload_screenshots

Full Workflow (One-liner)

# Generate translations and upload to App Store in one command
node src/index.js "Your release notes here" && cd output/fastlane && fastlane deliver --skip_binary_upload --skip_screenshots --force

Cost

This tool uses OpenAI's GPT-4o-mini model which is very affordable:

  • ~$0.02 - $0.05 per full translation batch (82 languages)
  • A typical app with weekly releases: ~$2/month

Environment Variables

Variable Description Required
OPENAI_API_KEY Your OpenAI API key from platform.openai.com Yes

Security

The following files contain sensitive data and are excluded from git:

  • .env - Your OpenAI API key
  • *.p8 - Apple private keys
  • api_key.json - App Store Connect credentials
  • output/ - Generated files

Never commit these files to your repository!

CLI Options

Option Description Default
-o, --output <dir> Output directory ./output
-k, --api-key <key> OpenAI API key (or use env) -
-v, --version-code <code> Android version code default
-l, --langs <codes> Comma-separated language codes all
--ios-only Generate only iOS files false
--android-only Generate only Android files false
-i, --interactive Interactive mode false

Contributing

PRs welcome! Some ideas:

  • Add more translation providers (DeepL, Google Translate)
  • Support for app description translation
  • Support for keyword translation
  • GitHub Action for CI/CD integration

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors