{"id":18274569,"url":"https://github.com/ful1e5/theactiondev","last_synced_at":"2025-04-05T03:30:41.291Z","repository":{"id":39635963,"uuid":"293206236","full_name":"ful1e5/TheActionDev","owner":"ful1e5","description":"Write dev.to articles with GitHub Action.","archived":false,"fork":false,"pushed_at":"2023-04-22T09:36:30.000Z","size":3171,"stargazers_count":13,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-02T03:39:48.432Z","etag":null,"topics":["actionshackathon","forem","github-actions","hacktoberfest","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/marketplace/actions/theactiondev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ful1e5.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"ful1e5"}},"created_at":"2020-09-06T04:56:01.000Z","updated_at":"2024-06-21T04:19:29.426Z","dependencies_parsed_at":"2024-06-21T04:19:23.514Z","dependency_job_id":"16ca7b2f-92c4-4b28-8fdb-070e3bfff9f4","html_url":"https://github.com/ful1e5/TheActionDev","commit_stats":{"total_commits":330,"total_committers":3,"mean_commits":110.0,"dds":"0.10303030303030303","last_synced_commit":"2a5a1bea15bd0c557f2420a2d7e235629f56284f"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ful1e5%2FTheActionDev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ful1e5%2FTheActionDev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ful1e5%2FTheActionDev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ful1e5%2FTheActionDev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ful1e5","download_url":"https://codeload.github.com/ful1e5/TheActionDev/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247284911,"owners_count":20913691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actionshackathon","forem","github-actions","hacktoberfest","typescript"],"created_at":"2024-11-05T12:10:00.774Z","updated_at":"2025-04-05T03:30:39.725Z","avatar_url":"https://github.com/ful1e5.png","language":"TypeScript","readme":"# TheActionDev\n\nWrite dev.to articles with **GitHub Action**.\n\n\u003c!-- Badges --\u003e\n\n[![ci](https://github.com/ful1e5/TheActionDev/actions/workflows/ci.yml/badge.svg)](https://github.com/ful1e5/TheActionDev/actions/workflows/ci.yml)\n[![Releases](https://img.shields.io/github/v/release/ful1e5/TheActionDev)](https://github.com/ful1e5/TheActionDev/releases)\n[![Coverage](https://codecov.io/gh/ful1e5/TheActionDev/branch/main/graph/badge.svg?token=3M1OY1SMO3)](https://codecov.io/gh/ful1e5/TheActionDev)\n\nStart writing **dev.to** articles with [TheActionDev-template](https://github.com/ful1e5/TheActionDev-template)\n\n## Notice\n\n### :warning: Deprecation of v1 and v2\n\n**As of May 28, 2022, v1 and v2 has been fully sunset and no longer functions**\n\nDue to the deprecation of the underlying utility functions, the TheActionDev GitHub Action\nhas released `v3` which will use the [js-yaml] library for parsing front-matter in articles.\n\nI will be restricting any updates to the `v1` and `v2` Actions to security updates and hotfixes.\n\n#### Migration from `v1` and `v2` to `v3`\n\nThe `v3` uploader has a few breaking changes for users\n\n- Multiple tags have not been assigned as string with colon(,) or have been deprecated. Instead of use\n  [YAML Array List] to assign it.\n\n## What is TheActionDev?\n\n**TheActionDev** is Github Action that allows you to write \u0026 upsert dev.to **articles**\nwithout touching the `dev.to` UI. This action is initiated in **[ActionsHackathon]** and using **[forem API]**.\nThis action is scan your **Github Repository** based on `directory` [input](#inputs) and finds articles based\non the **[Jekyll front matter]** in `markdown` files.\n\n## Basic Usage\n\n- You'll first need to create a YAML file to describe the workflow in your project\n  (e.g. .github/workflows/TheActionDev.yml).\n- Generate dev.to `apiKey` by following\n  [Forem API Docs](https://developers.forem.com/api/#section/Authentication/api_key)\n- Add your `apiKey` to **GitHub Secret** by following\n  [GitHub Docs](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)\n\n### TheActionDev.yml\n\n```yaml\nname: TheActionDev Sync\non:\n  push:\n    branches:\n      - main # your default branch\n\njobs:\n  operations:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v2\n\n      - name: Sycing Article to dev.to\n        uses: ful1e5/TheActionDev@v3\n        with:\n          api-key: ${{ secrets.DEVTO_API_KEY }} # Store your 'api-key' in Github Secret\n          directory: ./articles # Your article directory\n          ignore: Development.md, Production.md # Markdown file you wan't to ignore. Multple files separated by ,(comma)\n```\n\n### Inputs\n\n#### `api-key`\n\ndev.to api key.\n\n#### `directory`\n\nRelative path to your articles(`*.md`) directory.\n\n#### `ignore`\n\nThe file you want to ignore by this action. This **feature** is implemented by [@actions/glob],\nSo you also provide **[glob pattern]** with it. **Following files are ignored by default :**\n\n- README.md\n- CONTRIBUTING.md\n- CODE_OF_CONDUCT.md\n- CHANGELOG.md\n- [Pull Request Templates](https://docs.github.com/en/github/building-a-strong-community/about-issue-and-pull-request-templates#pull-request-templates)\n- [Issue Templates](https://docs.github.com/en/github/building-a-strong-community/about-issue-and-pull-request-templates#issue-templates)\n\nFor example, you want ignore all articles inside `foo` sub-directory, The `ignore` input look like this:\n\n```diff\n.....\n\n - name: Sycing Article to dev.to\n   uses: ful1e5/TheActionDev@v3\n   with:\n     api-key: ${{ secrets.DEVTO_API_KEY }}\n     directory: ./articles\n-     ignore: foo/bar.md, foo/hello.md\n+     ignore: foo/**.md\n\n.....\n\n```\n\n## Writing Article with `TheActionDev`\n\n### Front Matter\n\n\u003e Original Docs at [DEV editor guide](https://dev.to/p/editor_guide)\n\nCustom variables set for each post, located between the triple-dashed lines in your editor. Here is a list of possibilities:\n\n- **title:** the title of your article\n- **published:** boolean or date that determines whether your article is published. The next case exist:\n  - Boolean is `true` the article will be `published`.\n  - Boolean is `false` the article will be `not published`.\n  - Date is in the `past` the article will be `published`.\n  - Date is in the `future` the article will be `not published`.\n- **description:** description area in Twitter cards and open graph cards\n- **tags:** max of four tags, needs to be [YAML Array List]\n- **canonical_url:** link for the canonical version of the content\n- **cover_image:** cover image for post, accepts a URL.(The best size is 1000 x 420.)\n- **series:** post series name.\n- **organization_id:** numerical identifier of the organization that this post will be publish under.\n\n#### Front Matter `default` value\n\n| tag             | value   | required |\n| :-------------- | :------ | :------- |\n| title           | `null`  | **yes**  |\n| published       | `false` | **no**   |\n| description     | `null`  | **no**   |\n| tags            | `[]`    | **no**   |\n| canonical_url   | `null`  | **no**   |\n| cover_image     | `null`  | **no**   |\n| series          | `null`  | **no**   |\n| organization_id | `null`  | **no**   |\n\n### Article Basics\n\n- Use [YAML](https://yaml.org/) to write and format article's [front-matter](#front-matter).\n- Follow [dev.to editor guide](https://dev.to/p/editor_guide) for write and format article body.\n- You can also use [Liquid tags](https://docs.dev.to/frontend/liquid-tags/) to add rich content such as Tweets,\n  YouTube videos, etc.\n\n### Examples\n\n#### Basic Article\n\n```\n---\ntitle:  TheActionDev\ndescription: Hello World\npublished: false\ntags:\n  - typescript\n  - javascript\n  - github\nseries: TheActionDev\n---\n\nFirst Post with **TheActionDev**\n\n{% github ful1e5/TheActionDev %}\n```\n\n#### Scheduled Article\n\n```\n---\ntitle:  TheActionDev\ndescription: Hello World\npublished: 2023-01-01T22:00:00+02:00\ntags:\n  - typescript\n  - javascript\n  - github\nseries: TheActionDev\n---\n\nSecond Post with **TheActionDev**\n\n{% github ful1e5/TheActionDev %}\n```\n\n## Development\n\nCheck [docs/DEVELOPMENT.md](./docs/DEVELOPMENT.md)\n\n## Branding\n\n- Assets: [Figma](https://www.figma.com/file/mO5kSS79lY0NIMMzAJDBJZ/TheActionDev?node-id=0%3A1)\n- Font: [JoyStick](www.pixelsagas.com/?download=joystick)\n\n## Inspiration\n\n- [DEV Docs](https://docs.dev.to/)\n- [vscode-devto](https://github.com/Sneezry/vscode-devto) extension for `vscode`\n- [typescript-action](https://github.com/actions/typescript-action)\n\n## Contributing\n\nCheck [CONTRIBUTING.md](CONTRIBUTING.md), any suggestions for features and contributions to the continuing code\nmasterelopment can be made via the issue tracker or code contributions via a `Fork` \u0026 `Pull requests`.\n\n\u003c!-- Links  --\u003e\n\n[forem api]: https://developers.forem.com/api/\n[theactiondev-template]: https://github.com/ful1e5/TheActionDev-template/generate\n[actionshackathon]: https://dev.to/devteam/announcing-the-github-actions-hackathon-on-dev-3ljn\n[js-yaml]: https://www.npmjs.com/package/js-yaml\n[@actions/glob]: https://github.com/actions/toolkit/tree/master/packages/glob\n[glob pattern]: https://github.com/actions/toolkit/tree/master/packages/glob#patterns\n[yaml array list]: https://www.w3schools.io/file/yaml-arrays/\n[jekyll front matter]: https://jekyllrb.com/docs/front-matter/\n","funding_links":["https://github.com/sponsors/ful1e5"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fful1e5%2Ftheactiondev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fful1e5%2Ftheactiondev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fful1e5%2Ftheactiondev/lists"}