2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Markdown AIのサーバーAI機能を使ってWebサイトを作ってみよう by MarkdownAIAdvent Calendar 2024

Day 25

MarkdownAIとmicroCMSを無理矢理連携してAIのサイトを作成する

Last updated at Posted at 2024-12-24

この記事は何?

MarkdownAIは簡単にWebサイトを公開できるサイトですがServer AIを用いることでサイト上にAIを用いたコンテンツを用意することができます
MarkdownAIのServer AIにはKnowledgeという機能があり、AIに知識を与えることが出来ます
このKnowledgeをmicroCMSで管理することによって柔軟なAI管理を目指します

全体の構成

登場人物

  • GitHub
    • GitHub Actions
    • GitHub Pages
  • MarkdownAI
    • ServerAI
  • microCMS
    • コンテンツAPI

構成

markdownai2microcms.drawio.png

デプロイまでのフロー

  • microCMSでコンテンツを更新
  • webhookでGitHub Actionsワークフローを呼び出し
    • node.jsのアプリケーションがmicroCMSコンテンツをAPIから最新のコンテンツを取得
    • 取得したコンテンツをHTMLに書き出し
  • 生成されたHTMLをGitHub Pagesへデプロイ
  • MarkdownAIのServerAIがGitHub PagesのHTMLをKnowledgeとして参照

GitHubの設定

repository

GitHubにPages用のrepositoryを作成します
特別な設定はないです

microCMS コンテンツAPI呼び出し/html生成用のプログラム

ActionsのWorkflowでmicroCMSのコンテンツAPIを呼び出し、取得したコンテンツをHTMLに書き出すプログラムをNode.jsで用意します
httpのリクエスト及びHTMLの生成ができれば環境に制約はありません
APIの呼び出しにはmicroCMSでSDKが用意されていますのでそちらを利用すると簡単に実装できますのでSDKが用意されている環境で実装するのがおすすめです

Actions

microCMSのコンテンツAPIを呼び出してJSON形式のファイルに書き出します
書き出されたJSONファイルをHTMLに書き出します、HTMLへの書き出しは(ejs)[https://github.com/mde/ejs]を用いています

microCMSのAPIを呼び出すコード

index.ts
import getList from "./module/microcms";
import * as fs from 'fs';


(async () => {
  const res = await getList("markdownai");
  const json = JSON.stringify(res);
  console.log(json);
  fs.writeFileSync('./dist/contents.json', json);
})();
module/microcms.ts
import { createClient } from "microcms-js-sdk";

export const getList = async (content: string) => {
  const API_KEY = process.env.X_MICROCMS_API_KEY ? process.env.X_MICROCMS_API_KEY : "" ;
  const SERVICE_DOMAIN = process.env.SERVICE_DOMAIN ? process.env.SERVICE_DOMAIN : "" ;
  const client = createClient({
    serviceDomain: SERVICE_DOMAIN,
    apiKey: API_KEY,
  });
  const res = await client.get({
    endpoint: content,
  });
  return res;
}


export default getList;

以下の2点の値はmicroCMSを利用開始すると取得できます
詳しくは(公式ドキュメント)[https://document.microcms.io/content-api/x-microcms-api-key]を参照してください

  • X_MICROCMS_API_KEY
  • SERVICE_DOMAIN

HTMLを生成するコード

今回はサンプルなので凝ったことはしていません
プログラマブルにHTMLを生成できればなんでもよかったので(ejs)[https://github.com/mde/ejs]を利用しています

<html>
  <head>
  </head>
  <body>
    <table>
      <thead>
        <th>title</th>
        <th>content</th>
      </thead>
      <tbody>
        <% for(let i = 0; contents.length > i; i++) { %>
          <tr>
            <td><%= contents[i]["title"] %></td>
            <td><%= contents[i]["content"] %></td>
          </tr>
        <% } %>
      </tbody>
    </table>
  </body>
</html>

前述のコードで./dist/contents.jsonが生成されていますので以下のようにejsのコマンドで
contents.jsonを読み込むことでコード内でJSONのデータとして扱うことが出来ます
詳しくは公式ドキュメントを参照お願いします

$ ejs ./src/index.ejs -f ./dist/contents.json -o ./_site/index.html

Pages

GitHub Pagesは生成されるHTMLのホスト先です
こちらもインターネットに公開できる環境であればなんでもよいです、GitHub Actionsでの公開が楽なのでオススメです
Pagesに公開されたHTMLをMarkdown AIのKnowledgeとします

microCMSの設定

microCMSのコンテンツが更新された際にGitHub Pages上のHTMLが更新されるようにします
microCMSにWebhookの機能があるのでコンテンツ更新時にGitHub ActionsのWorkflowが稼働するように設定します
追加をクリックすることで`GitHub Actions

image.png

  • Webhookの名前
    • 任意の値
  • GitHubトークンの設定
  • ユーザ名
    • ユーザ名をそのまま入力
  • リポジトリ名
    • Pagesで公開するHTML生成するGitHub Actionsのリポジトリ名
  • イベントトリガー名
    • GitHub Actionsのon.repository_dispatch.typesと合わせる(以下に例示)
name: Node.js CI

on:
  repository_dispatch:
    types: ["githubpages_update4markdownai"]

image.png

あとはチェックボックスからWebhook発火のイベントを設定すればOKです

MarkdownAIの設定

MarkdownAIの管理画面にログインをして(Googleのアカウントでログインできます)
Create Model(ロボのアイコン)をクリックしてAIのモデルを作成します
スクリーンショット 2024-12-20 000156.png

Select Modelの選択及びModel Name/Promptを入力します

このKnowledge> の部分をLinkに選択してGitHub PagesのURLを入力したらCreateをクリックでAIモデルの設定は完了
image.png

をクリックするとInsertボタンがアクティブになるのでクリックしてscriptを選択

スクリーンショット 2024-12-20 001019.png

先程作成したmodelを選択
image.png

テキストフィールドにスクリプトが挿入されます
Saveをクリックすれば保存され完成です

その後View > URL > Publish
この手順でインターネットにサイトが公開がされます
ポップアップ上のURLにアクセスすれば公開されたサイトへ訪問することができます
これで完了です!

最後に

MarkdownAI,microCMS,GitHub(Pages)の連携によるAIを用いたWebサイトの構築について紹介しました
MarkdownAIによる容易なAIの実装とmicroCMSのリッチなUIによるAIのカスタムが本稿の目指すところです
本稿はAI要素を組み込んだサイトをMarkdownAIとmicroCMSの連携で簡単に作成するを重きを置いております

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?