A Keboola Custom Python Component that generates release notes from GitHub repositories using AI-powered summaries.
- GitHub Integration: Fetches release data from GitHub repositories using optimized GraphQL API
- AI Summaries: Generates intelligent summaries of changes using Google's Gemini AI
- Keboola Integration: Native Keboola component with table output and state management
- Parallel Processing: Efficient parallel processing of multiple repositories
- Ultra-Optimized GraphQL: Single GraphQL request for all repositories (50 per batch) for maximum performance
This component uses ultra-optimized GraphQL queries that:
- Fetch all repository data in batches of 50 repositories per request
- Include tags, workflow files, and package.json content in a single query
- Reduce API calls by 90% compared to standard GitHub API
- Process 170+ repositories in just a few API requests
github_tokenor#github_token: GitHub API token with repository access
google_ai_api_keyor#google_ai_api_key: Google AI API key for generating summariesdays_back: Number of days to look back (default: 30)table_name: Output table name (default: "releases")
{
"parameters": {
"github_token": "your_github_token",
"google_ai_api_key": "your_google_ai_key",
"days_back": 30,
"table_name": "releases"
}
}- Clone this repository
- Install dependencies using UV:
uv sync - Set up your configuration in
data/config.json - Run:
python main.py
For local testing, create a data/ directory with your configuration:
data/
├── config.json
└── out/
└── tables/
Example data/config.json:
{
"parameters": {
"github_token": "your_github_token",
"google_ai_api_key": "your_google_ai_key",
"days_back": 30,
"table_name": "releases"
}
}The component generates a table with the following columns:
date: Release daterepo_name: Repository namecomponent_name: Component identifiertag_name: Git tag namechanges: JSON array of changesai_description: AI-generated summary (if available)component_stage: Component stage (private/beta/production)tag_url: Link to GitHub release
- Removed Docker support - Component runs locally with UV package manager
- Simplified configuration - Removed complex GraphQL optimization parameters
- Always uses ultra-optimized GraphQL - Maximum performance by default
- Batch processing - Processes all repositories in batches of 50
- Improved error handling - Graceful handling of missing AI API keys
If you encounter GitHub rate limiting:
- Use a GitHub token with higher rate limits
- The component automatically uses optimized GraphQL to minimize API calls
- Ensure Google AI API key is provided
- Check API key permissions
- Verify internet connectivity
- Component will still generate release notes without AI summaries
- Ensure repositories have proper workflow files (
.github/workflows/*.yml) - Check for
package.jsonwith component ID - Verify GitHub token has repository access
MIT License - see LICENSE file for details.