{"id":13777390,"url":"https://github.com/hilmanski/contentswift","last_synced_at":"2025-04-14T23:44:05.808Z","repository":{"id":197725839,"uuid":"699201363","full_name":"hilmanski/contentswift","owner":"hilmanski","description":"ContentSwift - Free content research / optimization tool for SEO. As an alternative for Surfer, Neuronwriter, Frase, etc..","archived":false,"fork":false,"pushed_at":"2023-10-31T01:09:53.000Z","size":248,"stargazers_count":130,"open_issues_count":14,"forks_count":24,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-14T23:43:59.218Z","etag":null,"topics":["keyword","seo","seo-tools","seooptimization","seotools"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hilmanski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-02T06:36:07.000Z","updated_at":"2025-03-25T13:27:13.000Z","dependencies_parsed_at":"2023-10-03T08:09:58.044Z","dependency_job_id":"1c8403ce-edec-47ef-9748-f4f988274c3f","html_url":"https://github.com/hilmanski/contentswift","commit_stats":null,"previous_names":["hilmanski/content-research-tool","hilmanski/contentswift"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilmanski%2Fcontentswift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilmanski%2Fcontentswift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilmanski%2Fcontentswift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hilmanski%2Fcontentswift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hilmanski","download_url":"https://codeload.github.com/hilmanski/contentswift/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248981259,"owners_count":21193143,"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":["keyword","seo","seo-tools","seooptimization","seotools"],"created_at":"2024-08-03T18:00:42.590Z","updated_at":"2025-04-14T23:44:05.783Z","avatar_url":"https://github.com/hilmanski.png","language":"TypeScript","funding_links":[],"categories":["Content Optimization",":hammer_and_wrench: Standalone Open Source SEO Tools"],"sub_categories":[":gear: OpenClaw SEO Skills"],"readme":"![content swift logo](/assets/contentswift-logo.webp)\n\n# About\nContentSwift - Content research/optimization tool for SEO.\n\nWatch [Demo Video at Youtube](https://www.youtube.com/watch?v=HL9sPYXd1Ws\u0026t=115s)\n\nUsing this tool, you'll get relevant information regarding specific keyword searches and hints on what other top-ranking results did with their article/page.\n\n![sample content optimization tool - ContentSwift](/assets/sample-content-optimization-tool.webp)\n\n\u003e Right now we're focusing on Google SERP only\n\nThe commercial version for this open-source tool would be something like Surfer SEO, Frase io, NeuronWriter, etc.. (of course, they offer more features than this).\n\n- This is for personaluse. No authentication setup is needed in the app itself.\n- Sign up to [SerpApi](https://serpapi.com?ref=contentswift) to get FREE Serp search results credit.\n\n\n![sample free content optimization tool](https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExanI5bm5yYzg1ZGg0OWhzMzcycnltZ2EzYzdkeGRmanZpOWZ2MXZnayZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/nenLVfRi9euvXekbQC/giphy.gif)\n\n\u003c!-- ![sample free content optimization tool](/assets/content-editor-sample.webp) --\u003e\n\n## Status\nUnder heavy development. Not for production.\n\n## Tech\n\n### Backend \n`backend-crt` is a docker setup for:\n- `fastApi` at `src` for main logic\n- `Golang` at `go-app dir` for scraping helper // current free alt to prevent getting blocked\n- `Postgre` as database\n\n### Frontend\n`frontend-crt` is manual `nextjs` installation\n\n### Scrape API (SerpAPI)\nScraping Google search result on our own will require a lot of time to prevent us from getting blocked and getting the proper structure. That's why we're using simple solution from SerpApi.\n\n### library used\nThere are many libraries used in this project, which is not possible to mention one by one.\n\n- [NLTK](https://www.nltk.org/)\n- [Newspaper](https://newspaper.readthedocs.io/en/latest/)\n- [Beautifulsoup](https://pypi.org/project/beautifulsoup4/)\n- [GoColly](https://github.com/gocolly/colly)\n\n## Setup env file\n\n- Create new empty `.env` file at `/backend-crt/src` folder\n- Get your `API_KEY` from serpapi.com\n- Paste your Serp api key in `.env` file at `backend-crt`\n```\nSERPAPI_KEY=$here_is_your_api_key\n```\n\n## Run the project\n\nMake sure docker app is open\n\n1. run backend (API)\n```\ncd backend-crt \u0026\u0026 docker-compose up -d --build\n```\n\n2. Setup Database (1 time only)\n\nCd into src\n```\ncd backend-crt/src\n```\n\nActivating a virtual env (setup if not yet)\n```\nsource env/bin/activate\n```\n\nRun migration\n```\npython db/models.py\n```\n\n3. Run Frontend (API)\n- Not inside python virtual env\n- Now from root folder (another terminal or just go back). \n\n\n```\ncd frontend-crt \u0026\u0026 yarn dev\n```\n\nProject is available at http://localhost:3000\n\n\n## TODO\n- Add visual screenshot\n- Add sample compare to other research tool\n- add proper doc/landing page\n- Add short video\n\n## Potential Issue / improvement\n- Remove code as part of word frequency: Ignore content between triple backtick\n- User rotating-proxy to bypass individual web scraping (Find free proxy as a start)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhilmanski%2Fcontentswift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhilmanski%2Fcontentswift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhilmanski%2Fcontentswift/lists"}