> For the complete documentation index, see [llms.txt](https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/docs/sources/source-compliance-devto.md).

# Source Compliance: Dev.to

> Implementation-time review completed 2026-06-18. Trend Finder has a direct source adapter for current public Dev.to article metadata from reviewed AI tags. The adapter is metadata-only, read-only, and does not collect user profile fields or article bodies.

***

## Source Overview

| Field             | Value                                                      |
| ----------------- | ---------------------------------------------------------- |
| Source ID         | `devto-ai-articles`                                        |
| Source Name       | Dev.to AI articles                                         |
| API Base URL      | `https://dev.to/api/articles`                              |
| API Documentation | <https://developers.forem.com/api/v0>                      |
| Authentication    | None for published article listing endpoint                |
| Data Format       | JSON                                                       |
| Adapter Status    | Direct public API adapter, reviewed metadata-only boundary |

The reviewed endpoint is the public published-articles listing. The Forem docs state that unauthenticated endpoints are CORS-enabled, all requests must send a User-Agent header, and the published articles endpoint supports `tag`, `per_page`, `state`, and `top` query parameters.

## Reviewed Direct Adapter Declaration

| Field           | Value                                                      |
| --------------- | ---------------------------------------------------------- |
| Direct path     | `https://dev.to/api/articles?tag={tag}&per_page={n}`       |
| Reviewed tags   | `ai`, `machinelearning`, `llm`                             |
| Source role     | `developer`                                                |
| Quality tier    | `secondary`                                                |
| Item cap        | 35                                                         |
| Keyword/tag cap | 3                                                          |
| Timeout/retries | 10 seconds, 1 retry                                        |
| Fallback policy | None; this is direct-only until an Apify fallback is added |
| Env flag        | `FINDTREND_DIRECT_DEVTO_ENABLED`                           |

## Terms And Use Boundary

The adapter uses the published article listing only. It sends a descriptive User-Agent, keeps requests low volume, and collects only fields that are needed for trend evidence.

Approved browser-safe evidence:

* Article title.
* Public Dev.to article URL.
* Short article description from the listing row.
* Published timestamp.
* Public tag list, capped and used as topic context.
* Public positive/public reaction counts mapped to `points`.
* Public comment count mapped to `comments`.

Excluded fields:

* `body_markdown`, full article bodies, and comments.
* `user`, usernames, profile images, social handles, website URLs, and user IDs.
* Organization profile fields.
* Cover/social images and media URLs.
* API keys, private account endpoints, drafts, unpublished articles, or write endpoints.

## Retention And Attribution

| Policy               | Value                                                                                         |
| -------------------- | --------------------------------------------------------------------------------------------- |
| Storage location     | `src/data/live-data.json` and private Trend Finder snapshots                                  |
| Retention period     | `live-data.json` overwritten on each collection run; snapshots retained locally until deleted |
| Historical retention | Local snapshots only; no reviewed Dev.to historical source window                             |
| Deletion path        | Delete generated Trend Finder data and snapshots                                              |
| Attribution          | Show source ID `devto-ai-articles` and link to the public Dev.to article                      |

## Historical Window Stance

| Field                  | Value                                                                      |
| ---------------------- | -------------------------------------------------------------------------- |
| Historical support     | Current-only                                                               |
| Source ID              | `devto-ai-articles`                                                        |
| Safe override fields   | None                                                                       |
| Unsupported reason     | Published article listing is a current ranked view, not a bounded archive. |
| Compliance declaration | `historicalWindowSupport.supported = false`                                |

Do not translate requested historical windows into `top` or `state` values. Those parameters are relative ranked views and are not reviewed bounded start and end dates.

## Privacy and GDPR Assessment

| Criterion                 | Status               | Notes                                            |
| ------------------------- | -------------------- | ------------------------------------------------ |
| PII collected             | Planned no           | User/profile fields are excluded from evidence   |
| User consent needed       | No app users         | Public source collection only                    |
| Data subject rights       | Deletion path exists | Delete generated Trend Finder data and snapshots |
| Cross-border transfer     | N/A                  | Data remains local                               |
| Data processor agreements | N/A                  | No third-party processing by Trend Finder        |

## Implementation Notes

* `scripts/extensions/trend-finder/sources/devto-adapter.ts` fetches only the reviewed public tags and dedupes repeated articles across tag responses.
* `scripts/extensions/trend-finder/normalize.ts` maps reactions and comments to public metrics, uses tags for topic context, and groups source-local baselines by reviewed tag instead of author identity.
* Tests verify URL construction, parser filtering, zero-cost public API spend, and exclusion of body/profile fields from emitted evidence.

## Compliance Checklist

* [x] API docs reviewed
* [x] Metadata-only field boundary drafted
* [x] User-Agent requirement documented
* [x] Rate/volume boundary documented through caps and retries
* [x] Data retention policy drafted
* [x] PII minimization boundary drafted
* [x] Attribution requirements documented
* [x] Direct adapter tests prove body/profile exclusions
* [x] Historical-window stance recorded as current-only


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/docs/sources/source-compliance-devto.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
