📝

ChatGPTにサイトロゴを作ってもらいOGPLinkに追加した
February 16, 2024February 25, 2024
#ブログ制作#develop

サイトのロゴを作ろうと思い立ったがどうデザインしていいかわからなかった。

いい感じに作って欲しいが適切に伝えられる気もしなかったので chatgpt に丸投げしてみた。

環境

  • GPT4

出来上がったもの

Untitled

サイト情報を伝える

プロンプト

DALL-Eにブログサイトのロゴデザインを依頼したいと思います
URLからサイトの内容を読み込み適切なプロンプトを考えてください
https://sakakinox.net/

回答

サイト「sakakinox.net」は、主に技術的なトピックに焦点を当てたブログです。
特にLinux、サーバー管理、プログラミング、セキュリティ対策に関する詳細なガイドやチュートリアルを提供しています。
また、特定のソフトウェアのインストールや設定、システムの最適化方法など、技術者向けの深い洞察を提供する記事が多数含まれています。
この情報を基に、ブログサイトのロゴデザインのためのプロンプトを考えます。
ブログ「sakakinox.net」のロゴデザインには、技術的な洞察と専門知識が反映されたビジュアルが適しています。
このサイトはLinux、サーバー管理、プログラミング、セキュリティ対策に関する深い洞察を提供しており、技術者や開発者向けのコンテンツが豊富です。この内容を踏まえたプロンプトは次のようになります。
プロンプト:
「技術ブログ向けのロゴデザインを作成してください。このロゴは、Linux、サーバー管理、プログラミング、セキュリティの4つの主要トピックを象徴的に表現する必要があります。色彩は青と緑を基調とし、モダンでクリーンなデザインが求められます。ロゴは、技術的専門知識と革新を表す象徴として機能するよう、シンプルでありながら意味深いビジュアル要素を含むべきです。」
 このプロンプトに基づいて、適切なロゴデザインを生成しましょう。
Untitled

もう少しシンプルなものにしてほしかったので依頼してみる

Untitled

回答

シンプルでミニマリストなデザインのロゴが完成しました。
このデザインは、クリーンで最小限の色と形を使用して、技術専門知識と革新の本質を伝えるように意図されています。
認識しやすく、様々なメディアでの使用に適した汎用性の高いロゴを目指しています。

調子に乗ってサイト名を入れてもらう

Untitled

回答

サイト名「sakakinox.net」を含むシンプルでミニマリストなデザインのロゴが完成しました。
このデザインは、クリーンなモダンフォントでサイト名を取り入れ、技術テーマを象徴するミニマリスティックなシンボルとシームレスに統合しています。
技術専門知識と革新の本質を最小限の色と形で伝え、様々なメディアで使用に適した認識しやすいロゴを目指しています。

OGPLink のアイキャッチ画像に設定と最適化

これを機に OGP の設定内容を見直し必要な情報を増やしたり最適化を行った。

og:image

OGP の画像サイズは 1200x630 が良いらしいのでそれに合わせて画像サイズを加工し、生成時破綻した文字列を修正した。
og:image は画像パスではなく URL で指定する必要があるので設定時は注意すること。

og:type

og:type に関してブログ記事は article にすべきなので SEO 呼び出しに設定できるようにして templates/blog-post.js で article を指定するようにした。

og:url

og:url は記事の URL を入れたいので @reach/router で path-name を取得した。
※機能上 URI を取得できるのだが正常に動作しかなったため URL はメタデータから取得した。

og:locale

lang と内容が異なるので変数を独自に用意した。

twitter:creator

先頭に@を付与した。

components/Seo.js を下記のように設定した。

/**
 * SEO component that queries for data with
 *  Gatsby's useStaticQuery React hook
 *
 * See: https://www.gatsbyjs.com/docs/use-static-query/
 */

import React from "react"
import PropTypes from "prop-types"
import { Helmet } from "react-helmet"
import { useStaticQuery, graphql } from "gatsby"
import { useLocation } from "@reach/router"
import logo from "../../content/assets/logo_1200x630.png"

const SEO = ({ description, lang, meta, title, ogtype, locale }) => {
  const { site } = useStaticQuery(
    graphql`
      query {
        site {
          siteMetadata {
            title
            siteUrl
            description
            social {
              twitter
            }
          }
        }
      }
    `
  )

  const metaDescription = description || site.siteMetadata.description
  const defaultTitle = site.siteMetadata?.title
  const location = useLocation()

  return (
    <Helmet
      htmlAttributes={{
        lang,
      }}
      title={title}
      titleTemplate={defaultTitle ? `%s | ${defaultTitle}` : null}
      meta={[
        {
          name: `description`,
          content: metaDescription,
        },
        {
          property: `og:title`,
          content: title,
        },
        {
          property: `og:description`,
          content: metaDescription,
        },
        {
          property: `og:type`,
          content: ogtype,
        },
        {
          property: `og:site_name`,
          content: site.siteMetadata.title,
        },
        {
          property: `og:url`,
          content: site.siteMetadata.siteUrl + location.pathname,
        },
        {
          property: `og:image`,
          content: site.siteMetadata.siteUrl + logo,
        },
        {
          property: `og:locale`,
          content: locale,
        },
        {
          name: `twitter:card`,
          content: `summary`,
        },
        {
          name: `twitter:creator`,
          content: `@` + site.siteMetadata?.social?.twitter || ``,
        },
        {
          name: `twitter:title`,
          content: title,
        },
        {
          name: `twitter:description`,
          content: metaDescription,
        },
      ].concat(meta)}
    />
  )
}

SEO.defaultProps = {
  lang: `ja`,
  locale: `ja_JP`,
  ogtype: `website`,
  meta: [],
  description: ``,
}

SEO.propTypes = {
  description: PropTypes.string,
  lang: PropTypes.string,
  locale: PropTypes.string,
  ogtype: PropTypes.string,
  meta: PropTypes.arrayOf(PropTypes.object),
  title: PropTypes.string.isRequired,
}

export default SEO

まとめ

たった数回のやり取りでなかなかいい感じのロゴができた。
URL を伝えるだけでそれっぽいロゴができるのは革命的だった。 文字列が入った画像はまだ苦手のようだった。
実装に伴い OGPLink に関する理解が深まった。
本当は記事ごとにアイキャッチ画像を変えるほうがいいのだがそれはまたそのうちに……
OGP に関して不整合がある設定がいくつか修正できたと思うので少しアクセスが伸びると嬉しい。

参考

Open Graph protocol

The Open Graph protocol enables any web page to become a rich object in a social graph.

https://ogp.me/

Open Graph protocol

https://chat.openai.com/

おしまい



sakakinox

Written by sakakinox
Server enginier

Copyright © sakakinox.net 2021-2024.