--- title: Kashikogi Async Space (Draft) emoji: 🎓 colorFrom: blue colorTo: purple sdk: gradio sdk_version: "4.19.2" app_file: app.py pinned: false --- # Kashikogi Async Space 賢杉賢太郎プロジェクト向けの Hugging Face Space 構成です。Gradio Blocks と FastAPI を同一プロセスで提供し、以下の機能を実装します。 - `POST /api/audio/upload` : Dify 音声化ノードで生成された一時 URL を受け取り、Hugging Face Dataset に保存 - `POST /api/video/render` : PDF とスライド音声一覧を受け取り、バックグラウンドジョブで動画化 - `GET /api/jobs/{job_id}` : 動画化ジョブの進捗と結果確認 - Gradio UI : Audio Upload / Video Render / Job Status タブで手動検証 ## ディレクトリ構成 ``` majin/kashikogi_async_space/ ├── README.md ├── app.py ├── kashikogi_app/ │ ├── core/ │ ├── models/ │ ├── services/ │ ├── utils/ │ └── gradio_interface.py ├── requirements.txt └── packages.txt ``` ## 必要な環境変数 | 変数名 | 内容 | |--------|------| | `HF_DATASET_ID` | 音声・動画・プレビューを保存する Dataset ID | | `HF_TOKEN` | Dataset 書き込み用トークン | | `AUDIO_STORAGE_PREFIX` | 音声ファイル保存ディレクトリ(既定 `audio/`) | | `VIDEO_STORAGE_PREFIX` | 動画・プレビュー保存ディレクトリ(既定 `videos/`) | | `PDF_RENDER_DPI` | PDF→画像変換時の DPI(既定 150) | | `PREVIEW_SLIDE_INDEX` | プレビューに使うスライド番号(0 始まり、既定 1) | | `VIDEO_JOBS_MAX_WORKERS` | 動画レンダリングの同時実行数(既定 1) | | `VIDEO_JOB_CLEANUP_SECONDS` | ジョブ履歴保持秒数(既定 3600) | | `LOG_LEVEL` | ログレベル(既定 `INFO`) | | `CALLBACK_TOKEN` | API/Gradio いずれも必須の共有トークン(未入力時は401) | | `DIFY_WORKFLOW_URL` | 動画完了時に呼び出す Dify ワークフローのエンドポイント | | `DIFY_API_KEY` | 上記ワークフロー実行用の API キー | | `DIFY_LINE_TOKEN_VALUE` | Dify 側で LINE トークンを参照するための値(既定 `{{#env.LINE_TOKEN#}}`) | ## Space 依存 ``` poppler-utils ffmpeg ``` Python 依存は `requirements.txt` を参照してください。