A tool to import recipes into Cooklang format using AI-powered conversion.
- Multi-provider AI support: OpenAI, Anthropic Claude, Azure OpenAI, Google Gemini, and Ollama
- Automatic fallback: Seamlessly switch between providers on failure
- Smart extraction: JSON-LD, MicroData, HTML class extractors, and LLM fallback
- Multiple input types: URLs, plain text, and images (via OCR)
- Local AI support: Run completely offline with Ollama
See architecture.md for system design.
git clone https://github.com/cooklang/cooklang-import
cd cooklang-import
cargo install --path .[dependencies]
cooklang-import = "0.8.6"See docs/api-rust.md for library usage.
- iOS (Swift) - Swift Package Manager or manual installation
- Android (Kotlin) - GitHub Packages (Maven) or manual installation
Set your API key:
export OPENAI_API_KEY="your-api-key-here"The tool works immediately with OpenAI's GPT-4.1-mini model.
cooklang-import https://www.bbcgoodfood.com/recipes/next-level-tikka-masalacooklang-import https://www.bbcgoodfood.com/recipes/next-level-tikka-masala --extract-onlycooklang-import --text "Take 2 eggs and 1 cup of flour. Mix and bake at 350°F for 30 minutes."Requires GOOGLE_API_KEY for OCR.
cooklang-import --image /path/to/recipe-photo.jpgcooklang-import --help # Full usage info
cooklang-import <url> --provider anthropic # Use specific provider
cooklang-import <url> --timeout 60 # Custom timeout (seconds)cp config.toml.example config.tomldefault_provider = "openai"
[providers.openai]
enabled = true
model = "gpt-4.1-mini"
[providers.anthropic]
enabled = true
model = "claude-sonnet-4.5"
[fallback]
enabled = true
order = ["openai", "anthropic"]See docs/providers.md for all provider options.
- Environment variables (e.g.,
OPENAI_API_KEY) config.tomlfile- Default values
| Document | Description |
|---|---|
| architecture.md | System design and project structure |
| docs/providers.md | AI provider configuration |
| docs/api-rust.md | Rust library API |
| docs/sdk-ios.md | iOS/Swift SDK |
| docs/sdk-android.md | Android/Kotlin SDK |
| docs/troubleshooting.md | Common issues and solutions |
cargo test # Run tests
RUST_LOG=debug cooklang-import <url> # Debug logging