はじめに
当ブログをAstroにリファクタリングした際に、記事のdescriptionを書き直そうと思ったのですが、 手作業でやるにはあまりに面倒なので、ChatGPTに放り投げました。
方法
前提として、content[2]
がdescription行、content[8:]
が本文になってます。
import glob
from openai import OpenAI
def summarize_text(
file_path, model="gpt-3.5-turbo", temperature=0.5, max_tokens=120
):
# ファイルを読み込む
with open(file_path, "r", encoding="utf-8") as f:
content = f.readlines()
text = "".join(content[8:]) # 本文
# OpenAI設定
client = OpenAI(api_key="xxxxxxxxxxxxxxxxxxxxx")
# 要約
summarize_query = f"""以下のブログ記事の紹介文を120文字以内の簡潔な短い文章で作成してください。
また、参照情報やURLは不要です。:
\n\n{text}
"""
summarized = client.chat.completions.create(
messages=[{"role": "user", "content": summarize_query}],
model=model,
temperature=temperature,
max_tokens=max_tokens,
)
summarized_description = summarized.choices[0].message.content
print(f"紹介文: {summarized_description}\n---")
# descriptionを置換
content[2] = f'description: "{summarized_description}"\n'
# 変更をファイルに書き戻す
with open(file_path, "w", encoding="utf-8") as f:
f.writelines(content)
使い方
posts = glob.glob("blog/**/*.mdx", recursive=True)
for post in posts:
print(f"---\n処理: {post}")
summarize_text(post)