diff --git "a/NotebookForgeBeta.md" "b/NotebookForgeBeta.md"
new file mode 100644--- /dev/null
+++ "b/NotebookForgeBeta.md"
@@ -0,0 +1,3234 @@
+# << NotebookForgeBeta>>
+## NotebookForgeBeta File Tree
+
+```
+NotebookForgeBeta/
+ app.py
+ create_jupyter_notebook.py
+ README.md
+ docs/
+ NotebookForge_icon.jpg
+ example/
+ example01.ipynb
+ example01.md
+ script/
+ activate-notebook-forge.bat
+ activate-notebook-forge.sh
+
+```
+
+## app.py
+
+```python
+import streamlit as st
+from create_jupyter_notebook import create_jupyter_notebook
+import base64
+
+def download_notebook(notebook_file):
+ with open(notebook_file, 'rb') as file:
+ notebook_data = file.read()
+ b64 = base64.b64encode(notebook_data).decode()
+ href = f'ノートブックをダウンロード'
+ return href
+
+def main():
+
+ st.markdown('''
+
+
+
+
+
NotebookForge
+~Markdown to Jupyter Notebook Converter~
+
+
+
+ ''', unsafe_allow_html=True)
+ markdown_content = st.text_area('Markdownファイルの内容を貼り付けてください', height=400)
+
+ if st.button('変換'):
+ if markdown_content.strip():
+ with open('temp_markdown.md', 'w', encoding='utf-8') as file:
+ file.write(markdown_content)
+
+ output_file = 'output_notebook.ipynb'
+ create_jupyter_notebook('temp_markdown.md', output_file)
+
+ st.success('ノートブックが生成されました。')
+ st.markdown(download_notebook(output_file), unsafe_allow_html=True)
+ else:
+ st.warning('Markdownファイルの内容を入力してください。')
+
+if __name__ == '__main__':
+ main()
+```
+
+## create_jupyter_notebook.py
+
+```python
+import json
+import re
+
+def create_jupyter_notebook(markdown_file, output_file):
+ with open(markdown_file, 'r', encoding="utf-8") as file:
+ markdown_content = file.read()
+
+ cells = []
+ chunks = re.split(r'(#+\s.*)', markdown_content)
+
+ for i in range(len(chunks)):
+ chunk = chunks[i].strip()
+ if chunk:
+ if chunk.startswith('#'):
+ cells.append({
+ 'cell_type': 'markdown',
+ 'source': [chunk]
+ })
+ else:
+ code_chunks = re.split(r'```python\n(.*?)```', chunk, flags=re.DOTALL)
+ for j in range(len(code_chunks)):
+ if j % 2 == 0 and code_chunks[j].strip():
+ cells.append({
+ 'cell_type': 'markdown',
+ 'source': code_chunks[j].strip().split('\n')
+ })
+ elif j % 2 == 1:
+ code_lines = code_chunks[j].strip().split('\n')
+ cells.append({
+ 'cell_type': 'code',
+ 'execution_count': None,
+ 'metadata': {},
+ 'outputs': [],
+ 'source': code_lines
+ })
+
+ notebook = {
+ 'nbformat': 4,
+ 'nbformat_minor': 0,
+ 'metadata': {
+ 'colab': {
+ 'provenance': []
+ },
+ 'kernelspec': {
+ 'name': 'python3',
+ 'display_name': 'Python 3'
+ },
+ 'language_info': {
+ 'name': 'python'
+ }
+ },
+ 'cells': cells
+ }
+
+ with open(output_file, 'w') as file:
+ json.dump(notebook, file, indent=2)
+
+if __name__ == '__main__':
+
+ # 使用例
+ markdown_file = 'example/example01.md'
+ output_file = 'example/example01.ipynb'
+ create_jupyter_notebook(markdown_file, output_file)
+```
+
+## README.md
+
+```markdown
+---
+title: NotebookForgeDemo
+emoji: 📉
+colorFrom: blue
+colorTo: pink
+sdk: streamlit
+sdk_version: 1.33.0
+app_file: app.py
+pinned: false
+license: mit
+---
+
+
+
+
+
NotebookForge
+
+
+
+
+## Introduction
+NotebookForgeは、マークダウンファイルをJupyter Notebookに変換するPythonツールです。主な特徴と利点は以下の通りです。
+
+- マークダウンファイル内のPythonコードブロックを適切なセルタイプ(コードセルまたはマークダウンセル)に自動変換
+- 通常のテキストはマークダウンセルに変換
+- 生成されたNotebookは指定された出力ファイルに保存
+- シンプルで使いやすいインターフェース
+
+NotebookForgeを使用することで、マークダウンファイルで書かれたドキュメントやチュートリアルを簡単にJupyter Notebook形式に変換できます。これにより、対話的な実行環境を提供しつつ、マークダウンの読みやすさと書きやすさを維持できます。
+
+>このリポジトリは[SourceSage](https://github.com/Sunwood-ai-labs/SourceSage)を活用しており、リリースノートやREADME、コミットメッセージの9割は[SourceSage](https://github.com/Sunwood-ai-labs/SourceSage) + [claude.ai](https://claude.ai/)で生成しています。
+
+## Demo
+NotebookForgeの使用例として、Cohere APIのClassifyエンドポイントについての解説をマークダウンで書き、Jupyter Notebookに変換しました。
+
+- [example/example01.md](example/example01.md): 変換元のマークダウンファイル
+- [example/example01.ipynb](example/example01.ipynb): 変換後のJupyter Notebookファイル
+
+このようにNotebookForgeを使うことで、APIドキュメントやチュートリアルを対話的なNotebook形式で提供できます。
+
+
+
+## Updates
+
+- [2024/04/11] [NotebookForge v1.0.0](https://github.com/Sunwood-ai-labs/NotebookForgeBeta/releases/tag/v1.0.0)
+ - Streamlitベースのウェブアプリを実装
+ - ユーザーフレンドリーなGUIでマークダウンからノートブックへの変換を実行可能に
+ - 生成されたノートブックをダウンロードする機能を追加
+ - Hugging Faceでのデモアプリをリリース
+ - [NotebookForgeDemo](https://huggingface.co/spaces/MakiAi/NotebookForgeDemo)にてアプリを公開
+ - ノートブック生成ロジックの最適化
+ - ドキュメントの拡充
+ - マークダウン解析時のバグを修正
+
+- [2024/04/10] [NotebookForge v0.2.0](https://github.com/Sunwood-ai-labs/NotebookForgeBeta/releases/tag/v0.2.0)
+ - Cohere APIのClassifyエンドポイントについての解説をサンプルに追加
+ - READMEファイルを追加し、プロジェクトの概要とツールの使い方を記載
+ - `example`ディレクトリを新設し、サンプルファイルを整理
+ - サンプルコードのインデントを修正し可読性を向上
+
+
+## Getting Started
+### インストール
+NotebookForgeを使用するには、Python 3.11以上が必要です。以下のコマンドでNotebookForge用のConda環境を作成し、アクティベートします。
+
+ ```bash
+ conda create -n notebook-forge python=3.11
+ conda activate notebook-forge
+ ```
+
+### 使用方法
+1. コードブロックを含むマークダウンファイルを用意します。(例: `example/example01.md`)
+
+2. 以下のコマンドを実行し、マークダウンファイルをJupyter Notebookに変換します。
+ ```bash
+ python create_jupyter_notebook.py
+ ```
+
+3. 変換後のNotebookファイルが生成されます。(例: `example/example01.ipynb`)
+
+### カスタマイズ
+`create_jupyter_notebook.py`スクリプトの以下の部分を変更することで、入出力ファイルのパスをカスタマイズできます。
+
+ ```python
+ markdown_file = 'example/example01.md'
+ output_file = 'example/example01.ipynb'
+ create_jupyter_notebook(markdown_file, output_file)
+ ```
+
+## Contributing
+NotebookForgeへの貢献を歓迎します。バグ報告、機能要望、プルリクエストをお待ちしております。
+
+## License
+NotebookForgeはMITライセンスの下で公開されています。詳細は[LICENSE](LICENSE)ファイルを参照してください。
+
+## Acknowledgements
+
+NotebookForgeの開発にあたり、以下のオープンソースプロジェクトを参考にさせていただきました。
+
+- [Jupyter Notebook](https://jupyter.org/)
+- [nbformat](https://github.com/jupyter/nbformat)
+
+```
+
+## docs/NotebookForge_icon.jpg
+
+```
+ JFIF H H ZExif MM * J Q Q Q C
+
+
+
+
+ C "
+ } !1AQa"q2#BR$3br
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
+ w !1AQaq"2B #3Rbr
+$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (8Dr (
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(
+(0ܔESȡF QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE QE PN*9.crY: sK;5-,\'_4+}KZ֭K$L