ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1

どーもボキです。

今回の連休、前々からこのブログで修正したいと思っていた「タグ」、この反映作業を自動化してみました。しっかり触ったこともないPythonを使って、です。

「どうやってChatGPTにお願いしたの?」「どんな指示を出せば動くコードが出てくるの?」と疑問に思った方もいるカモですね。なので、ボキが実際に使ったプロンプトを公開しますね。

ビビりますよ、しょぼいから。「こんなんでえーの?」ってなります。


実際にChatGPTに伝えたプロンプト


yozda.exblog.jpのロゴを作ってください


最初はタグ整理とは全く関係のないプロンプトでした。

それにしても雑ですね~。ボキは、仕事でこんな丸投げを言われた日にゃ機嫌を損ねますよ。
けれどChatGPTさんは違う、ちゃーんとブログの中身を読み取り、内容を理解していました。ビビりましたね。「ここまで進化したの!?」と。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_10355693.png

> 以前、LEGO(正確にはダイソーのプチブロック)を使ってブログのロゴを作成されたことがあるようですね。(どーもボキです >Z_ ̄∂

とのご指摘、LEGOではないことバレていますね。ちなみに、こんな感じのロゴを作ってくれました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_10464813.png



このブログの編集ツールを作りたい場合、どんな方法が取れますか?


これも雑ですね~。
ただ、こちらの思いを想定した回答を用意してくれました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_10575221.png

これには続きがあって、手段系ごとのアプローチの提案も書かれてました。

たとえば、
  1. Excel + スクリプト(VBA / PowerShell)
  2. Webアプリを自作(Python / Node.js + Reactなど)
  3. Obsidian + プラグイン
  4. 既存のブログサービス用API連携ツール(高度)
といった具合。

下図のスタート提案でまとめてくれた上で、どうしますか?と……。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11001148.png



記事のタイトルを外部アプリから修正できる仕掛けを作りたいです。


ここから、本格的にツール開発のスタートです。
下図のようにもうちょっと書いていました。ただ、どのような技術を使えばよいのか見当もつかないので、それも含めて提案してもらいました
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11072770.png

そうすると、ボキがやりたいことの理解をまとめ、その上で、手段の候補を提示してくれました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11091457.png

ここでまたビックリさせられたのが、エキサイトブログにはAPI(外部プログラムから直接ブログにアクセスする仕掛け)がない、とのコメント。またまたビックリしましたね、「URL(yozda.exblog.jp)しか伝えていないのに、こんなことまでわかるの!?」と。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11104038.png

このプロンプトで実現手段が提案されました。
提案の中にある「Selenium」ってのをボキは知りませんでした。最終的に使ったのはこの「Selenium」というライブラリです。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11132404.png




RSSフィードでタイトルを取る方法を教えてください。


RSSフィードってのが、ブログを更新したときに作成されるダイジェスト目次のようなものであることは知っていました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11164949.png

以下のようにRSSフィードのパスも教えてくれました。どうやらこれを見ればブログの記事一覧が取得できるようですね。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11192916.png

ここからPythonのコードを紹介されたのですが、そもそもRSSフィードに書かれている情報って直近の15件なんですね。

これじゃダメじゃん……。




https://yozda.exblog.jp/index.xmlを確認しました。最新の15記事しかタイトルが表示されないようです。すべての記事を対象にタイトルを取得したい場合、どのような方法がありますか・


うん、最初から言ってね、という回答が返ってきました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11251222.png

それにしても、エキサイトブログの構造もよく理解していますね。ほんとうに関心させられました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11301803.png

ここからPythonのコードが記載されるのですが、ボキはPythonを入れてなかったんですよね。
なので……。




python環境を持っていないので、その準備も教えてください


ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11291212.png


こんな感じでPython導入手順を書いてくれます。
ホント、この通りにやるだけ。

ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11323533.png


anacondaをインストールしました。スクリプトを実行したいと思います。もう一度教えてください。


Pythonコードを教えてもらったものの、そもそもPythonの起動方法すらわかっていなかったので、そこから教えてもらいました。以下のようにステップに分けて操作方法を丁寧に解説してくれます。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11332714.png
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_12101318.png
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_12105463.png
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_12112975.png
「pip install requests beautifulsoup4」で「beautifulsoup4」というライブラリをインストールするようですね。どんなライブラリなのかさっぱりわかりませんが、この通りやればよかったです。コピーして、Anaconda PromptへペーストしてEnter(実行)するだけ。

ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_12113856.png
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_12114687.png




(base) C:\Users\yoshi>cd Desktop
指定されたパスが見つかりません。となります。


カレントディレクトリの変更からつまづきました……。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11360991.png

cdのコマンドの意味から教えてくれます。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11375929.png



以下のようなエラーが出ました



Pythonコードをファイルに保存して実行すると、エラーが出たんですね。
英語を読むのがメンドウなので、そのまま貼り付け!
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11385223.png

エラーの意味だけでなく、なぜそれが起きるのかまでおしえてくれました。
そして、その解決方法までも丁寧に解説してくれました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11402416.png

このようにエラーが起きるたびにそれを貼り付けてChatGPTに教えてもらい、記事収集までできる状態になりました。

ただね、気づいたんです。「フツーにブログにアクセスして記事を収集しているだけじゃないか」と。
収集だけならこの方法でもよいものの、記事の編集までしたいとなるとブログ管理者として実行できなければなりません。




この仕組みはブラウザを利用しているのでしょうか?
Noならば、管理者認証が必要なページにはどうやってアクセスするのでしょうか?



よいですね。まず知りたいこと(結論)から述べてくれます。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11512943.png


このあと、以下の2つの方法が提案されました。

  • ■ 方法①【現実的・確実】ブラウザ操作型(Selenium)を使う
  • ■ 方法②【高度】HTTPセッション維持型(requests.Session)

ちょっと難しい話だったからか、ChatGPTはボキにも分かるように言い直してくれました。
ChatGPTでタグ整理機能を作ってみた(その4)プロンプト、ぜんぶ見せます1_a0021757_11535348.png


長くなったので、いったんここまでにしておきます

つぎは、実際にブログ管理者としてログインしたうえで、記事一覧を取得するPythonコードを作成するプロンプトのお話です。




■Pythonのソースコード(ChatGPTに作らせたエキサイトブログの投稿記事の一覧取得ツール、初期版)
import requests
from bs4 import BeautifulSoup
import csv
import time

# あなたのブログのURL(ページ1のURL)
BASE_URL = "https://yozda.exblog.jp/page/{}"

# 保存するCSVファイル名
OUTPUT_CSV = "blog_titles.csv"

# 何ページまで探すか(ここで制御できる)
MAX_PAGE = 5

# データを格納するリスト
articles = []

# スクレイピングスタート
for page_num in range(1, MAX_PAGE + 1):
url = BASE_URL.format(page_num)
print(f"取得中: {url}")
res = requests.get(url)
if res.status_code != 200:
print(f"アクセス失敗 {url}")
break

soup = BeautifulSoup(res.content, "html.parser")

# 記事カード単位で取得
cards = soup.select("div.articles")

if not cards:
print(f"記事が見つからないので終了。最終ページ: {page_num}")
break

for card in cards:
# タイトル取得
title_tag = card.select_one("h2.card-title")
title = title_tag.get_text(strip=True) if title_tag else ""

# リンク取得(正しいarticles-itemリンクだけを取る)
link_tag = card.select_one("a.articles-item")
link = link_tag.get("href") if link_tag else ""

articles.append([title, link])

# サーバーに優しく1秒休憩
time.sleep(1)

# CSVに書き出し(SHIFT-JISで保存)
with open(OUTPUT_CSV, "w", encoding="shift_jis", errors="ignore", newline="") as f:
writer = csv.writer(f)
writer.writerow(["タイトル", "リンク"]) # ヘッダー行
writer.writerows(articles)

print(f"完了! {len(articles)}件の記事を {OUTPUT_CSV} に保存しました。")






名前
URL
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

by yozda | 2025-05-02 12:18 | ボキ、しごとのヒント集める | Comments(0)

ボキの興味、書き散らかします


by ボキ
カレンダー
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31