🌐 Live Demo: https://shinichi-ohki.github.io/maker_event/
A Python script to generate static web pages for maker events from Google Sheets data.
Google Sheetsのデータからメイカーイベントの静的ウェブページを生成するPythonスクリプトです。
This project was generated using AI/LLM tools. このプロジェクトはAI/LLMツールを使用して生成されました。
The original idea was generated by humans. 元となるアイデアは人間によって生成されました。
- 📊 Google Sheets Integration - Fetch event data directly from Google Sheets
- 🌍 Multi-language Support - Japanese events in Japanese, international events in English
- 📱 Responsive Design - Mobile-friendly event listing page
- 🎨 Modern UI - Clean, card-based layout inspired by MakerFaire.com
- 📅 Smart Filtering - Only shows upcoming events
- 🔄 Easy Updates - Simple script execution to refresh the page
- 🔍 Change Detection - Efficient updates only when spreadsheet content changes
- 🚀 Auto Git Push - Automatic commit and push functionality
- ⏰ Scheduled Updates - GitHub Actions for daily automatic updates
- 🖼️ Parallel Image Fetching - Fast concurrent image processing
- 📝 Auto-generated OGP Images - Timeline-style social media previews
- 📊 Google Sheets連携 - Google Sheetsから直接イベントデータを取得
- 🌍 多言語対応 - 日本のイベントは日本語、海外イベントは英語で表示
- 📱 レスポンシブデザイン - モバイルフレンドリーなイベント一覧ページ
- 🎨 モダンUI - MakerFaire.comにインスパイアされた洗練されたカードベースレイアウト
- 📅 スマートフィルタリング - 今後開催されるイベントのみ表示
- 🔄 簡単更新 - スクリプト実行でページを簡単に更新
- 🔍 変更検出機能 - スプレッドシート内容変更時のみ効率的に更新
- 🚀 Git自動プッシュ - 自動コミット・プッシュ機能
- ⏰ 定期自動更新 - GitHub Actionsによる毎日の自動更新
- 🖼️ 並列画像取得 - 高速な並行画像処理
- 📝 OGP画像自動生成 - タイムライン形式のソーシャルメディア用プレビュー
- Python 3.8+
- uv (Python package manager)
The Noto Sans JP font file (NotoSansJP-Regular.ttf) is not included in this repository due to licensing considerations. The script will automatically download the font from Google Fonts when first run. If the download fails, the script will fall back to system default fonts.
Noto Sans JPフォントファイル(NotoSansJP-Regular.ttf)はライセンスの関係でリポジトリに含まれていません。スクリプトの初回実行時にGoogle Fontsから自動的にダウンロードされます。ダウンロードに失敗した場合は、システムのデフォルトフォントが使用されます。
generate_events.py is hardcoded to https://shinichi-ohki.github.io/maker_event/ogp_image.png. If you're deploying this to a different domain, you'll need to update the ogp_image_url variable in the generate_html() function to match your deployment URL.
generate_events.py内のOGP画像URLはhttps://shinichi-ohki.github.io/maker_event/ogp_image.pngにハードコードされています。異なるドメインにデプロイする場合は、generate_html()関数内のogp_image_url変数をデプロイメントURLに合わせて更新する必要があります。
- Clone this repository | このリポジトリをクローン:
git clone <repository-url>
cd maker_event- Dependencies are automatically managed by uv | 依存関係はuvによって自動管理されます
# Basic generation | 基本生成
uv run generate_events.py
# With automatic Git push | Git自動プッシュ付き
uv run generate_events.py --auto-push
# Force generation (skip change detection) | 強制生成(変更検出をスキップ)
uv run generate_events.py --force
# Force generation with auto push | 強制生成 + 自動プッシュ
uv run generate_events.py --force --auto-pushThe system automatically updates daily at 3 AM JST via GitHub Actions. Manual execution is also available from the GitHub Actions tab.
システムはGitHub Actionsにより毎日午前3時(JST)に自動更新されます。GitHub ActionsタブからManual実行も可能です。
The script will:
- Check for spreadsheet changes (unless
--forceis used) - Fetch data from the configured Google Sheets
- Parse and filter upcoming events with parallel image fetching
- Generate a responsive HTML page (
index.html) and OGP image - Optionally commit and push changes (if
--auto-pushis used) - Display statistics about the generated events
スクリプトは以下の処理を行います:
- スプレッドシートの変更をチェック(
--force使用時を除く) - 設定されたGoogle Sheetsからデータを取得
- 並列画像取得で今後のイベントを解析・フィルタリング
- レスポンシブなHTMLページ(
index.html)とOGP画像を生成 - 変更をコミット・プッシュ(
--auto-push使用時のみ) - 生成されたイベントの統計情報を表示
The generated index.html file will contain:
- Japanese Events Section - Events in Japan displayed in Japanese
- International Events Section - Events outside Japan displayed in English
- Responsive Grid Layout - Cards with event details, dates, and links
- Modern Styling - Professional appearance with hover effects
生成されるindex.htmlファイルには以下が含まれます:
- 日本のイベントセクション - 日本のイベントを日本語で表示
- 海外イベントセクション - 海外のイベントを英語で表示
- レスポンシブグリッドレイアウト - イベント詳細、日付、リンクを含むカード
- モダンスタイリング - ホバーエフェクト付きのプロフェッショナルな外観
The script is configured to use a specific Google Sheets URL. To use your own sheet:
- Make your Google Sheet publicly viewable
- Update the
sheet_urlvariable ingenerate_events.py - Ensure your sheet has the expected column names
スクリプトは特定のGoogle Sheets URLを使用するよう設定されています。独自のシートを使用する場合:
- Google Sheetを公開表示可能にする
generate_events.pyのsheet_url変数を更新- シートに期待される列名があることを確認
The script looks for these column names (supports both Japanese and English):
| Japanese | English | Description |
|---|---|---|
| イベント名 | Event Name | Event title |
| 開催日 | Date | Event date |
| 場所 | Location | Event location |
| 国 | Country | Country name |
| 詳細 | Description | Event description |
| URL | Website | Event website |
| 画像URL | Image URL | Event image |
Development dependencies are automatically managed when running development tools with uv run.
開発依存関係は uv run で開発ツールを実行する際に自動的に管理されます。
uv run black .
uv run isort .uv run flake8 .maker_event/
├── .github/
│ └── workflows/
│ └── update-events.yml # GitHub Actions workflow | GitHub Actionsワークフロー
├── generate_events.py # Main script | メインスクリプト
├── pyproject.toml # Project configuration | プロジェクト設定
├── README.md # This file | このファイル
├── CLAUDE.md # Development history | 開発履歴
├── templates/ # HTML templates (auto-generated) | HTMLテンプレート(自動生成)
├── index.html # Generated output | 生成された出力
├── ogp_image.png # Generated OGP image | 生成されたOGP画像
├── .last_state.json # Change detection state | 変更検出状態
└── NotoSansJP-Regular.ttf # Font file (auto-downloaded) | フォントファイル(自動ダウンロード)
Note: Files marked as "auto-generated" or "auto-downloaded" are created when you run the script and are not included in the repository.
注意: "自動生成" や "自動ダウンロード" と記載されたファイルは、スクリプト実行時に作成されるファイルで、リポジトリには含まれていません。
This project is open source and available under the MIT License.
このプロジェクトはオープンソースで、MITライセンスの下で利用可能です。
Contributions are welcome! Please feel free to submit issues and pull requests.
貢献を歓迎します!イシューやプルリクエストをお気軽に提出してください。