---
# System prepended metadata

title: GPTs 簡易串接 dev.to

---

# GPTs 簡易串接 Dev.to 

## Dev.to API 文件
https://developers.forem.com/api/v1#tag/articles/operation/getArticles


## Action 定義的 API 規格
```
{
  "openapi": "3.0.0",
  "info": {
    "title": "DevTo 文章 API",
    "description": "從 Dev.to 獲取具有特定標籤的文章，並排除特定標籤。",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://dev.to/api",
      "description": "開發社區 API 服務器"
    }
  ],
  "paths": {
    "/articles": {
      "get": {
        "operationId": "getArticles",
        "summary": "從 Dev.to 獲取文章",
        "description": "檢索文章，'tag' 始終為 'angular'，而 'tags' 默認包含 'angular'，並依要求增加其他選項，如 tags:'option, option2, option3'，同時需排除 'angularjs' 標籤，如：tags_exclude:'angularjs'，或是排除有 'AngularJs' 相關，per_page 最多 35 筆，若要求 '熱門文章' 時，top 設為 365，state 需設定為 rising，代表觀看數上升，且，若是要求'最新文章'時，top 設為 30，state 需設定為 fresh，代表近期的新發佈。",
        "parameters": [
          {
            "name": "tag",
            "in": "query",
            "description": "每個請求的固定標籤。",
            "required": true,
            "schema": {
              "type": "string",
              "default": "angular",
              "example": "angular"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "過濾文章的標籤，始終包含 'angular'，可選擇性包含 'signals'。",
            "required": true,
            "schema": {
              "type": "string",
              "default": "angular",
              "example": "angular,signals"
            }
          },
          {
            "name": "tags_exclude",
            "in": "query",
            "description": "排除的標籤。",
            "required": true,
            "schema": {
              "type": "string",
              "default": "angularjs",
              "example": "angularjs"
            }
          },
          {
            "name": "top",
            "in": "query",
            "description": "幾天前的文章。",
            "required": true,
            "schema": {
              "type": "integer",
              "default": 180,
              "example": 180
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "description": "每頁返回的文章數量。",
            "required": true,
            "schema": {
              "type": "integer",
              "default": 50,
              "example": 50
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "文章的狀態，像是 rising 或是 fresh",
            "required": true,
            "schema": {
              "type": "string",
              "default": "rising",
              "example": "rising"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "文章的 JSON 數組",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Article"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Article": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      }
    }
  }
}
```
## 提問範本

```
需要 Angular {{內容}} 的 {{ 文章類型 || 最新文章, 熱門文章 || S}} 
1. 至少提供{{幾筆|| 35, 30, 25, 20, 15, 10 ||r||35}}篇
2. 按照文章日期排序，新到舊
3. 顯示 日期、標題、網址，其他不用提供，且列出全部{{幾筆|| 35, 30, 25, 20, 15, 10 ||r||35}}篇 
```

[ChatGPT提問助手 - Chrome 應用商店連結](https://chrome.google.com/webstore/detail/chatgpt-%E6%8F%90%E5%95%8F%E5%8A%A9%E6%89%8B/biohjdkjclhempinkjfnjenpldjnkcfn?hl=zh-TW)

## 串接過程

### 定義一份 API 文件

基本上可以把 API 打的方式丟給 **[ActionsGPT](https://chat.openai.com/g/g-TYEliDU6A-actionsgpt)**，它就會直接幫你產出一份了，另外若是本來就有 API 文件(如：Swagger)，就直接給它就好。

### 告訴 GPTs 如何使用 API

基本上最重要的就是這段，就是告訴 GPTs 要如何根據下達的指令，去打不同的參數。


```
"description": "檢索文章，'tag' 始終為 'angular'，而 'tags' 默認包含 'angular'，並依要求增加其他選項，如 tags:'option, option2, option3'，同時需排除 'angularjs' 標籤，如：tags_exclude:'angularjs'，或是排除有 'AngularJs' 相關，per_page 最多 35 筆，若要求 '熱門文章' 時，top 設為 365，state 需設定為 rising，代表觀看數上升，且，若是要求'最新文章'時，top 設為 30，state 需設定為 fresh，代表近期的新發佈。",
```

#### 需求說明

* 希望**排除 AngularJs 文章**。
* 如果是**最新文章**，希望是 **30 天內**，而且是**近期發佈**的文章。
* 如果是**熱門文章**，希望是 **1 年內**，而且是**熱門度高**的文章。

#### 嘗試過程

要讓 GPTs 打參數還滿簡單的，但是困難的是如果有情境的話，類似 **最新文章** vs **熱門文章**，但一開始不太想定義情境，希望能自己去猜，不過失敗率還是滿高的，而且又容易試到 **GPT4 使用次數爆掉**，後來想想就直接指定情境就好，畢竟如果是我寫程式，也會希望情境的規格能清楚，而不是叫我通靈。

#### 建議

- 明確示範傳遞參數，如：tags:'option, option2, option3'。
- 若情境夠明確，就直接定義使用情境。
- 珍惜 GPT4 使用次數，不要期望 GPTs 很會通靈。

### 示範影片
[GPTs 簡易串接 Dev.to ](https://youtu.be/KcmrL-4Uixo)
