{"id":50538351,"url":"https://github.com/appleple/acms-ai","last_synced_at":"2026-06-03T18:02:12.718Z","repository":{"id":361103032,"uuid":"1253042593","full_name":"appleple/acms-ai","owner":"appleple","description":"a-blog cms で使用できる AIプラグイン（拡張アプリ）です","archived":false,"fork":false,"pushed_at":"2026-05-29T06:49:13.000Z","size":914,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T08:28:57.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appleple.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-29T05:26:21.000Z","updated_at":"2026-05-29T06:49:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/appleple/acms-ai","commit_stats":null,"previous_names":["appleple/acms-ai"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/appleple/acms-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appleple","download_url":"https://codeload.github.com/appleple/acms-ai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33876328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-03T18:02:11.707Z","updated_at":"2026-06-03T18:02:12.712Z","avatar_url":"https://github.com/appleple.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI拡張アプリ\n\na-blog cms の AI機能を拡張するアプリです。\n\n## ダウンロード\n\n最新版の拡張アプリは以下からダウンロードできます。\n\n- [AI.zip をダウンロード（最新版）](https://github.com/appleple/acms-ai/raw/main/build/AI.zip)\n\nバージョンを指定してダウンロードしたい場合や過去のバージョンは [build/](../build/) ディレクトリ、または [Releases](https://github.com/appleple/acms-ai/releases) を参照してください。\n\n## 動作環境\n\n- a-blog cms: Ver. 3.2.x (3.3+ not tested yet)\n- PHP: 8.1 – 8.4 (8.5+ not tested yet)\n- a-blog cms for Professional or Enterprise のみ（現状スタンダードライセンスでの利用はライセンス違反となります）\n\n## サポートモデル\n\n- gpt-5.4, gpt-5.4-pro, gpt-5.4-mini, gpt-5.4-nano\n\n## 注意点\n- ChatGPT の API KEY は利用できるモデルの制限をかけることができます。使用したいモデルが表示されない場合は、API KEY の設定を確認してみてください。\n- このキーとモデルは、config として保存されます。config はキャッシュを残しますので、うまく設定できない場合はダッシュボードからコンフィグキャッシュをクリアしてください。\n\n## インストール方法\n\n拡張アプリをダウンロード後、zip ファイルを解凍して `extension/plugins/` に設置します。\n\n設置が完了すると、「管理画面 -\u003e 拡張アプリ」に `AI` という名前で本拡張アプリが表示されるので、インストールをクリックしインストールします。\n\n## 使い方\n\n### 準備：ChatGPT API からキーの取得\n`https://platform.openai.com/docs/overview` へログインし、`Organization ID` と `Project ID` と `API KEY` を取得してください。\n\n#### Organization ID\n`Setting \u003e Organization \u003e General` から取得できます。\n\n#### Project ID\n`Setting \u003e Project \u003e General` から取得できます。初期では Default Project が作成されていますが、利用するアプリケーション毎に作成することをお勧めします。利用量が Project ごとに確認できます。\n\n#### API KEY\n`Dashboard \u003e API Keys` の `Create new secret Key` からキーが取得できます。この時、利用する `Project ID` を指定します。\n※ User API Keys もありますが、この拡張アプリは対応しておりません。\n\n### a-blog cms の管理画面設定\n準備で取得した `Organization ID` と `Project ID` と `API KEY` を AI管理画面で入力し、保存してください。\n\n![AI拡張アプリの管理画面でキーを入力し保存](images/acms-admin-key.png)\n\nキーが正しく設定できると、モデルが選択できるようになります。利用するモデルを選択し、再度保存してください。\n\n![AI拡張アプリの管理画面でモデルを選択し保存](images/acms-admin-model.png)\n\n認証が完了したら、「プロンプト設定」でタイトル生成・タグ生成の機能を有効にし、必要に応じてカスタムプロンプトを設定してください。\n\n## エントリー編集AI機能\n「AI機能」ラベルのアコーディオンがSEO設定の下に追加されます。\n\n### タイトル生成機能\n「ユニットからタイトルを生成」ボタンをクリックすると、ユニットを元にタイトルが生成されます。\n\n![エントリー編集画面にあるタイトル生成ボタン](images/acms-entry-create-title.png)\n\n「再生成」ボタンをクリックするとタイトルが再生成されます。再生成すると、前回作成したタイトルは消えてしまいますのでご注意ください。「適応」ボタンをクリックすることでタイトルに反映されます。エントリーの保存をしないと、エントリーのタイトルとして保存されないのでご注意ください。\n\n![エントリー編集画面でユニットからタイトルの生成](images/acms-entry-title.png)\n\n### タグ生成機能\n「ユニットからタグを生成」ボタンをクリックすると、ユニットを元にタグが生成されます。\n\n![エントリー編集画面にあるタグ生成ボタン](images/acms-entry-create-tag.png)\n\n「追加生成」ボタンをクリックすると、前回のタグに加えて追加で生成されます。追加生成では、a-blog cms 本来のタグ設定と ChatGPT で生成したタグで選択されているタグの情報も加えて生成されるので、より精度の高いタグが生成されます。エントリーの保存をしないと、エントリーのタグとして保存されないのでご注意ください。\n\n![エントリー編集画面でユニットからタグの生成](images/acms-entry-tag.png)\n\n## AIアシスタント機能\n\n### ライトエディタ連携\nライトエディタにある「AIアシスタント」ボタンをクリックすると、画面右側にチャットドロワーが開きます。現在の編集内容を文脈として、テキストの校正・要約・翻訳・書き直しなど、自由に AI へ指示できます。結果は「挿入」ボタンでエディタへ反映されます。\n\n### `\u003cacms-ai-assistant-button\u003e` Web Component\nテンプレートから直接 AI アシスタントを呼び出せる Web Component です。任意の `\u003ctextarea\u003e` をターゲットに指定することで、カスタムフィールドなどエントリー編集画面の任意の場所にAIボタンを追加できます。\n\nこの要素は **Light DOM** で動作します。子要素として書いた `\u003cbutton\u003e` がそのままボタンとして利用されるため、`acms-admin-btn` などの管理画面標準クラスや任意の CSS をそのまま適用できます。`\u003cbutton\u003e` を書かなかった場合は、要素内のテキストを内包する `\u003cbutton class=\"acms-admin-btn\"\u003e` が自動生成されます。\n\n#### 属性\n\n| 属性 | 必須 | 説明 |\n|------|------|------|\n| `target` | 必須 | 参照する textarea の CSS セレクター |\n| `insert-target` | 任意 | 挿入先の textarea セレクター（省略時は `target` と同じ） |\n| `prompt` | 任意 | 最初のメッセージとして送るプロンプト文字列 |\n| `description` | 任意 | チャット欄の説明文 |\n| `drawer-use` | 任意 | `\"false\"` を指定するとドロワーを開かずサイレント実行 |\n\n#### スタイリング\n\nLight DOM のため、外部 CSS（`acms-admin.css` の `.acms-admin-btn` など）がそのまま適用できます。子要素として書いた `\u003cbutton\u003e` に好きなクラスを付与してください。\n\n```html\n\u003cacms-ai-assistant-button target=\"#body\"\u003e\n  \u003cbutton type=\"button\" class=\"acms-admin-btn\"\u003eAIアシスタントを開く\u003c/button\u003e\n\u003c/acms-ai-assistant-button\u003e\n```\n\nローディング中は、ホスト要素（`\u003cacms-ai-assistant-button\u003e`）に `loading` 属性が付与され、ボタン内にローディング表示用の `\u003cspan\u003e` が追加されます。スピナー等の標準スタイルは本拡張アプリの CSS で提供されますが、必要に応じて以下のクラスで上書きできます。\n\n| クラス | 対象 |\n|--------|------|\n| `acms-ai-assistant-button__loading` | ローディング表示のコンテナ |\n| `acms-ai-assistant-button__spinner` | デフォルトのスピナー |\n| `acms-ai-assistant-button__sr-only` | スクリーンリーダー向けテキスト |\n\n```css\nacms-ai-assistant-button[loading] button {\n  /* ローディング中のボタンの見た目を調整する例 */\n  opacity: 0.7;\n}\n```\n\n#### 使用例\n\n**ドロワーを開いてチャットする（基本）**\n```html\n\u003cacms-ai-assistant-button target=\"#body\"\u003e\n  \u003cbutton type=\"button\" class=\"acms-admin-btn\"\u003eAIアシスタントを開く\u003c/button\u003e\n\u003c/acms-ai-assistant-button\u003e\n```\n\n`\u003cbutton\u003e` を省略すると、テキストを内包したボタンが自動生成されます。\n\n```html\n\u003cacms-ai-assistant-button target=\"#body\"\u003e\n  AIアシスタントを開く\n\u003c/acms-ai-assistant-button\u003e\n```\n\n**プロンプトを指定してドロワーを開く**\n```html\n\u003cacms-ai-assistant-button\n  target=\"#body\"\n  prompt=\"英語に翻訳してください。\"\n\u003e\n  \u003cbutton type=\"button\" class=\"acms-admin-btn\"\u003e英訳する\u003c/button\u003e\n\u003c/acms-ai-assistant-button\u003e\n```\n\n**ドロワーを開かずサイレント実行（自動校正など）**\n\n`drawer-use=\"false\"` を指定すると UI を表示せず即時実行します。AI のレスポンスから `\u003ccorrection\u003e` タグで囲まれた内容が自動的に textarea へ挿入されます。\nもしレスポンスが安定しない場合、「修正後のテキストを \u0026lt;correction\u0026gt;\u0026lt;/correction\u0026gt; タグで囲んで返してください。」とpromptに付け足してください。\n\n```html\n\u003cacms-ai-assistant-button\n  target=\"#body\"\n  prompt=\"誤字脱字を修正してください。修正後のテキストを \u0026lt;correction\u0026gt;\u0026lt;/correction\u0026gt; タグで囲んで返してください。\"\n  drawer-use=\"false\"\n\u003e\n  \u003cbutton type=\"button\" class=\"acms-admin-btn\"\u003e自動校正する\u003c/button\u003e\n\u003c/acms-ai-assistant-button\u003e\n```\n\n**別フィールドへ結果を挿入する**\n\n`insert-target` を指定すると、結果を別の textarea へ挿入できます。\n\n```html\n\u003cacms-ai-assistant-button\n  target=\"#body\"\n  insert-target=\"#title\"\n  prompt=\"英語に翻訳してください。\"\n  drawer-use=\"false\"\n\u003e\n  \u003cbutton type=\"button\" class=\"acms-admin-btn\"\u003eタイトルを英訳して挿入\u003c/button\u003e\n\u003c/acms-ai-assistant-button\u003e\n```\n\nサイレント実行時は、ホスト要素に対して以下のカスタムイベントが発火します。処理状況に応じた UI 制御に利用できます。\n\n| イベント名 | タイミング |\n|-----------|-----------|\n| `acms-ai:request-start` | AI へのリクエスト開始時 |\n| `acms-ai:request-end` | AI のレスポンス受信完了時 |\n| `acms-ai:before-insert` | textarea への挿入直前 |\n| `acms-ai:after-insert` | textarea への挿入直後 |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappleple%2Facms-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappleple%2Facms-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappleple%2Facms-ai/lists"}