____ _ ____ _ _
| _ \(_) ___ / ___|__ _ _ __ | |_(_) ___ _ __ _ __
| |_) | |/ __| | / _` | '_ \| __| |/ _ \| '_ \| '__|
| __/| | (__| |__| (_| | |_) | |_| | (_) | | | | |
|_| |_|\___|\____\__,_| .__/ \__|_|\___/|_| |_|_|
|_|
AI-powered tool to automatically generate Instagram-style captions for your photos – on Windows, Linux and macOS.
- 🧠 Uses OpenAI's Vision API to understand and describe your photos
- 🌍 Multilingual output (English, German, Spanish)
- 🗞️ Output as
.txtfile - 🖼️ Supports multiple images
- ⚙️ Flexible backend: OpenAI or Azure OpenAI
- 🎛️ OpenAI model selection (gpt-5.x, gpt-4.1, gpt-4o families)
- 💻 Available as:
- Console App (cross-platform)
- WPF Desktop App (Windows only)
- Avalonia App (modern cross-platform GUI for Windows, Linux & macOS)
- .NET 10 SDK
- An API key from OpenAI or your Azure OpenAI deployment
cd PicCaptionr.ConsoleApp
dotnet runYou will be prompted to enter:
- your host (OpenAI / Azure OpenAI)
- your API key, Deployment name and Endpoint (depending on the host)
- your OpenAI model (when using OpenAI)
- the path to the folder containing the images
- target language
- optional additional instructions
- the path to an output folder
Output file (.txt) will be saved in the given directory
cd PicCaptionr.WPFApp
dotnet build
dotnet run- Requires Windows and .NET Desktop Runtime
- Simple graphical interface with:
- Folder pickers
- Language and model selection
- Progress bar and log viewer
cd PicCaptionr.AvaloniaApp
dotnet build
dotnet run- Works on Windows, Linux, and macOS
- Modern responsive UI using Avalonia UI
- Cross-platform folder picker and dynamic layout
- Provides the same functionality as the WPF app, but with platform-independent UI
💡 macOS Notice: You may need to allow the app to run via terminal:
chmod +x PicCaptionr.AvaloniaApp xattr -d com.apple.quarantine PicCaptionr.AvaloniaApp
All apps are built and published automatically via GitHub Actions:
- ✅ Console App (cross-platform):
win-x64,linux-x64,osx-x64,osx-arm64
- ✅ WPF App (Windows only):
win-x64(single.exe)
- ✅ Avalonia App (cross-platform):
win-x64,linux-x64,osx-x64,osx-arm64(self-contained)
When a new version tag is pushed (v*), a GitHub release is automatically created with:
- Pre-compiled, self-contained binaries for all platforms
- Console App and WPF App as single executable files
- Avalonia App as complete self-contained packages
Download releases: Visit the Releases page to get the latest builds for your platform.
All variants require:
- An API key from OpenAI or Azure
- For Azure OpenAI:
- Endpoint URL
- Deployment name
- For OpenAI:
- Model name (choose from gpt-5.x, gpt-4.1, gpt-4o families)
Credentials are entered at runtime and never stored permanently.
PicCaptionr.ConsoleApp # Console-based UI (cross-platform)
PicCaptionr.WPFApp # Windows-only WPF GUI
PicCaptionr.AvaloniaApp # Cross-platform GUI (Avalonia)
PicCaptionr # Shared models, services, and logic
A typical output entry in JSON format might look like this:
[
{
"ImageName": "tsjreiseblog_28-Jul-2025.jpg",
"ImageMetaData": {
"CaptureDate": null,
"Latitude": null,
"Longitude": null
},
"OpenAIResponse": {
"RawContent": "Exploring the charming streets and historic sights of Civitavecchia, Italy 🇮🇹✨ From vibrant scooters to stunning architecture and scenic harbor views—every corner tells a story. Can't wait to see more of this beautiful port city! 🚤🏛️🌊\n\n#Civitavecchia #ItalyTravel #PortCity #HistoricItaly #TravelItaly #ItalianArchitecture #HarborViews #ScooterLife #MediterraneanVibes #TravelDestinations",
"FormattedContent": "Exploring the charming streets and historic sights of Civitavecchia, Italy 🇮🇹✨ From vibrant scooters to stunning architecture and scenic harbor views—every corner tells a story. Can't wait to see more of this beautiful port city! 🚤🏛️🌊\r\n\r\n#Civitavecchia #ItalyTravel #PortCity #HistoricItaly #TravelItaly #ItalianArchitecture #HarborViews #ScooterLife #MediterraneanVibes #TravelDestinations",
"InputTokens": 800,
"OutputTokens": 94
}
}
]MIT License © tsjdev-apps
Found a bug? Want to improve the UI?
Open an Issue or submit a Pull Request.
We ❤️ feedback and contributions!





