Tạo bài viết SEO bằng quy trình làm việc của Dify [Cập nhật tháng 6 năm 2024]

Thực ra, trước đây tôi đã thử tạo bài viết SEO bằng Dify. Bạn có thể đọc về trải nghiệm đó trong bài viết “Thử tạo bài viết SEO với Dify.” Tuy nhiên, tôi đã từ bỏ việc tạo bài viết thông qua quy trình làm việc và sử dụng một agent thay thế. Lý do là vì quy trình làm việc lúc đó không có Iteration (xử lý lặp).

Tuy nhiên, Dify phiên bản v0.6.9 đã được phát hành vào ngày 31 tháng 5 năm 2024, và Iteration đã được triển khai! Tôi ngay lập tức thử tạo bài viết SEO bằng Iteration. Kết quả là tôi đã có thể làm được, nhưng liệu nó có đạt đến mức độ thực tiễn hay không… thì cũng còn phải xem xét.

Tuy nhiên, tôi tin rằng qua bài viết này, tôi có thể truyền tải cách sử dụng Iteration, vì vậy hãy xem qua nhé! Thực ra, hệ thống mà tôi đã cố gắng thực hiện bằng workflow của Dify là một thứ mà công ty chúng tôi đã có, và chúng tôi cung cấp dịch vụ “Hỗ trợ tạo bài viết AI” sử dụng nó. Nếu bạn muốn có các bài viết chất lượng cao với mức giá hợp lý, hãy cân nhắc sử dụng dịch vụ của chúng tôi!

 


Chuẩn bị

Tạo môi trường Dify

Lần này, chúng ta sẽ chạy trên một máy tính cá nhân (PC) MacOS cục bộ.

Phương pháp để khởi động Dify trên PC cục bộ được mô tả chi tiết trong bài viết “Thử tạo bài viết SEO với Dify,” vì vậy vui lòng tham khảo bài viết đó.

Ngoài ra, Dify là một phần mềm mã nguồn mở (OSS) rất năng động và được cập nhật thường xuyên, do đó cần phải cập nhật mã nguồn mới nhất. Bạn có thể tìm cách cập nhật trong bài viết “Sử dụng GPT-4o với Dify trên môi trường cục bộ.”

 

Hiểu các thông số kỹ thuật mới nhất của Dify

Để tạo bài viết bằng quy trình làm việc của Dify, chức năng Iteration là rất cần thiết.

Ngay cả khi bạn tạo một bài viết dài chỉ bằng với một lệnh prompt, chất lượng cũng sẽ không cao. Nguyên tắc để cải thiện chất lượng đầu ra của LLM là chia nhỏ các tác vụ và yêu cầu chúng thực hiện những nhiệm vụ càng nhỏ càng tốt. Khi tạo bài viết, cũng cần phải quyết định cấu trúc tiêu đề trước, sau đó lần lượt yêu cầu LLM tạo các phần bài viết nhỏ cho từng tiêu đề.

Vì vậy, phần “xuất bài viết cho từng tiêu đề” cần xử lý vòng lặp, và đây là lúc Iteration được sử dụng.

Vì vậy, tôi đã tìm hiểu cách sử dụng Iteration, nhưng… hoàn toàn không có thông tin nào! Tại sao vậy!? Có lẽ tài liệu chính thức chưa kịp cập nhật? Tính đến ngày viết bài này là 14/06/2024, Node của quy trình làm việc vẫn chưa được cập nhật với Iteration.

Chỉ có một video thông báo về phiên bản mới. Vì vậy, tôi đã tiến hành với rất nhiều thử nghiệm và sai sót. Kết quả được tóm tắt dưới đây, nhưng quả thật rất khó khăn.

 

Thiết kế quy trình làm việc trên Dify

Xác định đầu vào và đầu ra

Quy trình làm việc được tạo ra bằng cách kết nối các “khối” có thể thực hiện nhiều quy trình khác nhau. Bước đầu tiên là đơn giản xác định kết quả cuối cùng mà quy trình làm việc này sẽ đạt được.

Trong bài viết này, chúng ta sẽ tạo quy trình làm việc dựa trên các điều sau:

  • Đầu vào
    • URL tham khảo để viết lại
    • Từ khóa muốn xếp hạng cao
    • Từ đồng xuất hiện
    • Từ gợi ý
    • Đối tượng mục tiêu
    • Tiêu đề
    • Phần mở đầu
    • Những điểm cần lưu ý khi tạo bài viết
  • Đầu ra
    • Cấu trúc tiêu đề
    • Nội dung cho từng tiêu đề

Nói cách khác, quy trình làm việc sẽ được thiết kế để tóm tắt và viết lại các bài viết hiện có dựa trên các từ khóa, đối tượng mục tiêu và thông tin đã được xác định trước.

 

Thiết kế quy trình xử lý

Mục tiêu là tạo bài viết bằng cách sử dụng quy trình xử lý tổng quát sau:

 

  1. Sử dụng URL đã cung cấp để quét nội dung của bài viết.
  2. Tóm tắt toàn bộ nội dung của bài viết và tạo cấu trúc tiêu đề thể hiện ngắn gọn nội dung.
    1. Sử dụng LLM để tạo bản tóm tắt theo dạng gạch đầu dòng.
    2. Sử dụng LLM để chuyển đổi các gạch đầu dòng thành cấu trúc tiêu đề.
    3. Sử dụng LLM để tạo cấu trúc tiêu đề.
  3. Tạo bài viết cho từng tiêu đề.
  4. Tạo mẫu và tổng hợp nội dung thành bài viết hoàn chỉnh.

 

Tạo từng khối quy trình làm việc trên Dify

Dify上でワークフローの各ブロックを作成する

Đây là tổng quan về quy trình. Dưới đây là giải thích về các chức năng của từng khối.

“Chờ đã… việc tạo bài viết thật sự cần nhiều cài đặt như thế này sao…?” Nếu bạn cảm thấy vậy, thì đúng rồi đấy! Để tạo các Agent hoặc quy trình làm việc thực tiễn, cần có rất nhiều cài đặt. Điều này đòi hỏi chi phí học tập đáng kể, không chỉ về AI tạo sinh mà còn về thông số kỹ thuật của Dify.

Nếu bạn muốn triển khai Dify nhưng không muốn mất công cài đặt, vui lòng liên hệ với chúng tôi!

Liên hệ để biết thêm về dịch vụ hỗ trợ triển khai Dify

 

Bước 1: Bắt đầu

  • Khối: Bắt đầu
  • Đầu vào: Tất cả các mục đầu vào được liệt kê ở trên
  • Đầu ra: Không có

Bước này chỉ đơn giản là chỉ định các mục đầu vào đã liệt kê trước đó.

 

Bước 2: Tạo một mảng URL nguồn

Dify Step.2 参照元URLの配列を作成

  • Khối: Mã
  • Đầu vào: Chuỗi các URL
  • Đầu ra: Mảng chuỗi

Ở Bước 1, danh sách các URL được nhập dưới dạng chuỗi có dấu xuống dòng ngắt dòng, sau đó sẽ được chuyển đổi thành mảng bằng Python. Điều này là cần thiết vì đầu vào cho Iteration được sử dụng sau đó phải ở định dạng mảng.

 

Bước 3: Quét tất cả các URL

Dify Step.3 全URLをスクレイピング

  • Khối: Iteration
  • Đầu vào: Mảng chuỗi URL
  • Đầu ra: Chuỗi (kết quả quét)

Iteration được sử dụng cho quá trình lặp lại. Khi sử dụng Iteration, bạn cần chỉ định cả đầu vào cho Iteration và đầu ra từ nó.

 

Bước 3-1: Quét từng URL

Dify Step.3-1 各URLをスクレイピング

  • Khối: Web Scraper
  • Đầu vào: Mục (Mỗi phần tử của mảng được tham chiếu trong quá trình lặp lại của Iteration. Trong trường hợp này là từng URL riêng lẻ)
  • Đầu ra: Chuỗi (kết quả quét)

Trong bài viết trước, tôi đã sử dụng một công cụ gọi là Crawler để lấy nội dung từ các URL, nhưng lần này vì Crawler không hoạt động, tôi đã sử dụng một công cụ khác gọi là Web Scraper. Bạn chỉ cần đưa URL vào, nó sẽ lấy nội dung cho bạn.

 

Bước 4: Kết hợp tất cả kết quả quét

Dify Step.4 スクレイピング結果をすべて結合

  • Khối: Mã
  • Đầu vào: Mảng chuỗi (kết quả quét)
  • Đầu ra: Chuỗi

Trong các bước tiếp theo, tôi muốn gộp nội dung của các URL đã cho và tóm tắt chúng, vì vậy tôi sẽ kết hợp tất cả các nội dung từ các bài viết của URL.

 

Bước 5: Tạo cấu trúc tiêu đề bài viết bằng GPT-4o

Dify Step.5 記事の見出し構成をGPT-4oで作成

  • Khối: LLM (Chỉ định mô hình GPT-4o)
  • Đầu vào: Chuỗi (Nội dung hợp nhất từ các bài viết trước)
  • Đầu ra: Chuỗi (Đề xuất cấu trúc tiêu đề)

Cung cấp nội dung hợp nhất từ các bài viết trước cho GPT-4o, và nó sẽ tóm tắt dưới dạng gạch đầu dòng. Dựa trên bản tóm tắt đó, GPT-4o sẽ tạo ra đề xuất cấu trúc tiêu đề cho bài viết.

 

Bước 6: Xem xét và tinh chỉnh cấu trúc tiêu đề bằng GPT-4o

Dify Step.6 記事の見出し構成をGPT-4oがレビュー、修正

  • Khối: LLM (Chỉ định mô hình GPT-4o)
  • Đầu vào: Chuỗi (Đề xuất cấu trúc tiêu đề)
  • Đầu ra: Chuỗi (Cấu trúc tiêu đề cuối cùng)

Để GPT-4o xem xét lại cấu trúc tiêu đề đề xuất đã tạo ở bước trước và tinh chỉnh nó. Bổ sung bước này sẽ giúp cải thiện chất lượng đáng kể.

 

Bước 7: Chuyển đổi cấu trúc tiêu đề thành mảng Python

Dify Step.7 見出し構成をPythonの配列の構成にする

  • Khối: LLM (Chỉ định mô hình GPT-4o)
  • Đầu vào: Chuỗi (Cấu trúc tiêu đề cuối cùng)
  • Đầu ra: Chuỗi (Định dạng mảng)

Từ đây, mọi thứ bắt đầu trở nên hơi khó khăn. Do những hạn chế của Iteration, A) không thể lồng nhau (không thể tạo nhiều hơn hai vòng lặp), và B) đầu vào phải là một mảng (không thể truyền JSON). Điều này đã trở thành một rào cản và khiến không thể thực hiện được việc “vòng lặp qua tiêu đề 1, sau đó lặp qua tiêu đề 2 để tạo bài viết cho từng tiêu đề,” một mối quan hệ 1

Có lẽ hơi khó hiểu một chút, nhưng đây là ví dụ:

[  [“Tiêu đề 1: Tiêu đề 1 thứ nhất”, “Tiêu đề 2: Tiêu đề 2 thứ nhất”, “Tóm tắt: Tóm tắt tương ứng với tiêu đề 2”],

  [“Tiêu đề 1: Tiêu đề 1 thứ nhất”, “Tiêu đề 2: Tiêu đề 2 thứ hai”, “Tóm tắt: Tóm tắt tương ứng với tiêu đề 2”],

  [“Tiêu đề 1: Tiêu đề 1 thứ hai”, “Tiêu đề 2: Tiêu đề 2 thứ nhất”, “Tóm tắt: Tóm tắt tương ứng với tiêu đề 2”],

  …

  [“Tiêu đề 1: Tiêu đề 1 thứ n”, “Tiêu đề 2: Tiêu đề 2 thứ nhất”, “Tóm tắt: Tóm tắt tương ứng với tiêu đề 2”],

  [“Tiêu đề 1: Tiêu đề 1 thứ n”, “Tiêu đề 2: Tiêu đề 2 thứ hai”, “Tóm tắt: Tóm tắt tương ứng với tiêu đề 2”],

  …

  [“Tiêu đề 1: Tiêu đề 1 thứ n”, “Tiêu đề 2: Tiêu đề 2 thứ n”, “Tóm tắt: Tóm tắt tương ứng với tiêu đề 2”]

]

GPT-4o tạo một mảng như trên và tạm thời xuất ra dưới dạng chuỗi.

 

Bước 8: Chuyển đổi dữ liệu chuỗi “giống mảng” thành mảng thực sự

Dify Step.8 「配列っぽい」文字列型のデータを配列型にする

  • Khối: Mã
  • Đầu vào: Chuỗi (Chuỗi định dạng mảng)
  • Đầu ra: Mảng chuỗi

Vì khối LLM chỉ có thể xuất chuỗi, bước trước đó sẽ xuất một chuỗi có định dạng giống cấu trúc mảng. Một chương trình Python sẽ được sử dụng để ép chuyển đổi điều này thành mảng để chuyển cho Iteration.

 

Bước 9: Tạo bài viết cho tất cả các tiêu đề

Dify Step.9 全見出しの記事を作成する

  • Khối: Iteration
  • Đầu vào: Mảng chuỗi
  • Đầu ra: Mảng chuỗi (Nội dung bài viết)

Mảng tiêu đề sẽ được lặp lại trong quá trình và nội dung của bài viết sẽ được tạo cho từng tiêu đề.

 

Bước 9-1: Tạo bài viết cho từng tiêu đề

Dify Step.9-1 各見出しの記事を作成する

  • Khối: LLM (Chỉ định mô hình GPT-4o)
  • Đầu vào: Mục (Phần tử của mảng được tham chiếu trong quá trình lặp Iteration. Trong trường hợp này là một chuỗi kết hợp tiêu đề 1 và tiêu đề 2)
  • Đầu ra: Chuỗi (Nội dung bài viết)

Dựa trên tiêu đề 1 và tiêu đề 2 được truyền từ Iteration cùng với các thông tin khác từ bước Start, GPT-4o sẽ tạo nội dung bài viết. Điều kiện cụ thể được cung cấp để đảm bảo rằng nội dung mong muốn được tạo ra khi viết nội dung bài viết.

 

Bước 10: Áp dụng mẫu

Dify Step.10 テンプレートを適用する

  • Khối: Mẫu
  • Đầu vào: Mảng chuỗi (Nội dung bài viết)
  • Đầu ra: Chuỗi

Đây là một bước bổ sung, nhưng để làm cho đầu ra giống như một bài viết, chúng tôi áp dụng một mẫu bao gồm tiêu đề, phần mở đầu, các tiêu đề và nội dung. Mẫu của Dify sử dụng Jinja2.

 

Kiểm tra đầu ra

DifyのワークフローでSEO記事を作成した結果

Tôi không thực sự hiểu… haha.

 

Tóm tắt

Điểm cải tiến

  • Sau khi tạo cấu trúc tiêu đề bằng GPT-4o, việc xem xét và tinh chỉnh cấu trúc bằng GPT-4o sẽ mang lại kết quả khá tốt.
  • Do không thể sử dụng nhiều vòng lặp trong Iteration và không thể nhập JSON, tôi đã phải nhờ GPT-4o tạo chuỗi có dạng mảng của Python (có vẻ hơi quá đà), nhưng cuối cùng tôi cũng có thể xuất toàn bộ quy trình. Rất vất vả…

 

Các điểm cần cải thiện và điều không thể đạt được

  • Vì GPT-4o tạo mảng nên đầu ra không ổn định, thỉnh thoảng tạo ra cấu trúc không phải là mảng, dẫn đến Python gặp lỗi.
  • Tôi muốn tạo một cấu trúc như:
    “Tiêu đề 1 > Tiêu đề 2 > Nội dung, Tiêu đề 2 > Nội dung… Nội dung, Tiêu đề 1 > Tiêu đề 2 >…” nhưng tôi không thể làm được. Nếu ai đó có kinh nghiệm hơn với quy trình làm việc có ý tưởng, vui lòng liên hệ với chúng tôi…!

 

Cảm nghĩ

  • Giao một nhiệm vụ lớn như tạo bài viết hiệu quả SEO cho quy trình làm việc là rất khó khăn. Sử dụng agent có vẻ là một lựa chọn tốt hơn.
  • Quy trình làm việc có vẻ thích hợp hơn với các quy trình có thể hoàn thành trong các bước ngắn gọn, đơn giản hơn.
  • Điều này có thể nói là đương nhiên, nhưng nếu bạn muốn tạo quy trình làm việc có thể sử dụng trong kinh doanh công việc, Make.com sẽ là lựa chọn tốt hơn. Make.com có độ linh hoạt và khả năng mở rộng vượt trội.

 

Để yêu cầu phát triển hệ thống sử dụng AI tạo sinh, vui lòng liên hệ với chúng tôi tại đây.

Cảm ơn bạn đã đọc hết bài viết!

Thực tế, hệ thống mà tôi đang cố gắng thực hiện với quy trình làm việc của Dify là một thứ mà công ty chúng tôi đã sở hữu, và chúng tôi cung cấp dịch vụ “Dịch vụ tạo bài viết bằng AI.” Nếu bạn đang tìm cách tạo ra các bài viết chất lượng cao liên tục với giá cả hợp lý, vui lòng sử dụng dịch vụ của chúng tôi!

Công ty chúng tôi cung cấp dịch vụ “Tư vấn AI tạo sinh,” bao gồm việc lựa chọn mô hình ngôn ngữ lớn (LLM) và kiến trúc, xác minh kỹ thuật, tạo mẫu thử và phát triển hệ thống sử dụng AI tạo sinh, cũng như đào tạo và giáo dục trong nội bộ cho nhân viên của bạn.

Chúng tôi cũng cung cấp “Secure GAI,” một giải pháp tương tự như ChatGPT có thể sử dụng trong môi trường doanh nghiệp.

Tất nhiên, chúng tôi cũng sẵn sàng hỗ trợ việc thiết lập và triển khai Dify.

Nếu bài viết này đã khơi dậy sự quan tâm của bạn đối với AI tạo sinh hoặc nếu bạn có nhu cầu liên kết hệ thống với AI tạo sinh, vui lòng liên hệ với chúng tôi qua biểu mẫu bên dưới!

Creating SEO Articles Using Dify Workflow [June 2024 Update]

Actually, I had previously tried creating SEO articles using Dify. You can read about that experience in the article “Trying to Create SEO Articles with Dify.” However, at that time, I gave up on creating them through the workflow and used an agent instead. The reason was that there was no Iteration (loop processing) in the workflow at the time.
However, Dify v0.6.9 was released on May 31, 2024, and Iteration was implemented! I immediately tried using the Iteration feature to create SEO articles. While I did manage to do it, whether it reached a practical level or not is debatable.
That said, I believe I can convey how to use Iteration through this article, so I hope you’ll check it out! Actually, the system I tried to implement using Dify’s workflow is something our company already has in place, and we offer a service called “AI Article Creation Support” that utilizes it. If you’re looking for high-quality articles at a reasonable price, please consider using our service!


Preparation

Setting Up the Dify Environment

This time, the operation is based on running it on a local MacOS PC.
The method for setting up Dify on a local PC is detailed in the article “Trying to Create SEO Articles with Dify,” so please refer to that.
Additionally, Dify is a very active open-source software (OSS) and is frequently updated, so it is necessary to keep the source code up to date. You can find how to update it in the article “Using GPT-4o with Dify in a Local Environment.”

Understanding the Latest Specifications of Dify

To create articles using Dify’s workflow, the Iteration function is essential.
Even if you create a long article with a single prompt, it won’t be of high quality. The key to improving the output quality of LLMs is to break down tasks and have them do as small of a task as possible. When creating articles, the same principle applies: first decide the structure of the headings, and then request the LLM to create small, segmented articles for each heading.
Thus, the part where “articles are output for each heading” requires loop processing, and Iteration is used for this purpose.
So, I researched how to use Iteration, but… I couldn’t find any information at all! Why!? Could it be that the official documentation hasn’t caught up with the updates? As of writing this article on June 14, 2024, Iteration hasn’t been added to the Nodes in the workflow.
The only thing available is a video announcing the release. So, I proceeded with a lot of trial and error. The following is a summary of the results, but it was incredibly challenging.

Designing the Workflow on Dify

Defining Inputs and Outputs

A workflow is created by connecting various “blocks” that perform different processes. The first step is to simply define what the final output of this workflow will be.
In this article, we will create the workflow based on the following:

  • Inputs
    • Reference URL for rewriting
    • Keywords to rank high
    • Co-occurrence words
    • Suggested words
    • Target audience
    • Title
    • Introduction
    • Key considerations for article creation
  • Outputs
    • Heading structure
    • Content for each heading

In other words, the workflow will be designed to summarize and rewrite existing articles based on the keywords, target audience, and other predetermined information.

Designing the Process Flow

The goal is to create articles using the following general process flow:

  1. Scrape the provided URL to retrieve the article content.
  2. Summarize the entire article and create a heading structure that succinctly conveys the content.
    1. Use the LLM to create a bulleted summary of the article.
    2. Use the LLM to convert the bullet points into a heading structure.
    3. Use the LLM to create the heading structure.
  3. Create the article for each heading.
  4. Create a template and compile the content into a complete article.

 

Creating Each Block in the Workflow on Dify

​Dify上でワークフローの各ブロックを作成する
Here’s what the overall process looks like. Below is an explanation of what each block does.
“Wait… does it really require this much setup just to create an article?” If you’re wondering that, you’re absolutely right! To create practical agents or workflows, quite a lot of setup is necessary. This requires a significant amount of learning, not only about generative AI itself but also about Dify’s specifications.
If you’re interested in implementing Dify but want to leave all the hassle to someone else, please feel free to contact us!
Inquire about our Dify implementation support service

Step 1: Start

  • Block: Start
  • Input: All the input items mentioned above
  • Output: None

This step simply specifies the input items listed earlier.

Step 2: Create an Array of Source URLs

Dify Step.2 参照元URLの配列を作成

  • Block: Code
  • Input: String of URLs
  • Output: Array of Strings

In Step 1, the list of URLs is entered as a string with line breaks, which is then converted into an array using Python. This is necessary because the input for the Iteration used later needs to be in array format.

Step 3: Scraping All URLs

Dify Step.3 全URLをスクレイピング

  • Block: Iteration
  • Input: Array of URL strings
  • Output: String (Scraping results)

Iteration is used for loop processing. When using Iteration, you need to specify both the input to Iteration and the output from it.

Step 3-1: Scraping Each URL

Dify Step.3-1 各URLをスクレイピング

  • Block: Web Scraper
  • Input: Item (Each element of the array being referenced within Iteration’s loop process. In this case, each URL individually)
  • Output: String (Scraping results)

In a previous article, I used a tool called Crawler to retrieve content from URLs, but since Crawler didn’t work for some reason this time, I used another tool called Web Scraper. If you pass it a URL, it retrieves the content for you.

Step 4: Merge All Scraping Results

Dify Step.4 スクレイピング結果をすべて結合

  • Block: Code
  • Input: Array of strings (Scraping results)
  • Output: String

In the following steps, I want to merge the content of the given URLs and summarize it, so I simply combine the contents of all the articles from the URLs.

Step 5: Create the Article Heading Structure with GPT-4o

Dify Step.5 記事の見出し構成をGPT-4oで作成

  • Block: LLM (Specify the model as GPT-4o)
  • Input: String (Merged content from the previous articles)
  • Output: String (Proposed heading structure)

Give the merged content of the previous articles to GPT-4o, and it will summarize it into bullet points. Based on that summary, GPT-4o will create a proposed heading structure for the article.

Step 6: Review and Refine the Heading Structure with GPT-4o

Dify Step.6 記事の見出し構成をGPT-4oがレビュー、修正

  • Block: LLM (Specify the model as GPT-4o)
  • Input: String (Proposed heading structure)
  • Output: String (Finalized heading structure)

Have GPT-4o review the proposed heading structure created in the previous step and refine it. Adding this step significantly improves the quality.

Step 7: Convert the Heading Structure into a Python Array

Dify Step.7 見出し構成をPythonの配列の構成にする

  • Block: LLM (Specify the model as GPT-4o)
  • Input: String (Finalized heading structure)
  • Output: String (Array-formatted string)

At this point, things start to get a bit forceful. Due to Iteration’s limitations, A) nesting is not allowed (you cannot create more than two loops), and B) the input must be an array (JSON cannot be passed). This was a bottleneck, and it became impossible to “loop through heading 1 and then loop through heading 2 within it to create articles for each,” which is a 1
relationship.
It might be a bit hard to understand, but here’s an example:
[  [“Heading 1: First heading 1”, “Heading 2: First heading 2”, “Summary: Corresponding summary for heading 2”],
[“Heading 1: First heading 1”, “Heading 2: Second heading 2”, “Summary: Corresponding summary for heading 2”],
[“Heading 1: Second heading 1”, “Heading 2: First heading 2”, “Summary: Corresponding summary for heading 2”],

[“Heading 1: nth heading 1”, “Heading 2: First heading 2”, “Summary: Corresponding summary for heading 2”],
[“Heading 1: nth heading 1”, “Heading 2: Second heading 2”, “Summary: Corresponding summary for heading 2”],

[“Heading 1: nth heading 1”, “Heading 2: nth heading 2”, “Summary: Corresponding summary for heading 2”]
]
GPT-4o generates an array like the one above and outputs it as a string for now.

Step 8: Convert the “Array-like” String Data into an Actual Array

Dify Step.8 「配列っぽい」文字列型のデータを配列型にする

  • Block: Code
  • Input: String (The array-formatted string)
  • Output: Array of Strings

Since the LLM block can only output strings, the previous step outputs a string formatted to resemble an array structure. A Python program is then used to forcefully convert this into an array to be passed into Iteration.

Step 9: Create the Articles for All Headings

Dify Step.9 全見出しの記事を作成する

  • Block: Iteration
  • Input: Array of Strings
  • Output: Array of Strings (Article content)

The array of headings is looped through, and the body of the article is created for each heading.

Step 9-1: Create the Article for Each Heading

Dify Step.9-1 各見出しの記事を作成する

  • Block: LLM (Specify the model as GPT-4o)
  • Input: Item (The element from the array being referenced within Iteration’s loop process. In this case, it’s a string combining heading 1 and heading 2)
  • Output: String (The article body)

Using the headings 1 and 2 passed from Iteration, along with the other inputs from Step 1, GPT-4o will create the article body. Specific conditions are provided to ensure the desired content is generated when creating the article body.

Step 10: Apply the Template

Dify Step.10 テンプレートを適用する

  • Block: Template
  • Input: Array of Strings (The article body)
  • Output: String

This is more of an additional step, but to make the output resemble an article, we apply a template that includes the title, introduction, headings, and body content. Dify’s template uses Jinja2.

Check the Output

DifyのワークフローでSEO記事を作成した結果
I don’t quite understand… haha.

Summary

Points of Improvement

  • After creating the heading structure with GPT-4o, reviewing and refining the structure with GPT-4o produces quite a good result.
  • Since multiple loops cannot be used in Iteration and JSON cannot be passed as input, I resorted to having GPT-4o create Python array-like strings (which felt a bit extreme), but I managed to output the entire workflow. It was tough…

 

Areas for Improvement and Things That Couldn’t Be Achieved

  • Since I had GPT-4o generate arrays, the output was sometimes unstable, and occasionally it would produce a non-array structure, causing Python to throw errors.
  • I wanted to create a structure like:
    “Heading 1 > Heading 2 > Body, Heading 2 > Body… Body, Heading 1 > Heading 2 >…” but I just couldn’t manage it. If anyone who is more experienced with workflows has any ideas, please get in touch…!

 

Impressions

  • It’s quite challenging to assign a task as large as creating SEO-effective articles to a workflow. Using an agent seems like a better option.
  • Workflows seem better suited for processes that can be done in fewer, simpler steps.
  • This might be saying the obvious, but if you want to create a workflow that is practical for business, Make.com would be a better choice. Make.com offers far more flexibility and scalability.

 

For inquiries about system development using generative AI, please contact us here.

Thank you for reading until the end!
In fact, the system I was trying to implement with Dify’s workflow is something our company already has, and we offer it as an “AI Article Creation Service.” If you’re looking for a way to continuously create high-quality articles at a reasonable price, please feel free to use our service!
Our company provides an “AI Consulting” service, which includes selecting large language models (LLMs) and architectures, conducting technical verifications, prototyping, and system development using generative AI, as well as in-house training and education for your employees.
We also offer “Secure GAI,” a solution similar to ChatGPT that can be used in business environments.
Of course, we are also happy to assist with the setup and implementation of Dify.
If this article has sparked your interest in generative AI or if you have any needs for system integration with generative AI, please feel free to contact us using the form below!