KINTO Tech Blog
Generative AI

Expanding the Reach of Technical Documents! Automating Markdown Conversion with Generative AI

Cover Image for Expanding the Reach of Technical Documents! Automating Markdown Conversion with Generative AI

Introduction

Nice to meet you. My name is Yena, and I’m working on Android app development at KINTO Technologies. My career began with Android development, and I have been involved in a wide range of areas, including smart TV apps, web backend and frontend development, and API development. While currently working on Android development, I also plan and run an in-house study group called "Droid Lab" to support the growth of both myself and my team.

To share the technical content from the study group more broadly outside the team, we considered publishing the materials as a tech blog, but we faced the following challenges:

Since the materials are mainly created in Confluence or PPT format, they need to be converted to Markdown format before being posted on a blog, which makes it impossible to publish them as is and requires significant effort.

This conversion work was a significant burden, making it difficult to secure enough time to write blog articles, which led to delays in disseminating information as intended.

To solve these challenges, we introduced a mechanism that leverages generative AI ChatGPT's Custom GPT to automatically convert source materials, such as those in Confluence and PPT formats, into Markdown format.

We are currently running trial operations, and this mechanism is expected to bring benefits such as reducing the burden of conversion work and improving the efficiency of information sharing.

Here, I will explain the creation procedure and settings of the GPT that we actually introduced.

How To Create a GPT

1. Creating a GPT

    1. After logging in, click "Explore" on the top left.
      Open Screenshot 2025-04-10 at 14.48.58.png
    1. Select "Create GPT" from the My GPT category.
      Open Screenshot 2025-04-11 at 12.04.41.png
    1. Set a Name and profile picture in GPT Builder.
      DALL·E can also automatically generate an image that matches the name you created (the image below was generated by AI based on the name we created in DALL·E).
      Open DALLE.png
      Open Screenshot 2025-04-10 at 15.05.52.png
    1. Setting GPT details

Open Screenshot 2025-04-10 at 15.07.11.png

  • 1 Description
    Here is a brief one- or two-line description of what this GPT does.

    Example:
    This GPT automatically generates technical blog articles in Markdown format based on Droid Lab materials. The branch used for creating blog articles should follow this format: (branch name: sample/YYYY-MM-DD-<theme>).

  • 2 Instructions
    Here, you should describe in detail how GPT should behave, what kind of output it should generate, and any constraints. This is the core of the prompt. Below are the output rules that GPT should follow:

    • Output the Markdown body text below YAML (*In our case, we have a fixed format, so we define it in YAML.)
    • Heading -> ## Heading
    • List -> - Item
    • Inline code -> Code
    • Code block -> Written in open/closed sets such as kotlin
    • Image -> ![description](URL)
    • ⚠️ Do not change the structure, style, or order of sentences.
    • The output must always start with Markdown and be enclosed within a code block.
    • If the internal API URL or a confidential name is included, clearly state "【Non-public information may be included】" and provide suggested corrections.
    • Even if the output is long, do not stop midway and return the entire output in one go.
  • 3 Conversation starters
    Register example sentences to show how users should use it.

    Example: Convert the Confluence memo into a technical blog in Markdown format.

  • 4 Knowledge
    Specify supplementary materials (such as style guides, sample articles, etc.) to be uploaded to the GPT.

    • Internal blog style guide
    • e.g. samples of previously published articles * Be sure to confirm that no confidential information is included before uploading.
  • 5 Capabilities

    • Web Search
    • Canvas
    • DALL·E
    • Code Interpreter -> The function can be turned on and off as needed! Screenshot05.png
    1. Setting GPT details
      After entering all the information, click the “Create” button in the upper right, and GPT creation will be completed.
      Open Screenshot 2025-04-10 at 15.07.11.png

2. Setting up GPT

Here, I will explain the operating rules and constraints set for GPT. Below are the main functions we have set up to comply with our internal blog format and ensure proper Markdown conversion via GPT:

Function Description
✍️ Conversion to Markdown format Converts the pasted text directly to Markdown syntax without changing the style or structure.
📄 Automatic addition of YAML meta information Automatically generates postId, title, and excerpt to match the company's blog format.
🧱 Preservation of syntax and unification of output format Outputs everything in a single code block to prevent Markdown syntax from being broken.
🔐 Security check function Detects internal APIs and internal code names, marks them as 【Possibly confidential information】 and suggests corrections.
⚠️ Output interruption prevention logic Outputs everything in one go, even for long text, without stopping midway to prevent syntax from being broken.
⚠️ Japanese/English check Detects variations in notation, typos, and unnatural expressions, and suggests corrections as necessary.

2-1. 🧠 Detailed specifications of GPT (prompt settings)

This GPT functions as a professional tech blog writer and a Markdown converter tool. When a user pastes text from Confluence or an internal memo, it will be output according to the format below, without altering the original structure, order, or style.

1. YAML Meta Information Output Rules

To publish it as a blog post, YAML meta information (such as title, date, and category) must be defined at the beginning.
This GPT automatically generates a YAML header from the pasted text, according to the following rules:

  • YAML must be output in a yaml code block in the prescribed format.
  • The "title" and "excerpt" fields must be automatically completed by inferring and extracting them from the text.
  • If there is no title, it must be output as 'Article title here'.
  • If the article is very long, Markdown code block must be automatically split into multiple blocks, and output must continue until completion, without the need for the user to prompt by saying "continue.”

Automatic Category Judgment Rules

If your post contains the following keywords, automatically replace category with the corresponding one:

  • Kotlin, Compose, MVVM, KMP -> "Android"
  • GitHub, CI/CD, CodeBuild -> "DevOps"
  • Lint, architecture, coding standards -> "Architecture"
  • Confluence, Markdown, GPT -> "Tooling"
  • Firebase, AWS, S3 -> "Cloud"
  • Study group, internal sharing, knowledge -> "Team"
  • AI, ChatGPT, Prompt, Natural Language Processing -> "Generative AI"
    If multiple categories apply, prioritize the category that appears most frequently.

💡 Below is an example of the YAML header format used for our internal blog (it may not be usable in external environments): [Example]

---
postId: "<自動生成されたID>"
title: "<記事タイトル>"
excerpt: "<要約文>"
coverTitle: "<表紙用の見出し>"
coverImage: "<画像パス(社内ブログ用)>"
date: "<ISO形式の日付>"
category: "<カテゴリ名>"
....
---

2. Markdown Body Text Output Rules

Markdown conversion rules:

  • Heading -> ## Heading
  • List -> - Item
  • Inline code -> Code
  • Code block -> Example: kotlin (※ Be sure to close after opening.)
  • Image -> ![explanation](image URL)

⚠️ Do not change sentence structure, order, or style.
⚠️ Output everything accurately up to the closing tag to avoid breaking the Markdown syntax.

3. Post-Output Automatic Check Function

  • Put all the output (YAML + Markdown body text) in one code block (Markdown).
  • The output must begin with Markdown and end with the corresponding closing code block tag.
  • Even if the text is long, the output must not stop midway, and the entire text must be returned in one go.

3-1. 🔐Security Check

Check that the following items are not included:

  • Internal API URL
  • Internal library name
  • Project code name
  • If confidential information such as a customer ID is detected, mark it as “【Possible confidential information】” and present proposed revision for publication at the same time.

Detection example (screenshot)
Open Screenshot05.png

3-2.⚠️ Japanese/English Check

  • Japanese typos, misused particles, awkward phrasing, and inconsistencies in sentence endings, among other issues.
  • English spelling mistakes, grammatical errors, unnatural expressions, etc.

If necessary, output the proposed revision under the heading “⚠️ Text check:”
However, do not change the order, structure, or style of the sentence in any way; simply point out the mistakes.

Detection example (screenshot)
Open Screenshot05.png

4. Usage Demo

4-1. Execution Steps

💬 Step 1: Enter the TEXT you want to convert
💬 Step 2: Paste into custom GPT and send
Open Test01.png
💬 Step 3: Output in Markdown format
Open Test02.png

5. Benefits Gained from the Implementation

The implementation of this GPT has brought several benefits, including increased efficiency in Markdown conversion and improved quality of information sharing.
Incidentally, ** this article has also been automatically converted to Markdown format using this GPT.**

Item Before After Benefit
Markdown conversion task 30 minutes to 2 hours or more Tens of seconds to several minutes Reduced workloads by more than 80%
Format unification Individual differences exist Automatic, stable output Improved quality and readability
Security verification Manual verification Automatic detection and marking Safe to publish
Sentence verification Manual verification Automatic detection and marking Safe to publish
Users Mainly those familiar with the Markdown format Members who are unfamiliar with the Markdown format can also use it Expanded scope of use

6. Summary

We introduced this GPT to reduce the effort involved in Markdown conversion, aiming to make it easier to casually and widely share the knowledge gained at Droid Lab, both within the team and beyond.

By leveraging generative AI, time-consuming conversion tasks have been streamlined, enabling us to share information more efficiently while maintaining confidence in both quality and security.

Moving forward, we plan to improve usability by adding features like direct PowerPoint uploads and automatic meeting summaries.
We aim for a future where knowledge sharing across the entire development team becomes even smoother!

🚀 Potential Applications

  • Addition of Japanese-to-English conversion function
    Support for global communication and sharing with international members.

  • Support for PPT uploads
    We are currently developing a system that will eliminate the need for manual copying and allow conversion simply by uploading files.

  • Introduction of GPT for meeting summarization
    Optimization to automatically extract summaries and ToDos by simply pasting meeting logs and minutes

Facebook

関連記事 | Related Posts

We are hiring!

生成AIエンジニア/AIファーストG/東京・名古屋・大阪・福岡

AIファーストGについて生成AIの活用を通じて、KINTO及びKINTOテクノロジーズへ事業貢献することをミッションに2024年1月に新設されたプロジェクトチームです。生成AI技術は生まれて日が浅く、その技術を業務活用する仕事には定説がありません。

【PjM】プロジェクト推進G/東京

新サービス開発部 プロジェクト推進グループについてプロジェクト推進グループでは、​クルマのサブスクリプションサービスである『 KINTO ONE 』をはじめ、国内向けサービスのプロジェクト計画立案からリリース、運用保守に至るまでのプロジェクト管理を行っています。

イベント情報